SUN, 8 MAY
CS371p Spring 2022: Gautham Raju: Final Entry
* 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 and iterators
* do not use new and delete; use allocators instead
* 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 thought that the perusal articles aptly conveyed the takeaways listed above and parts of the assignments reinforce those concepts as well. However, I thought that these concepts were forced into the assignment at times. For example, there were times that we were forced to use hacky solutions to get around using getter and setter methods. Although the reasoning for not using accessor methods makes sense, I felt that not using them was more forced by project requirements than out of an understanding of the conventions.
Were there any other particular takeaways for you?
I thought I got a very solid understanding of c++ fundamentals, especially on concepts such as vectors, constructors, and mutators.
How did you feel about cold calling?
I thought the cold calling was appropriate in fostering class participation and professor Downing was very considerate to students who were unable to talk at times.
How did you feel about specifications grading?
I wasn't a huge fan of specifications grading as I felt that it fostered mediocre work. In my opinion, the motivation to get a 3 on most assignments was not worth the effort, especially since getting a 2 out of 3 had almost no repercussions. Additionally, once a student falls below the requirements for a grade in a certain category, there is no motivation for the student to try on assignments in other categories until they fall below that same grade cutoff.
How did you feel about help sessions and office hours?
I thought that the help sessions and office hours were appropriately spaced and I always felt like I could get help when I needed it.
How did you feel about the support from the TAs?
The TAs were very helpful and I got all the support that I needed.
You should have read five papers that describe SOLID design: Single Responsibility, Open-Closed Principle, Liskov Substitution, Interface Segregation, and Dependency Inversion. What insights have they given you?
I learned a lot about good cs principles but I feel like I didn’t get a chance to implement them. However, I did think that the perusal assignments gave a solid overview of good oop principles to follow.
You should have read two papers that advised minimizing getters and setters. What insights have they given you?
In contrast to the SOLID design papers, I thought there was a bigger push to minimize getters and setters in our assignments. I also think I overused those methods before this course and the papers taught me why they could be a bad idea.
What required tool did you not know and now find very useful?
I thought that Valgrind was a useful tool as there were multiple times when there were memory leakages and allocated blocks not being freed that I wouldn’t have known about if it wasn’t for that.
In the end, how much did you learn relative to other UT CS classes?
I think this class taught me more than the average UT CS class and I would recommend it as a primary class for any student that wants to learn more about programming in C++ with good OOP principles.
Give me your suggestions for improving the course, but apologies in advance; specifications grading will remain.
My biggest complaint apart from the specifications grading was the time limit on in-class exercises. I thought that at times there wasn't enough time to get through all the test cases and work through the solution while at other times, our work was incredibly fast. I think that harder exercises should be allotted 30 minutes instead of the customary 20 minutes. Perhaps having attendance quizzes on those days would help with the time management of implementing longer exercises.