Goals and Syllabus

Course Description

From the course catalog:

CSE 410: Computer Systems (3) - Structure and components of hardware and software systems. Machine organization, including central processor and input-output architectures; assembly language programming; operating systems, including process, storage, and file management. Intended for non-majors. No credit to students who have completed CSE 351 or CSE 451. Prerequisite: CSE 373.

Course Goals

This course should develop students' sense of "what is really happening" when software runs — and that this question can be answered at several levels of abstraction including hardware architecture, machine instructions, assembly language, the memory hierarchy (including caches and virtual memory), operating systems, and higher-level languages like C and Java. The core around which the course is built is C, assembly, and low-level data representations, but this is connected to other levels as well as to the role of the operating system in providing abstractions used to support programs. The goal is to understand how these abstractions interact from the programmer's perspective and how they affect program execution.

Course Themes

The course has three principal themes:

Course Objectives

At the end of this course, students should be able to:

Course Syllabus

Approximate list of topics (approximately 1 week each - 1 to 3 lectures):

Note that even more important than the topics at various levels of abstraction is the connection between them: students should get an informal sense of how C could be translated to assembly, how assembly could be translated to binary, and how data is manipulated during program execution.