Intro to Computer Systems

I thoroughly enjoyed this course. I learned about very low level systems of the computer, including CMOS gates, PLAs, and transistors. This was the very first course where I was so close to the machine; while it was challenging, I found it very worthwhile to learn about the various operations that happen at the bottom level in order for high level, abstract functions to occur.

I was also exposed to assembly within this course. While we mainly used LC4, an educational assembly language, it was interesting to see how simplistic it is in comparison to higher level languages, such as Java or Python. This simplisticity led to longer code files, even for somewhat basic actions, such as a conditional.

We also used C for our homework assignments, and learned how to write our own Makefiles. The most notable project, for me, was writing a compiler from scratch using C for the language J. J is a stack-based language, so we had to use a termainal Reverse-Polish-Notation technique with a deque. It was cool to build everything from scratch, and lay out the compiler design.

This course was definitely one of my favorites; I got to learn so much and the homeworks were challenging, but interesting. From this course, I have a much better understanding of what truly goes on in the computer as it is operating.