How well do you think the course conveyed these takeaways?
- test first, test during, test after; test, test, test
- when designing algorithms, demand the weakest capabilities (e.g. iterable vs. indexable)
- when designing containers, provide the strongest capabilites (e.g. indexable vs iterable)
- build decorators on top of containers, iterators, and functions
- utilize the benefits of being lazy (i.e. yield)
- always look for reuse and symmetry in your code
- collaboration is essential to the quality of your code and to your well-being in producing it
- refactor, refactor, refactor
- make your code beautiful
These concepts were conveyed in the course in different ways, including lectures, papers, exercises, and the projects. I gained a greater understanding of the concepts that were introduced in lecture and then used in the projects. However, because there is an intentional disconnect between the lectures and the projects, there weren’t many opportunities to practice some of these concepts.
Were there any other particular takeaways for you?
This was already kind of mentioned above, but learning how to work with other people is very important for your success and well-being in any project or job you are working on. Communication and flexibility are key to working well with your teammates.
How did you feel about cold calling?
The cold calling helped me to pay attention during class and it didn’t feel as intimidating as I feared because Professor Downing did not expect you to have all of the answers to his questions.
How did you feel about office hours?
I thought office hours were very helpful. They could get very busy right before a project was due, but I was always able to get my questions answered by the TA.
How did you feel about lab sessions?
I didn’t really go to lab sessions, but I think they were pretty similar to office hours.
What required tool did you not know and now find very helpful?
I came in with almost no knowledge of software engineering tools, so I learned about a lot of very helpful tools. I particularly found Bootstrap to be very helpful because it made it very easy to design our frontend.
What’s the most useful web dev tool that your group used that was not required?
npm has a lot of great packages that we used in our frontend. Also, Algolia was very helpful when we were setting up searching on our website during phase 3.
How did you feel about your group having to self-teach many, many technologies?
Honestly, I found this super intimidating since I came into this class with almost no experience with software engineering. It was difficult and confusing to learn how to use the new technologies, but my group was able to teach each other some technologies and learn how to use new technologies together, and the TAs were very helpful at explaining how to use them when we were confused. I did learn a lot from this class, but I do wish we had learned a little bit more about how to use these technologies in class.
Suggestions for improving the course
I think it would be helpful to introduce some of the frontend technologies like React during class because it is a big part of the IDB project but groups had to mostly teach themselves how to use it. Also, some of the project requirements were a little unclear so it would be helpful to add more detail about what is expected.
Overall this was a great class and I would highly recommend it to anyone who wants to get experience with software engineering concepts!