An introduction to the architecture, operation, and organization of a modern computing machine. Topics covered include basic logic operations, state-machines, register models, memory organization, peripherals, and system issues. Assembly language taught in order to understand the instruction set architecture and memory model of the computer. Prerequisite: CSS 342; may not be repeated.
This course will provide students with the basic theories and concepts of how hardware and software cooperatively interact to accomplish real-world tasks. Elements of the hardware development such as instruction set architecture, memory and I/O organization will be examined in the context of modern computer system fundamentals such as memory management, Algorithmic State Machines and Interrupt handling. Also, the differences between the CISC and RISC architectures will be examined in the context of their assembly language instruction sets and the compiler technology required to support them. Finally, we'll look at special topics such as caches and virtual memory management, and future trends in computer design.
We will first explore the elements of the modern computing system at the level of the logic gate. We’ll go down to the level of the bits, bytes and clocks to examine how the basic blocks of the computer work together. This will lead us to look at the algorithmic state machine and how it enables a computer actually work. This "down and dirty" analysis will get us ready to look at assembly language. Next, we’ll write some assembly language programs and then map these programs onto their analogs in higher level languages, such as C or C++. Working with assembly language will provide the insight into how modern operating systems deal with the real world through its drivers and interrupt handler routines. Finally, we’ll take a step back and study the modern computer architectures of CISC and RISC. This naturally leads us to look at pipelines, caches and virtual memory management.
Student learning goals
Understand the electronic circuit basis for modern computer systems
Understand the relationship among logic equations, logic circuits, and software as equivalent representations of computing machines
Understand the physical organization of modern computer systems
Understand how to program in assembly language
General method of instruction
The basic format of the class is a class lecture, however this class requires lots of students participation, including exams, assignments, quizzes, exercises, online discussion as well as a final group project.
CSS 342: Performance measurement (big-O notations), Boolean algebra, discrete mathematics.
Class assignments and grading
Assignments include problem solving as well as assembly programming.
All exams and assignments are strictly graded based on, not just the results but also the processes for each task.