CS371P Spring 2021: Uma Sethuraman — Final Entry

Uma Sethuraman
3 min readMay 9, 2021

Blog Post 15 — CS371P: Object-Oriented Programming

Hello! Welcome to my final blog entry for CS371P: Object-Oriented Programming.

Key takeaways from this class:

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

Professor Downing did a great job of conveying those takeaways during the lectures. After learning about new concepts during the lectures, the quizzes and exercises helped me to solidify my understanding of those concepts. Many of the above takeaways were reinforced in the projects as well.

Were there any other particular takeaways for you?

I have a much better understanding of C++ after taking this class, and I gained many technical skills that will be useful as a software developer. This class also emphasized the importance of designing and planning out your code first instead of immediately jumping into programming. Professor Downing had us work with different people on each project. I thought this was very helpful because I was able to work with various students and get to know the different work styles of many developers.

How did you feel about cold calling?

Although cold calling is a bit intimidating at first, I’ve realized that it’s a very useful technique. Cold calling helped to keep me alert at all times during the class and helped me to avoid distractions. Professor Downing makes cold calling feel like a normal conversation, so there’s nothing to worry about if you don’t get the answer correct!

How did you feel about office hours?

I went to some TA office hours to ask questions about the projects, and the TAs were always helpful and open to answering any questions.

How did you feel about lab sessions?

I went to some TA lab sessions to ask questions about the projects. The TAs were always willing to help out and answer any questions I had.

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

Some new tools that I learned about this semester were the Google Test framework, gcov, astyle, and checktestdata. I became more familiar with these after using them in all of the projects, and they helped me to write cleaner code and better tests.

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 papers talked about many important design patterns that are useful in software development. These papers emphasized the importance of designing your code thoroughly before writing the code. In general, these papers gave me a better understanding of how to design a good object-oriented solution to a problem.

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

I thought these two papers were very helpful. Many of my past CS classes have been okay with getters and setters, so this is the first class where I learned about the downsides of getters and setters. From now on, I will actively try to minimize my use of getters and setters.

Give me your suggestions for improving the course.

I really enjoyed this class! Though the class was virtual this semester, Professor Downing did a great job of making the class feel interactive. One suggestion I have is to give students more time for the in-class exercises since sometimes it took longer to plan the code and then write it. I also liked that we had to have different partners for each project because that allowed me to meet and work with new people.

Unlisted

--

--