Module Modern Programming Methods, Computer Science (Bachelor) (ER 8)

English language
Compact font

Color scheme

Module summary

Modern Programming Methods

INFB620

Prof. Dr. Martin Sulzmann

/

6th Semester

Betriebssysteme, Technische Informatik 2

Module Internship

Software is becoming more complex. Programs operate in a concurrent environment.

Making sure that these programs function correctly is a challenging task.

This course covers the design, implementation, and analysis of concurrent programs.

After this course, students will be able to understand the conceptual foundations of concurrent programming,

how to implement these concepts in the Go programming language and several methods to predict potential concurrency bugs.


Lectures introduce concepts via some live coding, followed by some lab sessions where students work on smaller practical exercises. Several (online) quizzes allow students to test their knowledge.


Content.


Introduction to Go.

  •  C-like syntax
  • Simple type inference
  • Structural subtyping


Concurrent programming in Go.

  •  Multi-threading
  • Locks and semaphores
  • Channel-based communication
  • Further concurrency abstractions (barriers, async-wait, futures)


Program analysis methods.

  •  Static versus dynamic analysis
  • Dynamic data race and deadlock prediction
  • Go-specific analysis scenarios


Written final exam, closed book. Exam questions refer to algorithms and practical exercises

that are covered in the lecture and lab.

Individual exams
Course Modern Programming Methods

INFB621

Lecture

Prof. Dr. Martin Sulzmann

German

3/2

90 hours in total, including 30 hours of contact study.

Written Exam 90 Min. (graded)

Students in this course

  • obtain an overview of methods for formal modelling and verification of autonomous/reactive systems,
  • get to know programming concepts to master highly concurrent/distributed systems.l

Selection of topics covered:

(1) Modeling and Verification

  • Statemachine models
  • Mealy/Moore
  • Communication statemachines
  • Timed statemachines
  • Harel Statecharts
  • Specification
  • Reguar languages
  • Temporal logic (CTL)
  • Modelchecking
  • Testcasegeneration via modelchecking
  • Run-Time Verification
  • Coverage criteria
  • UPPAAL

(2) Concurrency and Synchronisation

  • Shared memory
  • Threads and Locks
  • Lock-free Algorithms
  • Software Transactional Memory
  • Message-passing
  • Foundations: CSP, Join
  • Haskell, Go

  • Lecture notes and slides
  • Exercises
  • Selection of textbooks:
  • Real World Haskell
  • by Bryan O'Sullivan, Don Stewart, and John Goerzen
  • Real-Time Systems and Programming Languages (Fourth Edition) Ada 2005,
  • Real-Time Java and C/Real-Time POSIX
  • by Alan Burns and Andy Wellings
  • Principles of Model Checking
  • Christel Baier and Joost-Pieter Katoen
  • Real-Time UML: Developing Efficient Objects for Embedded Systems (2nd Edition)

Mix of lecture and theoretical and practical exercises.

Course Modern Programming Methods Laboratory

INFB622

Exercise

Prof. Dr. Martin Sulzmann

German

2/2

60 hours in total, including 30 hours of contact study.

Exercise 1 Semester (not graded)

In the lecture we will deal with the most important principles of organization and design of microprocessors.

Microprocessors are the central building blocks of practically all current computer systems, from smartphones to supercomputers and thus of the complete digital world.

The focus of the lecture will be the programming of 64-bit ARMv8 processors and the logical design of processors with the help of Verilog.

In addition to teaching the theoretical basics, great emphasis is placed on practical programming exercises.


The following topics are covered:

 - Computer Abstractions and Technology

 - Instructions: Language of the Computer

 - Arithmetic for Computers

 - Performance Analysis

 - Logic Design with Verilog

 - The Processor

 - The Memory Hierarchy

 - Parallel Processors

Computer Organization and Design : The Hardware/Software Interface , ARM Edition, D.A. Patterson, J.L. Hennessy, Elsevier Inc. 2017

In general, the lectures start with a discussion of the exercises associated with the previous lecture. Afterwards we address new topics.

Questions and feedback are always welcome!