This course examines how computers run programs, introducing key software and hardware abstractions and implementations between programming languages and transistors. The course traces representation and translation of data and programs through three broad topics in computer systems: computer hardware implementation, including digital logic, computer arithmetic, and machine organization; the hardware-software interface, including instruction set architecture, assembly code, and the C programming language; and abstractions for practical systems, including the physical memory hierarchy, the operating system process model, virtual memory, and memory management. Students complete extensive hands-on projects in hardware and software systems. Students are required to attend one three-hour laboratory weekly.
Max Enrollment: 24
Prerequisites: CS 230, or permission of the instructor.
Distribution Requirements: MM - Mathematical Modeling and Problem Solving; LAB - Natural and Physical Sciences Laboratory
Typical Periods Offered: Spring; Fall
Semesters Offered this Academic Year: Fall; Spring
Notes: This course does satisfy the laboratory requirement.