Secure and Dependable Systems
About
- Course: Secure and Dependable Systems (CO21-320203)
- Semester: Spring 2020
- Instructor: Jürgen Schönwälder
- TA: Huynh, Dung Tri
- TA: Mana, Irsida
- Class: Thursday, 14:15-15:30, R.1-53 Lecture Hall
- Class: Friday, 11:15-12:30, RLH-274 Seminar Room
- Office Hours: Monday, 11:15-12:30 (Research I, Room 87)
- Final Exam: Thursday, 2020-05-28 12:30-14:30 (SCC - Hall 4)
- Makeup Exam: Monday, 2020-08-31 17:00-19:00 (R.1-53 Lecture Hall)
Content
This course introduces formal methods for analyzing and assuring safety and security of software systems. The course starts off with a clarification of concepts such as dependability, quality, safety, and security of software systems, and how to achieve them in the software development process. We introduce the foundations of cryptography as a basis for security mechanisms. The main part of the course introduces different paradigms of safety/security analysis such as formal testing (code coverage), static program analysis (control/data flow analysis and abstract interpretation), model checking (computational tree logic), and program verification (Hoare calculus, dynamic logic). The formal techniques will be used for analyzing both safety and security properties of programs. Where possible, students will be given hands-on micro-projects in state-of-the-art tools (e.g., Isabelle for program verification).
Introduction to Computer Science
About
- Module: Introduction to Computer Science (CH-232)
- Semester: Fall 2019
- Instructor: Jürgen Schönwälder
- TA: Balani, Eglis
- TA: Blaceri, Romelda
- TA: Chen, Tianyao
- TA: Kabadzhov, Ivan
- TA: Shandro, Jovan
- Class: Tuesday, 11:15-12:30 (CNLH)
- Class: Friday, 08:15-09:30 (CNLH)
- Class: Friday, 09:45-11:00 (CNLH)
- 1st Module Exam: Saturday 2019-12-14 09:00-11:00 (SCC Hall 3+4)
- 2nd Module Exam: Saturday 2020-01-25 08:00-10:00 (ICC East Wing)
- Office Hours: Monday, 11:15-12:30 (Research I, Room 87)
Content and Educational Aims
The module introduces fundamental concepts and techniques of computer science in a bottom-up manner. Based on clear mathematical foundations (which are developed as needed), the course discusses abstract and concrete notions of computing machines, information, and algorithms, focusing on the question of representation versus meaning in Computer Science.
Operating Systems
About
- Course: Operating Systems (CO20-320202)
- Semester: Fall 2019
- Instructor: Jürgen Schönwälder
- TA: Shala, Ardit
- TA: Mana, Irsida
- Class: Monday, 08:15-09:30 (R.1-53 Lecture Hall)
- Class: Thursday, 09:45-11:00 (R.4-52 Conference Room)
- Class: Friday, 13:00-14:00 (R.1-53 Lecture Hall)
- Final Exam: Monday, 2019-12-09 09:00-11:00 (SCC Hall 3)
- Makeup Exam: Friday, 2020-01-31 17:00-19:00 (East Hall 4)
- Office: Monday, 11:15-12:30 (Research I, Room 87)
Content
This course provides an introduction to the concepts underlying operating systems. Students will develop an understanding how operating systems realize a virtual machine that can be used to execute multiple concurrent application programs. The course discusses resource allocation algorithms and how concurrency problems can be solved.
Student Project and Thesis Topics (2019/2020)
Below is a collection of ideas for student projects. Some are half-backed, some are not even written down. If you are interested in systems-oriented computer science and computer security, talk to me in person. In general I expect that students have a solid understanding of operating systems and computer networks and that they are able to handle programming tasks well.
Trusted Execution Environments
Trusted Execution Environments (TEEs) such as ARM's Trustzone or Intel's Enclave are secure areas inside a main processor. The idea is that data and applications contained in TEEs is protected with respect to confidentiality and integrity. Systems execute a trusted operating system inside the TEE and they may load trusted applications into the TEE. The goal of this project is investigate the state of the art in TEEs and their open source software systems and to prototype novel trusted applications that may help to secure networked embedded devices.
Computer Networks
About
- Course: Computer Networks (CO20-320301)
- Semester: Spring 2019
- Instructor: Jürgen Schönwälder
- TA: Granderath, Malte
- TA: Shrestha, Aavash
- Class: Monday, 09:45-11:00, Lecture Hall Research I
- Class: Friday, 09:45-11:00, Lecture Hall Research I
- Office: Monday, 11:15-12:30 (Research I, Room 87)
Content
The course discusses network protocols in some depth in order to enable students to understand the core issues involved in network protocol design. Fundamental algorithms and principles are explained in the context of existing IEEE / Internet protocols in order to demonstrate how they are applied in real-world scenarios. This course is recommended for all students with a strong interest in communication networks and distributed systems.
CS Bachelor Project and Thesis
About
- Course: Project Computer Science (CA10-320305)
- Course: Thesis Computer Science (CA10-320306)
- Semester: Fall 2018
- Semester: Spring 2019
- Instructor: Peter Baumann
- Instructor: Andreas Birk
- Instructor: Horst Karl Hahn
- Instructor: Herbert Jaeger
- Instructor: Szymon Krupinski
- Instructor: Kinga Lipskoch
- Instructor: Francesco Maurelli
- Instructor: Jürgen Schönwälder
- Prerequisites: Two CS core modules passed
Timeline
Activity | Deadline |
---|---|
Project topic/supervisor selection (campus track) | 2018-09-21 (Friday) |
Project topic/supervisor selection (world track) | 2019-02-04 (Monday) |
Presentations | 2019-05-13 (Monday) |
Presentations | 2019-05-14 (Tuesday) |
Bachelor thesis submission | 2019-05-17 (Friday) |
Materials
Doing research in computer science usually starts with a lot of reading and learning. In order to do research that is significant, it is crucial to pick a tractable topic and it is essential to understand the state of the art as well as any algorithms and tools that are relevant. While the details differ depending on the area of computer science, reading about the state of the art is essential for all of them. To find relevant literature, it is good to be aware of systems such as:
Secure and Dependable Systems
About
- Course: Secure and Dependable Systems (CO21-320203)
- Semester: Spring 2019
- Instructor: Jürgen Schönwälder
- TA: Vitanov, Milen
- TA: Dandekar, Aditya
- Class: Tuesday, 14:15-15:30, Lecture Hall Research I
- Class: Thursday, 14:15-15:30, East Hall 4
- Office: Monday, 11:15-12:30 (Research I, Room 87)
Content
This course introduces formal methods for analyzing and assuring safety and security of software systems. The course starts off with a clarification of concepts such as dependability, quality, safety, and security of software systems, and how to achieve them in the software development process. We introduce the foundations of cryptography as a basis for security mechanisms. The main part of the course introduces different paradigms of safety/security analysis such as formal testing (code coverage), static program analysis (control/data flow analysis and abstract interpretation), model checking (computational tree logic), and program verification (Hoare calculus, dynamic logic). The formal techniques will be used for analyzing both safety and security properties of programs. Where possible, students will be given hands-on micro-projects in state-of-the-art tools (e.g., Isabelle for program verification).
Introduction to Computer Science
About
- Course: Introduction to Computer Science (CH08-320101)
- Semester: Fall 2018
- Instructor: Jürgen Schönwälder
- TA (Group D): Bayer, Jonas
- TA (Group E): David, Marco
- TA (Group B): Huynh, Dung Tri
- TA (Group C): Mana, Irsida
- TA (Group A): Pal, Abhik
- Class: Tuesday, 08:15-09:30 (Lecture Hall Research II)
- Class: Tuesday, 09:45-11:00 (Lecture Hall Research II)
- Class: Thursday, 11:15-12:30 (Lecture Hall Research II)
- Midterm: Tuesday, 2018-10-30, 08:15-09:30 (Campus Center, east wing and west wing)
- Final: Thursday, 2018-12-20, 16:00-18:00 (SCC Hall 3+4)
- Office: Monday, 11:15-12:30 (Research I, Room 87)
Content
The course covers the fundamental concepts and techniques of computer science in a bottom-up manner. Based on clear mathematical foundations (which are developed as needed) the course discusses abstract and concrete notions of computing machines, information, and algorithms, focusing on the question of representation versus meaning in Computer Science.
Operating Systems
About
- Course: Operating Systems (CO20-320202)
- Semester: Fall 2018
- Instructor: Jürgen Schönwälder
- TA (Group B): Vitanov, Milen Asenov
- TA (Group A): Wang, Fanlin
- Class: Thursday, 15:45-17:00 (Lecture Hall Research II)
- Class: Friday, 14:15-15:30 (West Hall 5, Lecture Hall Research III)
- Final: Friday, 2018-12-14, 12:30-14:30 (CNLH)
- Office: Monday, 11:15-12:30 (Research I, Room 87)
Content
This course provides an introduction to the concepts underlying operating systems. Students will develop an understanding how operating systems realize a virtual machine that can be used to execute multiple concurrent application programs. The course discusses resource allocation algorithms and how concurrency problems can be solved.
Student Project and Thesis Topics (2018/2019)
Below is a collection of ideas for student projects. Some are half-backed, some are not even written down. If you are interested in systems-oriented computer science, talk to me in person. In general I expect that students have a solid understanding of operating systems and computer networks and that they are able to handle programming tasks well.
Soundification of Status Information
This is a topic for someone interested in computer generated sounds. I am interested in algorithms that convert status information obtained by monitoring systems (say a monitor of computer network) into audible sounds that (i) are not intrusive but (ii) can signal significant changes in the conditions. There is work in this space. Some people recently wrote special programming languages that allow to describe sound generations as programs.