Students of the "old" BS program that need to obtain credit for 0051 (Computer Architecture) and /or 0053 (System Programming) will later be informed about the oral exam. The oral exam will be scheduled after the written exam.
This course provides a programmer's view of how computer systems execute programs, store information, and communicate. The course attempts to expose students to the practical issues that affect performance, portability, robustness, and extensibility. This course provides a foundation for subsequent courses on operating systems, networks, compilers and many other courses that require an understanding of the system-level issues. We discuss the core topics of computer architecture as a platform for the execution of (compiled) computer programs. The course introduces the major structures that have direct influence on the execution of programs (processors with registers, caches, other levels of the memory hierarchy) and covers implementation and representation issues only to the extend that they are necessary to understand the structure and operation of a computer system. The course also covers the basics of performance evaluation (with a focus on the practical aspects of data collection and analysis).
This course does NOT cover how to design or build a processor or computer. Students are expected to have a basic knowledge of statistics and probability theory.
Topics include
This is a plan. No plan survives contact with reality.
| Week | Tuesday | Wednesday |
|---|---|---|
| 0 | 09/16: Introduction, Admin Bits and Bytes | |
| 1 | 09/22: Integer Arithmetic | 09/23: Floating Point |
| 2 | 09/29: Assembly Language I | 09/30: Assembly Language II |
| 3 | 10/06: Assembly Language III | 10/07: Structured data |
| 4 | 10/13: Buffers and other practical issues | 10/14: Sequential Processors |
| 5 | 10/20: Sequential Processors (cont.) | 10/21: Pipelined Processors |
| 6 | 10/27: Memory Hierarchy | 10/28: Memory Hierarchy (cont.) Caches |
| 7 | 11/03: Caches (cont.) | 11/04: Optimization I |
| 8 | 11/10: Optimization II | 11/11: Linking |
| 9 | 11/17: Exceptions I | 11/18: Exceptions II |
| 10 | 11/24: Virtual Memory | 11/25: Measuring Program Performance |
| 11 | 12/01: Linux Memory Management Dynamic Memory Allocation I | 12/02: Dynamic Memory Allocation II |
| 12 | 12/08: System-level I/O | 12/09: Extra Topics |
| 13 | 12/15: Test your knowledge | 12/16: Past & Future Trends, Multi-Core |
| CASP: Thursday 13:15 - 15:00 | |||
|---|---|---|---|
| Room | Assistants | nethz ID | Language |
| HG F26.3 | Stefan Ackermann | stefaack | german |
| IFW A34 | Christoph Baumann | baumachr | german |
| IFW C42 | Simon Gerber | gerbesim | german |
| HG F26.5 | Zaheer Chotia | zchothia | english |
| IFW A36 | Mathias Payer / Michael Pradel | payerm / pradelm | english |
| Date | Slides |
|---|---|
| 17/09 | Overview and basic programming |
| 24/09 | Advanced programming and environment |
Assignments are an important part of the course. You will not learn this material from listening to a lecture alone -- you have to do the assignments.
Note: Do not hesitate to ask your teaching assistant if you have troubles with the assignments!
Your grade will be based on the final exam (100%).