Long-term takeaways from this class:
- test first, test during, test after, test, test, test
- when designing algorithms, demand the weakest iterators (e.g. bidirectional vs. random access)
- when designing containers, provide the strongest iterators (e.g. random access vs bidirectional)
- build adapters on top of containers, iterators, and functions
- 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
How well do you think the course conveyed those takeaways?
These are good general practices in programming — some I already do and some that I see are really useful, solutions I didn’t even know I needed. Some of the ideas I learned somewhat before like from Mike or other CS classes, and some from especially this class I’ve found very useful.
Were there any other particular takeaways for you?
I think the most useful was extensive testing because before, with long-term projects, I had to deal with bugs surfacing only after several features were added.
How did you feel about two-stage quizzes and tests?
I think it was pretty fair and effective. I wasn’t always able to keep up with lectures and being able to understand what I got wrong from friends and also explain it to them made it really easy to cover whatever I missed.
How did you feel about cold calling?
For me it was fine. Sometimes I was a bit nervous as I wasn’t keeping up with the content and needed some more time, but even in that case I was able to ask questions or simply let Professor Downing gently walk me through it.
How did you feel about office hours?
I think they were probably useful for those that went. I didn’t go to many, but I would assume they provided useful direct help.
Give me your suggestions for improving the course.
Some of the quizzes took a bit of time even if I knew the answers to walk through the questions, but that wasn’t really a problem either since a good amount of them are dropped.
To future students:
Get ready for Mike Scott Part 3: C++ edition. The pace is pretty much the same except there are a lot of additional peripherals that will help you understand a better, more clean way of testing and upkeeping code.