CS 371P Spring 2021 Final entry: Caroline Hatcher

Caroline Hatcher
3 min readMay 8, 2021

Final entry 5/7/21

Final Entry

How well do you think the course conveyed those takeaways?

I definitely think the course did a good job of emphasizing testing. The unit tests and acceptance tests that were required taught me a lot about how testing could be implemented. I found it difficult to write the tests sometimes, but I think that they were the only way I could debug my code and be sure it worked. I liked having the repo of student tests because they were often how I debugged my code after I couldn’t figure out edge cases I didn’t meet. While we learned about iterators, I would have to think hard to remember all the implications of iterators. The reusability and symmetry was something the projects emphasized heavily. I didn’t use a partner on all but one project, so I’m not sure I have a position on collaboration.

Were there any other particular takeaways for you?

I think I had a much better idea of memory management and of meeting requirements that are not purely code. I was at times frustrated that I wasn’t done with the project after completing the HackerRanks, but I learned to adapt and become more comfortable with these requirements.

The different types of constructors and inheritance in C++ were in my opinion the most important thing I got out of the class.

How did you feel about cold calling?

I think it was mostly positive, but I wish it lasted a little bit shorter because I felt like I was just watching interactions with other students.

How did you feel about office hours?

I think they were handled very well. I always felt like I got enough time with the TA /professor and that I was treated fairly.

How did you feel about lab sessions?

I viewed them the same as office hours.

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

I found coverage and the memory leak tool(Valgrind) to be very helpful. I think if you built code that had high coverage it was better organized than low coverage code.

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?

It’s important to not have a single class that does 10 unrelated things, but instead have classes that have just one main responsibility. Your classes should be able to handle alterations in them without requiring all code that uses them to be rewritten.

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

Even though it seems like getters and setters provide helpful information, they can actually make it much harder to adapt your code to changes in how data is stored since they expose this to other classes.

Give me your suggestions for improving the course.

I would appreciate a model for the exercises like I had in a different course where the TAs and instructor each had breakout rooms to code the exercise, but only wrote what the students said for the exercises.

--

--