How well do you think the course conveyed those takeaways?
I think the course did a great job of preparing me for the real-world code I will write particularly for my internship, but even onwards for my full-time job. In addition, the ideas of always testing my code and allowing only certain levels of permissions will always stick with me now.
Were there any other particular takeaways for you?
Another takeaway that I had was that design is of the utmost importance when building a codebase. Setting out ample time in the beginning before you begin coding and flushing out a design is not only recommended but necessary.
How did you feel about cold calling?
Honestly, I thought the cold calling kept me focused in the class. In my other classes, it was incredibly easy to get sidetracked but the constant pressure of being called was a positive driving force for my attention.
How did you feel about office hours?
I felt like they were a pretty nice space to ask questions and be vulnerable. The TA’s and Professor Downing are more than willing to help with the projects and general C++ questions.
How did you feel about lab sessions?
I personally went to office hours more often, but I thought they were usually the same as office hours. I was comfortable in both to ask any questions.
What required tool did you not know and now find very useful?
I would definitely say GitLab’s CI/CD pipeline because it made it so simple to see if you were passing all personal unit tests and acceptance tests. This is something I will definitely implement in my future projects.
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?
These five papers describing SOLID design have given me a much better outlook on object-oriented design. I have passed by questions during interviews on OOD and I think these ideas will definitely help me in that realm. In addition, it has also given me the insight of thinking about scalability when building a class or function.
You should have read two papers that advised minimizing getters and setters. What insights have they given you?
Getters and setters reek of bad design because your implementation should embed those getters and setters in the code. This means that the class and the class itself should only have access to its variables. It is much safer and cleaner this way.
Give me your suggestions for improving the course.
I would say to give more time on exercises because I did have some difficulty for the middle exercises finishing on time. Other than this, I thoroughly enjoyed the class and learned a ton!