I hope that the following are long-term takeaways from this class:
- 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 capabilities (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
How well do you think the course conveyed those takeaways?
I think these takeaways were conveyed pretty well. The class lectures and the Hackerrank exercises all emphasized these takeaways. A lot of these takeaways were also put into practice during the IDB project. For example, testing was not only a requirement but very useful for diagnosing problems.
Were there any other particular takeaways for you?
The course really made you learn about each part of the stack during our project, from React to relational databases. The project also showed the importance of teamwork and learning how best to work in a group. The course introduced a lot of tools that were beneficial to our group’s workflow, like Gitlab CI and Gitlab issue tracking.
How did you feel about two-stage quizzes and tests?
I thought that the two-stage quizzes and tests were really useful. It was nice that there was some leeway in grading for the quizzes, so it never felt too stressful taking them. The two-stage tests helped to solidify the topics tested, since you could see how others arrived at the solution in the group second-stage.
How did you feel about cold calling?
I thought cold calling was definitely useful in keeping everyone focused and attentive during the lectures, but I did find myself not paying as much attention after I had been called and I was unavailable to be cold called until the next cycle. Overall it was definitely beneficial though.
How did you feel about office hours and lab sessions?
I didn’t go to very many, but they were useful for answering questions. There were plenty of them, and Piazza was always active as well!
Give me your suggestions for improving the course.
The way that the exams were set up in Hackerrank made it a pain sometimes to debug and some of the instructions were not the most clear. It would also be nice to have some sort of instruction on the project. I know the intention is to make students figure it out themselves (“like in the real world”), but a lot of the common frustrations and hang-ups could have been solved by a few introductory lectures.