CS371p Fall 2020 Final Entry: Kush Jain

Kush Jain
3 min readDec 5, 2020
  1. How well do you think the course conveyed those takeaways?
  • 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

I feel like this course was very effective in conveying the key takeaways for the class. Prior to taking this course, I was familiar with object oriented concepts, but didn’t fully understand the intricacies of them. This course gave me a better understanding of how code could be refactored and reused, along with the importance of certain constructs such as containers and iterators. One example of this was how the copy assignment operator reuses the copy constructor (something I wouldn’t have initially thought about). I also think the course did a good job giving us practical applications of these concepts through the assignments, as we had to use common C++ libraries such as astyle and gcov to ensure that our code was at the quality expected.

2. Were there any other particular takaways for you?

I think another takeaway from this class was the importance of abstraction and separation of functions. I have noticed in a lot of my code, I run into the issue of a class doing multiple things, and not representing one unique object. This course made it especially clear how to design object oriented programs in a way where each class would represent one object, with inheritance only being the correct option in the “is-a” relationship context.

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

I felt that the format of two-stage quizzes and tests really helped my overall learning in the course. I liked how we were able to discuss challenging questions with teammates and collaborate to come up with a better solution. I often found that explaining concepts to others would reveal areas where I wasn’t clear, helping better my own understanding of the material.

4. How did you feel about cold calling?

I think cold calling was also relatively successful, as it helped keep the class engaging and fresh. I liked how Professor Downing never expected one to know the answers immediately, and would help guide one to the solution. I also think that cold calling was nice in that it helped me access whether I fully understood the class material, and better fix the areas I was weak on.

5. How did you feel about office hours?

I think office hours were very helpful in this class. I also liked how we used Piazza in the course, providing a virtual office hours in some ways, where instructors and students could answer questions about the assignments and materials.

6. How did you feel about lab sessions?

I think the lab sessions were helpful in getting a clear understanding of the expectations for the assignments along with clearing up any areas of confusion on the projects. The TAs were very helpful in answering my questions in these sessions, helping me get through some of the tougher assignments in the course.

7. Give me your suggestions for improving the course.

I think that overall the course was structured well, and felt I learned a lot. One suggestion, would be to include more in class coding, as I felt that the times we did these HackerRank exercises, I learned a lot from my teammates. I also think that some tips about how to debug code in C++ would have been helpful for some of the assignments (for example using a debugger to step through the code).

--

--