CS371p Blog: Final Entry — Roman Kuhn

Roman Kuhn
3 min readDec 6, 2020


Takeaways from CS371p:

  • 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, iterators, and functions
  • 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 feel the course conveyed these takeaways really well, with about half of the above takeaways being drilled in with lecture and half of it being taught with project based learning.

  • Were there any other particular takeaways for you?

While the takeaways above are surely long term takeaways, I would really say that the biggest takeaway from this course is how to code in C++. I feel like some people have learned C++ on their own time or used in for their job but I had never done such a thing and I was always mystified by it. Python is a language you can easily learn on your own because it just looks like pseudocode. C++ on the other hand always struck me as incredibly difficult to learn and only after this class do I feel like I have a good grasp of it and could use it for work in the future.

  • How did you feel about two-stage quizzes and tests?

I resented them because they were slightly stressful but overall, they were great ways of testing my knowledge and ensuring I never got behind in lecture. The fact that they are two-stage meant I never had to worry that much. The only problem with two-stage quizzes in my opinion is that they take up at least 10 minutes worth of class time, every lecture. Maybe it would be better to have one quiz a week? I’m not sure.

  • How did you feel about cold calling?

I experienced cold calling in Downing’s other class. It’s okay/good. I am always stressed that I am going to be called on, so I don’t like it but I think it’s a good way to have people on their toes paying attention, and have people who aren’t even being called on focus and digest what is going on so they could explain it at any moment if they needed too. I also like how cold calling isn’t like graded or anything, it makes it less stressful.

  • How did you feel about office hours?

Never really attended much office hours except for some of the TA’s office hours. The TAs in these classes are usually really helpful. I do recommend going if you are stuck on a project.

  • How did you feel about lab sessions?

I did not attend the lab sessions.

  • Give me your suggestions for improving the course.

I don’t have many suggestions to improving this course although I will say that project #5 was pretty similar to the project before it, which, although it made the project easier for me, I felt like if it had been a little more different I would’ve learned even more. I also felt like there was really only two methods of practice to reinforce what was in lecture. I think shape and vector are great examples to teach everything and I understood the concepts really well because of it but I felt like the hackerranks could’ve been a little more helpful.