CS 371p Spring 2021 – Final Entry: Brinda Prasad

Brinda Prasad
CS371p Spring 2021: Brinda Prasad
4 min readMay 10, 2021

Long-term takeaways from OOP:

  • 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?

The course and Professor Downing conveyed the above takeaways effectively through the lectures, projects, and in-class exercises. I also found that the Perusall papers helped reinforce my understanding of what OOP principles we were following and why it was important to do so.

Were there any other particular takeaways for you?

Another huge takeaway for me was the importance of testing as you go. I didn’t have a practice of testing code prior to this class, but our projects helped me realize just how effective using unit and acceptance tests can be to make sure each part of the program is working as intended.

How did you feel about cold calling?

I ended up really appreciating the cold calling during lectures! I was really nervous about it going into the semester, especially because I feel like it takes me a bit longer to grasp certain concepts, but the informal, conversational format of Professor Downing’s lectures made cold calling function as more of a learning moment rather than a test of our knowledge.

I also felt that the frequency each person got called on in class was just right. It was a great way of motivating people to pay attention to the content without feeling overwhelmed by the possibility of being cold-called.

How did you feel about office hours?

Office hours were a great resource! Most of the times happened to be during my other classes, so I went to more lab sessions for help than office hours. However, the TAs and Professor Downing have been extremely helpful when I have attended office hours.

How did you feel about lab sessions?

The way lab sessions were structured within the week was really convenient for me personally. I preferred lab sessions over office hours because of the timing, but I also found that it was helpful to have two hours blocked off where we could go and ask questions. It was particularly nice for certain bugs to be able to ask questions, try a few changes, and come back to follow up with a TA.

What required tool did you not know and now find very useful?

I hadn’t worked with Google’s C++ testing framework before taking this class. I’ve definitely developed an appreciation for how easy it makes it to write unit tests that thoroughly check every part of our code. I didn’t have a good foundation for testing code before this class, but I’m glad we wrote unit tests to check each method and edge cases because it helped me practice more effective coding practices.

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?

All of these papers conveyed methods of writing good object-oriented code and why it’s important to do so. The biggest insight I got from the papers was actually to spend time designing the system before even writing any code.

You should have read two papers that advised minimizing getters and setters. What insights have they given you?

Avoiding writing getters and setters was one of the toughest things for me to wrap my head around. The lectures and projects did a great job of conveying and putting into practice the concept of minimizing getters and setters, but I didn’t really understand the importance of doing that until I read those two papers. The papers did a wonderful job of reinforcing why minimizing getters and setters is key to writing good object-oriented code by providing examples and exploring the ups and downs of different pieces of code.

Give me your suggestions for improving the course.

It was a wonderful course and I really enjoyed Professor Downing’s lectures! A minor suggestion would be to increase the time limit on quizzes, especially in a virtual format, to accommodate for different internet, device, or other factors that might make it hard to join the Zoom call, open up the Canvas quiz, and enter the code before using the rest of the four minutes to answer the quiz questions.

--

--