CS371p Fall 2020: Barrett Schonefeld

Barrett J Schonefeld
3 min readNov 9, 2020

What did you do this past week?

This past week, my teammate and I met to handle the final logistical items for the Darwin project. We generated acceptance tests, generated the documentation with Doxygen, etc.

What’s in your way?

Nothing is in the way! I am ready for the final project to be released. I secured a teammate for the final project, and we will meet to get started on this project once it is released this week.

What will you do next week?

Next week, my teammate and I will begin work on the final project. We’ll review the project specification, set up the repository using skeleton code (if provided) or adapted code from a previous project, open issues to outline work we need to get done, write and test the code to parse the input data, and then we’ll get started on the core algorithm. I think we’ll make some significant progress this week on the final project, which will be nice to establish a good foundation to allow preparation for the second exam (and to give peace of mind during break).

If you read it, what did you think of The Dependency Inversion Principle?

I thought The Dependency Inversion Principle was interesting and introduced a concept to which I had not been exposed. My understanding of the principle is that we want to avoid depending directly on lower level modules that we use in a given module. Instead, we want to extrapolate the interface needed by the high level modules (and that the low-level modules may be responsible for implementing) into Interfaces and Abstract classes. Then, both the high and low level modules should depend on those extrapolated interfaces/classes. This should provide more stability in the code because low level modules may change, but they still must conform to the interface or abstract class upon which both the high and low level modules depend. Hence, changes in the low level modules are less likely to cause problems in the high level modules.

What was your experience of continuing to implement std::vector, move semantics, and allocators again?

I’ve enjoyed the experience working through vector! I like that we’ve built on the vector code incrementally, identified inefficiencies in our implementation, and introduced the next topic in the class by fixing those inefficiencies. It makes the lectures interesting, easy to follow, and it provides more depth to the lectures.

What made you happy this week?

In another class, the latest project was released on Wednesday. The projects for the class allow for partners, and I have consistently worked with the same person. Some of the labs leading up to this latest lab have been quite time-consuming, so we expected a similar experience. However, we started and finished the project on the same day (about an hour). This is exciting because it frees up my focus to shift to other classes!

What’s your pick-of-the-week or tip-of-the-week?

I found this article on Google’s emerging professional certificate program. This is interesting because it rethinks higher education. Google is developing courses that may purchases for pennies compared to tuition at regular universities. While the experience may not be as thorough or social as a traditional four-year degree, this seems like a great, practical, and financially responsible avenue for people who have the focus and drive to stick to the courses.

Additionally, I found a great video explaining the Dependency Inversion Principle. They describe the reasoning behind the principle, and they demonstrate the principle in action through an example. Because they code an example, the video covers the principle more concretely, which made it easier to follow than the paper.

--

--