This course is a KV (combined course consisting of lectures and project work) in which you will learn the concepts and the implementation of various system software components such as garbage collectors, linkers, loaders, debuggers and text editors. In addition to the principal algorithms the course will also discuss case studies of such programs. The course is given in English. It is part of the Major Subjects Software Engineering and Computational Engineering in the Computer Science curriculum.
1. Memory Management 1.1 Overview 1.2 Allocation and deallocation of memory 1.3 Simple free list 1.4 Multiple free lists 1.5 Buddy system 1.6 Memory fragmentation 2. Garbage Collection 2.1 Motivation 2.2 Basic techniques 2.2.1 Reference Counting 2.2.2 Mark & Sweep 2.2.3 Stop & Copy 2.3 Variants 2.3.1 Mark & Compact 2.3.2 Generation scavenging 2.4 Incremental garbage collection 2.4.1 Tricolor marking 2.4.2 Train algorithm 2.5 Finding root pointers 2.5.1 Pointer tables 2.5.2 Conservative garbage collection 2.6 Garbage collection in multi-threaded systems 2.7 Finalization 2.8 Case study: Java Hotspot VM 2.9 Case study: .NET 3. Linkers and Loaders 3.1 Overview 3.2 Case study: Oberon 3.2.1 Run-time data structures 3.2.2 Resolving external references 3.2.3 Load algorithm 3.3 Case study: Java 3.3.1 Overview 3.3.2 Class files 3.3.3 Loading phases 3.3.4 Example: custom class loader 3.4 Linking/loading in C/C++ 4. Debuggers 4.1 Architecture 4.2 Case study: Java Platform Debugger 5. Text Editors 5.1 Data structures for texts 5.1.1 SimpleText 5.1.2 GapText 5.1.3 PieceListText 5.2 Text representation on the screen (case study) 5.2.1 Line descriptors 5.2.2 Positions 5.2.3 Input handling 5.2.4 Updating the view 5.2.5 Scrolling
The project has to be presented on January 9, 2018 between 15:15 and 17:30 at the SSW institute. Please bring your own laptop.
You can present
your project either to Prof. Mössenböck (room 206) or to DI Leopoldseder (room 208). In order to avoid
waiting times, please come at the following times:
The written exam will be on January 9, 2018, 13:45-15:15. In order to pass the course, you will need to implement the project as well. The final mark will be computed from the exam and from the project.