Home

About

Blog

Projects

Study Updates: 2024 Q2 Edition

Quarter 2 of my self-study journey was a bit of a mixed bag, involving a few course corrections and minor detours. Juggling personal issues, work stressors, and even some unanticipated travel made it hard to find time to study. Life does not always go according to our plans, no matter how meticulously laid out they might have been. Just try to adapt and stay on track as best as you can.

Plans? Where we're going we don't need plans. 🤯

Things changed this quarter from what I had [originally decided](/blog/backstory-pt2-year-of-cs) to do (i.e., the "project" portion). Partially, this was because I found it hard to figure out a good project to apply systems architecture ideas, but mostly it was because I was pretty burned out with coding anything substantial due to a particularly rough quarter at my day job and helping a friend with her CS masters capstone project.

What did I do then? I ended up working on implementing some basic algorithms in C to practice a bit. The first, a doubly-linked list of heap-allocated strings, was done early on, taken right from the section discussing pre-requisite knowledge needed in the book "Computer Systems: A Programmer’s Perspective."

With that knocked out, I started in on the book (see below). The other was to implement a binary search tree, which was light and fun (mostly). I enjoyed the chance to practice recurrence in C!

Systems Architecture

I intended to go through the book "Computer Systems: A Programmer’s Perspective" by Randal E. Bryant. I did start there, but found it overwhelming in the depth of coverage. I didn't know what was important and would get stuck on the details. This helped me realize an important insight into how I best learn:

**I need to see the enchanted forest and have a guide map for the path I'll be taking through it before I can sojourn amongst its twisted trees.**

My salvation came through a playlist on YouTube called ["Computer Organization and Design Fundamentals,"](https://www.youtube.com/playlist?list=PLxfrSxK7P38X7XfG4X8Y9cdOURvC7ObMF) while looking for a video that could help explain memory organization in a way that my brain could understand. David Tarnoff, a professor at Eastern Tennessee State University, is a fantastic and engaging lecturer! David's videos were broken up into shorter topics, making them easy to squeeze in throughout the day, like during my lunch break. I devoured those lectures and came out with a better appreciation and understanding of computer architecture and also a refresher on basic electronics. Highly recommended!

Oh! There's even a textbook (⭐ which they make available _for free_! ⭐) that covers the same material if you prefer reading or have watched the video and are ready to go deeper. That can be found here (by chapters): https://faculty.etsu.edu/tarnoff/138292/

Jumping ahead

With a week or so to spare before June came to an end, I decided to read through the very short but ultimately thought-provoking book on distributed systems called "Designing Data-Intensive Applications" by Martin Kleppmann.

It was a book that one could use as a blueprint when thinking about architecting a modern, cloud-based software project that faces constraints around data. It got me thinking about the petabytes of data that STEM field software engineers and researchers often deal with and the constraints that they impose while trying to build workable solutions that meet their users needs. I'm glad I squeezed this book in, as it was not as critical (per my own interests and future work), but it was a great reminder of things that I had encountered over my web development career, working with the cloud and internet-connected software.

That's a wrap! If you made it this far, thanks for reading! I appreciate you. 😊 I'm really looking forward to next quarter, when I'll be diving into operating systems. I'll also try to publish more content that summarizes and explains topics as I learn them. It seems like a useful exercise and can hopefully benefit others.

© 2024-present by Katie Keller.

Content of this website is licensed under CC BY-NC-SA 4.0.

Crafted with 💖. Built with gempost.