- 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
- 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?
I think that the course conveyed those takeaways very strongly. I know that these takeaways were stressed a lot, for example, every lecture feature a plethora of tests, and the projects required many tests.
- Were there any other particular takaways for you?
For me, another takeaway is the usage of version control. I never really stressed about it too much for school projects, but this class has helped me get used to using it, and it will be very useful to me in the future.
- How did you feel about cold calling?
I wasn’t used to it at first, it stressed me out to speak in front of others. However, I did get used to it, and personally I wasn’t stressed to get cold called.
- How did you feel about office hours?
Office hours were insanely helpful to me, I got stuck a lot on the project.
- How did you feel about lab sessions?
If the help sessions were the lab sessions, those were also insanely helpful to me as well, especially since there were more TAs.
- What required tool did you not know and now find very useful?
Before this class, I only used gitlab maybe once, and I never realized until this class how useful it is in version control.
- You should have read five papers that describe SOLID design : Single responsibility, Open-closed principle, Liskov substitution, Interface segregation, Dependency inversion. What insights have they given you?
They changed the way how I see coding now. It made me realize that there’s a lot for me to improve on my coding, but it will take some practice to master them.
- You should have read two papers that advised minimizing getters and setters. What insights have they given you?
I now try to avoid getters and setters, and instead opt for better design. They are a quick and dirty way of getting things done, but shouldn’t be relied upon.
- Give me your suggestions for improving the course.
Give partial credit for the multiple answer problems on quizzes.