252-0061-00L Systems Programming and Computer Architecture
Semester | Autumn Semester 2018 |
Lecturers | T. Roscoe |
Periodicity | yearly recurring course |
Language of instruction | English |
Courses
Number | Title | Hours | Lecturers | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
252-0061-00 V | Systems Programming and Computer Architecture | 4 hrs |
| T. Roscoe | |||||||||||||||||||||
252-0061-00 U | Systems Programming and Computer Architecture | 2 hrs |
| T. Roscoe |
Catalogue data
Abstract | Introduction to systems programming. C and assembly language, floating point arithmetic, basic translation of C into assembler, compiler optimizations, manual optimizations. How hardware features like superscalar architecture, exceptions and interrupts, caches, virtual memory, multicore processors, devices, and memory systems function and affect correctness, performance, and optimization. |
Learning objective | The course objectives are for students to: 1. Develop a deep understanding of, and intuition about, the execution of all the layers (compiler, runtime, OS, etc.) between programs in high-level languages and the underlying hardware: the impact of compiler decisions, the role of the operating system, the effects of hardware on code performance and scalability, etc. 2. Be able to write correct, efficient programs on modern hardware, not only in C but high-level languages as well. 3. Understand Systems Programming as a complement to other disciplines within Computer Science and other forms of software development. This course does not cover how to design or build a processor or computer. |
Content | This course provides an overview of "computers" as a platform for the execution of (compiled) computer programs. This course provides a programmer's view of how computer systems execute programs, store information, and communicate. The course introduces the major computer architecture structures that have direct influence on the execution of programs (processors with registers, caches, other levels of the memory hierarchy, supervisor/kernel mode, and I/O structures) 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 attempts to expose students to the practical issues that affect performance, portability, security, 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. Topics covered include: machine-level code and its generation by optimizing compilers, address translation, input and output, trap/event handlers, performance evaluation and optimization (with a focus on the practical aspects of data collection and analysis). |
Lecture notes | - C programmnig - Integers - Pointers and dynamic memory allocation - Basic computer architecture - Compiling C control flow and data structures - Code vulnerabilities - Implementing memory allocation - Linking - Floating point - Optimizing compilers - Architecture and optimization - Caches - Exceptions - Virtual memory - Multicore - Devices |
Literature | The course is based in part on "Computer Systems: A Programmer's Perspective" (3rd Edition) by R. Bryant and D. O'Hallaron, with additional material. |
Prerequisites / Notice | 252-0029-00L Parallel Programming 252-0028-00L Design of Digital Circuits |
Performance assessment
Performance assessment information (valid until the course unit is held again) | |
Performance assessment as a semester course | |
In examination block for | Bachelor's Degree Programme in Computational Science and Engineering 2018; Version 13.12.2022 (Examination Block G2) |
ECTS credits | 7 credits |
Examiners | T. Roscoe |
Type | session examination |
Language of examination | English |
Repetition | The performance assessment is only offered in the session after the course unit. Repetition only possible after re-enrolling. |
Mode of examination | written 180 minutes |
Written aids | No written aids allowed, except for a German-English dictionary. |
If the course unit is part of an examination block, the credits are allocated for the successful completion of the whole block. This information can be updated until the beginning of the semester; information on the examination timetable is binding. |
Learning materials
Main link | Information |
Only public learning materials are listed. |
Groups
No information on groups available. |
Restrictions
There are no additional restrictions for the registration. |
Offered in
Programme | Section | Type | |
---|---|---|---|
Computer Science Bachelor | Compulsory Courses | O | |
Computer Science Bachelor | Basic Courses | O | |
Computer Science Teaching Diploma | Part 1 | O | |
Computational Science and Engineering Bachelor | Block G2 | O |