Teaching

Computer Science Guided Research (2017)

Guided Research Timeline

Introduction 2016-09-05 (Monday)
Topic selection 2016-10-01 (Saturday)
Proposal submission 2016-12-07 (Wednesday)
(Proposal submission 1) 2017-03-10 (Friday)
Thesis submission 2017-05-12 (Friday)
Presentations 2017-05-15 (Monday)
Presentations 2017-05-16 (Tuesday)

Guided Research Materials

Below are some LaTeX templates that you are expected to use for typesetting the proposal and later the thesis. Please do not change or improve the format, it is usually far better to spend your brain cycles on the content instead of the format (and we really appreciate a common format).

Computer Networks

About

  • Course: Computer Networks (CO20-320301)
  • Semester: Spring 2018
  • Instructor: Jürgen Schönwälder
  • TA: Glontaru, Alexandru-Mihai
  • TA: Hambasan, Alexandru
  • Class: Monday, 09:45-11:00, Seminar Room RLH
  • Class: Friday, 11:15-12:30, Seminar Room RLH

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

Timeline

Activity Deadline
Introduction 2017-09-11 (Monday)
Project topic/supervisor selection (campus track) 2017-09-18 (Monday)
Project topic/supervisor selection (world track) 2018-02-02 (Friday)
Presentations 2018-05-14 (Monday)
Presentations 2018-05-15 (Tuesday)
Bachelor thesis submission 2018-05-16 (Wednesday)

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 2018
  • Instructor: Jürgen Schönwälder
  • TA: Liu, Yufei
  • TA: Xhelili, Orgest
  • Class: Monday, 08:15-09:30, Lecture Hall Research I
  • Class: Friday, 09:45-11:00, Conference Room Research IV

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).

Operating Systems

About

  • Course: Operating Systems (CO20-320202)
  • Semester: Fall 2017
  • Instructor: Jürgen Schönwälder
  • TA: Mateen, Tayyab
  • Class: Wednesday, 14:15-15:30, Lecture Hall Research I
  • Class: Thursday, 14:15-15:30, Lecture Hall Research II

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.

Introduction to Computer Science

About

  • Course: Introduction to Computer Science (CH08-320101)
  • Semester: Fall 2017
  • Instructor: Jürgen Schönwälder
  • TA: Abreu, Steven
  • TA: Granderath, Malte Aaron
  • TA: Hambasan, Alexandru
  • TA: Maiereanu, Tudor Cristian
  • TA: Shrestha, Mohit
  • TA: Tarigradschi, Mihail
  • 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

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.

Computer Networks

About

  • Course: Computer Networks (CO20-320301)
  • Semester: Fall 2016
  • Instructor: Jürgen Schönwälder
  • TA: Schmoll, Felix
  • Class: Tuesday, 11:15-12:30, West Hall 5
  • Class: Friday, 11:15-12:30, West Hall 6
  • Start: 2016-09-02

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.

Operating Systems Lab

About

  • Course: Operating Systems Lab (CO20-320202)
  • Semester: Fall 2016
  • Instructor: Jürgen Schönwälder
  • Labs: Thursday, 15:45-17:00 (West Hall 8)
  • Labs: Thursday, 17:15-18:30 (West Hall 8)
  • Start: 2016-09-01

Content

This lab complements the Operating Systems course. Students will gain practical experience with systems programming above and below the system call interface of operating systems. Students will learn how to write concurrent programs and gain understanding how kernel programming differs from normal application development.

Computer Networks

About

  • Course: Computer Networks (CO20-320301)
  • Semester: Spring 2017
  • Instructor: Jürgen Schönwälder
  • TA: Schmoll, Felix
  • Class: Tuesday, 09:45-11:00, Lecture Hall Research I
  • Class: Wednesday, 08:15-09:30, Lecture Hall Research I
  • Class: Wednesday, 14:15-15:30, Lecture Hall Research I
  • Class: Friday, 11:15-12:30, Lecture Hall Research III
  • Start: 2017-02-03

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.

Programming in C II

About

  • Course: Programming in C II (JTSK-320112)
  • Semester: Spring 2017
  • Instructor: Jürgen Schönwälder
  • TA: Stefan Bogdan
  • TA: Joana Halili
  • Class: Thursday, 14:15-18:30, Seminar Room Research V (R-V)
  • Class: Friday, 14:15-18:30, Seminar Room Reimer Luest Hall (RLH)
  • Start: 2017-02-09

Content

Programming Language C

Books

  • Brian W. Kernighan, Dennis M. Ritchie: The C Programming Language, 2nd edition, Prentice Hall, 1988
  • Stephen Prata: C Primer Plus, 5th edition, Sams Publishing, 2004
  • Steve Oualline: Practical C Programming, 3rd edition, O'Reilly, 1997

Links

Schedule

Lab Session Topics
2017-02-09 (Thu) C Preprocessor, Bit Operations
2017-02-10 (Fri) Pointers and Arrays
2017-02-16 (Thu) Pointers and Structures, Compiling and Linking
2017-02-17 (Fri) Makefiles, Function Pointers
2017-02-23 (Thu) Stacks and Queues, Modifiers
2017-02-24 (Fri) File I/O

Dates

Date/Due Name Topics
2017-02-09 Sheet #1 C Preprocessor, Bit Operations
2017-02-10 Sheet #2 Arrays, Pointers, Multidimensional Arrays
2017-02-16 Sheet #3 Linked Lists and Multiple Sources
2017-02-17 Sheet #4 Makefiles and Function Pointers
2017-02-23 Sheet #5 Stacks and Queues
2017-02-24 Sheet #6 Queues and Files

Rules

The final grade is made up of the final exam (65 %), and the assignments (35 %). It is required to submit the solution for assignments electronically. Late submissions will not be accepted.