CS371P Spring 2020 Final Entry: Matthew Bianchi
Week 15
What did you like the least about the class?
My least favorite part of this class was the daily quizzes. I understand how they ensure you understand the material and provide a way to discuss what was covered in previous classes, but they take a good portion of time away from being able to learn new material each class. When the quiz takes up around 10–15 minutes every class, it seems like it takes away a good chunk of time to learn new material.
What did you like the most about the class?
On the flip side, I really enjoyed the depth of concepts discussed in this class. Professor Downing goes into great detail explaining different aspects of C++ and how they apply to different use cases for the language.
What’s the most significant thing you learned?
I think the most significant thing I learned was how to implement virtual classes and class inheritance in C++. This is a core pillar of object-oriented programming, and it is a very powerful tool that we discussed and learned how to implement in the language. It allows for parent classes to enforce restrictions on how their children are implemented, allowing for an easier time debugging since the compiler will throw any potential errors prior to runtime.
How many hours a week did you spend coding/debugging/testing for this class?
Overall, this class’ projects took around 5–6 hours a week on average. Projects lasted about two weeks, and they took anywhere from 6–12 hours total. If you start early (which I recommend), you can spread it out over the two weeks and have plenty of time to work on them.
How many hours a week did you spend reading/studying for this class?
This class doesn’t require a lot of outside reading and studying, except for weekly Perusall assignments (reading and adding comments to an article of Professor Downing’s choosing). I probably spent a little over an hour a week studying for this class, although I definitely studied more around test time. If you do choose to study more, focus on the HackerRank exercises that he goes over in class. We rarely had time to finish them in class, and they are very useful for learning and reinforcing the concepts he discusses in class.
How many lines of code do you think you wrote?
For the five projects we had to do, I probably averaged around 500–750 lines per project. This was heavily weighted towards later projects, with earlier ones being much shorter than this. Overall, I would estimate somewhere around 2500–3000 lines for the semester.
What required tool did you not know and now find very useful?
GitLab’s CI pipeline is a great way of making sure you didn’t break anything when pushing to your git repository. By creating a testing pipeline, you can ensure your code always performs correctly whenever you update it. It’s a great way to ensure your project doesn’t break, and if it does, you can figure out exactly when, making it easier to pinpoint the issue and fix it.
How did you feel about the two-stage quizzes and tests?
Two-stage quizzes make you work on your own for the first attempt, and then once that is submitted, a second attempt is given where you can work with your classmates. Your final score is the average of the two attempts. While I think it’s a useful concept, since it theoretically helps each person in the class find the right answers and discuss why they got them wrong, I found more value discussing the problems with Professor Downing and the whole class rather than only with a few classmates, since he does a better job explaining why the correct answer is right. It also takes up a significant portion of time in class, meaning we didn’t always get to finish discussing the topic of the day. However, having the two-stage quizzes allowed for a grade boost in some cases where I missed some questions on my own, so I greatly appreciate that. Two-stage tests are also nice in that you get to check your work with partners on the second stage, but since these were often similar to the ones from the individual test, the second stage felt less like a test and more like a “recall information from the last test day.” (This means you should remember what you wrote on the first stage, since many questions on the second stage are based on those!)
How did you feel about the cold calling, in the end?
Overall, I still have mixed feelings about cold calling. On one hand, everyone needs to be paying attention since they could be called at any moment, and it makes sure the whole class gets involved. Additionally, because it’s cold calling, it’s okay if you don’t know the answer. These questions are used more as a discussion point than to test your knowledge. On the other hand, I felt that once you were called on, you had little incentive to listen in as hard, since you won’t be called until the next cycle of names. However, you should still listen in, as all of the concepts he discusses in class are useful.
Final Thoughts
Overall, this course was great and taught me a lot about both C++ and object oriented programming. Many of the concepts in this class extend well beyond the class itself and are useful while developing in C++, and I think this class was well worth taking. If you put in the work, complete the projects and pay attention in class, you will get a lot out of CS 371P.
