CS371p Fall 2021: Mei Lin : Final Entry
How well do you think the course conveyed those takeaways?
This class put a heavy emphasis on testing code, using adapters, using allocators instead of new/delete, and when to use weak/strong iterators. Every lecture, we would go over chunks of code that implemented these principles, and occasionally we would have Hackerrank exercises that tested our understanding of these concepts. I think this class helped me grasp these concepts, as well as develop my skills in C++.
Were there any other particular takeaways for you?
For me, I learned throughout the semester to stay on top of things. Every lecture builds on top of the last, and the concepts get more challenging every week. I quickly learned that I needed to review the lecture material outside of class in order to understand it fully, which helped me stay on track with the lectures.
How did you feel about cold calling?
I took SWE last semester, so cold calling wasn’t a new concept to me. Although it is nerve racking answering questions in front of the entire class, it helped me pay better attention in class and understand the material better.
How did you feel about specifications grading?
This grading system took me a while to understand and get used to, but I don’t have much to say about it now. It seems fair, and the virtual tokens were nice to have and use throughout the semester.
How did you feel about help sessions and office hours?
The TAs were very helpful this semester, and I would recommend attending help sessions and office hours to anyone taking the course in the future.
How did you feel about the support from the TAs?
The TAs were very good about helping us during Hackerrank exercises and help sessions. They knew the material well and helped me better understand concepts from the course.
What required tool did you not know and now find very useful?
I liked how easy it was to run astyle on our files before we submitted our projects. I’ve never used astyle before, but found that it was a nice tool for styling code effortlessly.
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?
The biggest thing I learned from these papers is to design your programs so that a change to one part of the program does not result in a cascade of changes to the entire program. This includes separating responsibilities, avoiding getters/setters, and extending from classes with caution.
You should have read two papers that advised minimizing getters and setters. What insights have they given you?
I had never thought that using getters and setters could be considered bad design, but after reading those two papers, it makes sense why they could harm your program. Putting getters and setters in your code basically makes those private instance variables public and gives other classes too much information. I learned that you can avoid using getters/setters by implementing methods in those classes that perform the action you would have done having been given access to those private instance variables.
Give me your suggestions for improving the course, but apologies in advance; specifications grading will remain.
My only suggestion would be to ease up on the numbers required for an A in the EMRN grading system. Having more dropped papers and blogs would be nice, as well as quizzes, since some quizzes can be quite challenging.