CS371p Spring 2022: Week 9
What did you do this past week?
This past week was not too busy, so I made some good progress on the Allocator project with my teammate and we are passing the HackerRank tests with our initial implementation. In Networks, we learned about routers, IP addressing, proxying, NAT, etc., which was super interesting. I also watched some of “All of us are dead”, which is a zombie K-drama.
What’s in your way?
I have a busy upcoming week in terms of projects and assignments so it’s going to be quite hectic, but hopefully we’ll get through it. I also finally moved backed to Austin, so I have some adjusting to do and need to start cooking and stuff again.
What will you do next week?
I will finish up the Allocator project this week and make sure to get that turned in. For my networks class, I will need to work on building an HTTP proxy, so that should be quite interesting. I will also need to get started on the Data Mining project where we analyze a dataset and perform the entire data science process. I also have a good amount of work in my Linguistics classes, and I will need to design a speech experiment for Hindi that I will conduct on some of my peers from back in India.
What did you think of Paper #9: Dependency Inversion Principle?
I thought it was a good principle to nicely round up the SOLID design principles, and it provided a nice example with the Copy class to illustrate how making high-level modules depend on abstractions rather than lower-level implementations can help decouple policy from mechanism, making the code more flexible, reusable and robust. I will definitely refer back to these papers when I do OOD in the rest of the projects.
What was your experience of DigitsIterator, Iterators, and std::vector?
I enjoyed learning about the various types of iterators and really emphasizing their different strengths and uses. It was also helpful to see why std::array and std::vector were much more useful than built-in stack allocated and heap allocated arrays. The biggest issue was the asymmetry in initialization semantics for primitive types and user types. Primitive type initialization was O(1), basically no initialization occurred, whereas user type array initialization was O(n), with n objects created using the default constructor. The fact that the vector uses an allocator under the hood to avoid unnecessary initialization made sense. Also it was nice to get more practice with the copy constructor and copy assignment.
What made you happy this week?
I’m happy to finally be back in Austin, and the weather is finally starting to be nice again (except for the pollen). I also had a nice time talking with my old high-school friends and playing some games.
What’s your pick-of-the-week or tip-of-the-week?
My tip of the week is if you are ever doing language learning, a really useful tool is Language Reactor (formerly Language Learning with Netflix), which is a chrome extension that can show dual subtitles (one in your native lang, and the other in your target language), and you can hover over the words for translations. It can also be used for sentence mining and creating Anki flashcards to learn vocabulary in your target language.