- 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?
After taking CS371p, I’ve gained a deeper knowledge of the C++ language and have developed better habits for the software development process. The course did a great job conveying the takeaways above with thorough in-class examples, Hackerrank exercises, as well as the coding projects.
Were there any other particular takeaways for you?
One major takeaway I got from the coding projects was the importance of a GitLab pipeline for continuous integration and making sure that the pipeline is fixed as soon as possible. This is important so that new features are not further complicating previous errors. Frequent commits to the pipeline is a good practice to make sure errors are caught quickly and you won’t have to search through a ton of new code.
How did you feel about two-stage quizzes and tests?
I have not taken a class with tests given first individually followed by collaboratively, but I enjoyed this setup and it really highlighted the benefits of pair-programming with other students. I found that almost always we were able to get everything correct and passing during the collaborative stage.
How did you feel about office hours?
Office hours are good to attend if you’re hitting a wall on one of the projects or if you want some guidance on what to focus on before a test.
How did you feel about lab sessions?
Lab sessions are also a good place to go to for some further details on the class content.
Give me your suggestions for improving the course.
I found the course to be well organized and applicable to a software development career. I would suggest maybe providing some more Hackerranks to practice the in-class content, but overall I found the course to be very well taught and structured.