CSE 410
Computer Systems
Credits
3.0
Lead Instructor
Hal Perkins
Textbook
- Computer Systems: A Programmer's Perspective, Bryant & O'Hallaron
Course Description
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, CSE 378, or CSE 451.
Prerequisites
CSE 373.
CE Major Status
None
Course Objectives
The goal of the course is to develop a sense of "what is really
happening" when software runs -- and that this 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.
ABET Outcomes
No outcomes registered
Course Topics
- Number representation: Two’s complement, signed vs. unsigned, floating point (1 week)
- Assembly (2 weeks)
- Memory vs. registers
- Instruction format
- Control structures in assembly (loops, procedure calls)
- C (2 weeks)
- Pointers, arrays, strings
- Memory management, malloc/free, stack vs. heap
- structs
- Compilation, linking, libraries (code across multiple files) (0.5 weeks)
- The process model (what the operating system provides, not how it provides it) (1 week)
- Virtualization and isolation (including virtual memory)
- Components of a process state and notion of a context switch
- System calls for accessing shared resources and communication channels
- Asynchronous signals
- High-level machine architecture (2 weeks)
- Register file
- Instruction cycle
- Caching and the memory hierarchy
- Operating system overview (1 week)
- Abstraction layers
- Processes, threads, scheduling core OS data structures
- File systems