Professor Dr. Andrew Migler - Fall 2023
This repository is dedicated to re-coding the big, key programming assignments from the course I took at Cal Poly SLO: Systems Programming.
The course was extremely difficult but if you want to do well in this class then DO NOT procrastinate. Now, how do you do that? The day an assignment comes by, immediately start by planning out the assignment. Truly understand what is the expected output, what do you need to know from the shell (i.e. "man" pages of functions and C-specific behaviors), and the program flow from one point to another. Great people to ask about these are, quite obviously, the professor teaching the course and TA assisting in the course!!!
I have never felt so depressed about school from any course until this one when it dropped the second programming assignment which was continental distances ahead in difficulty from the first programming assignment. This was the one engineering course I stayed up two nights just reading the instructions to understand the assignment, not even coding anything. Staying up coding when you're in the zone is a vibe though, but don't underestimate what writing and drawing can do for you. Planning. Matters.
This course impacted me so much that I found the time to revisit my god-awful, extremely rushed, poorly-understood code and rewrite cleaner programs. Whats the point of writing code if you cant read it, right? Additionaly, I truly enjoyed how this course pushed me to think through the programming problems. Revisiting them, even though knowing the solution, definitely brought feelings of accomplishment and fullfillment when I solved them in a different way.
I hope my code simply serves as a guideline or a small push for you to get back on track. I just ask that you don't copy my code. Plagiarism is bad, but problem-solving is good! Seeing how a solution was done by other people may lead you to creating better solutions, but I emphasize that you should really plan out your solution first and create your own code next, then look for inspiration. Again, planning a solution and learning the ins-and-outs of problems is what helps you as a programmer, and most definitely NOT doing an assignment to complete said assignment.
Once you finish this course, you're going to feel great. Trust me, I ended up revisiting the assignments!
All of the assignment pdf details, the Makefiles, and the glorious code are included. Here and there I might add some pictures of program flow / planning.