CSC 252 will not be easy, but will be a rare enlightenment and give you unique thrills.
In CSC 172 you learned how to write programs in languages that humans can understand (e.g., Java). CSC 252 will teach you how human-readable programs actually run on a computer. We will explain how to transform a human-readable program to a computer-understandable program, how the computer-understandable program is organized and interfaced with the underlying hardware processor, and how to design hardware processors that can execute programs as fast, safe, and efficient as possible.
Ultimately, our objective is to remove a good deal of the mystery of how modern computers work. There is NO magic. Even if you decide not to be a computer system designer in future, knowing these will empower you to get the computer to do useful work for you. In that vein, we will start at the bottom and work our way up. In every case, when we cover a sophisticated topic, we will try to tie it to what you already know. In this way, you don't have to memorize because everything you will learn next will be built on top of what you have already learned. We expect you to come out of this course not only knowing how modern computers work, having a deeper understanding of why they work as they are, but more importantly, why computers don't have to be built that way!