Due to Covid-19, this course is delivered in "hybrid mode", i.e. it takes place in HS19 and is also streamed and offered for later download.
All students who registered for hybrid mode on Doodle can participate directly in HS19. Since less than 45 students registered, those students can attend physically in every week.
The other students can attend the lectures online under https://jku.zoom.us/j/99946811201?pwd=QXhBc3JvbEVZcEwvQXdWWXlHWmxRZz09 or can download the lecture videos from this web page (see below).
Chances are high that the exam will also have to take place in online mode. The final decision will be made in November. The requirements and the procedure for online exams at our institute can be found under http://ssw.jku.at/Teaching/Exams/OnlineMoodle.html.
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 Master programme.
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 written exam will be online on December 3, 2020, 13:45-15:15 (see instructions). All registered students will receive an email the day before the exam. This email contains 2 links: one for Zoom and one for the exam. The exam link will only work once the exam starts. After you see the exam in your web browser, don't click the link again and don't reload the browser window. Please enter the Zoom session 20 minutes before the exam starts so that we can check the camera settings and your student ID cards.
In order to pass the course, you will have to implement the project as well. The final mark will be computed from the exam (90 points) and from the project (15 points).
Part of the course will be a project in which either a garbage collector, a debugger or a text editor has to be implemented.
13:00-14:00 names starting with A-F
You will be invited to a breakout room where you have to share the screen and explain your implementation either to Prof. Mössenböck or to DI Weninger. Please have your computer started and be prepared for the presentation.