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.
Concurrent programming in Go.
Program analysis methods.
Written final exam, closed book. Exam questions refer to algorithms and practical exercises
that are covered in the lecture and lab.
Students in this course
Selection of topics covered:
(1) Modeling and Verification
(2) Concurrency and Synchronisation
Mix of lecture and theoretical and practical exercises.
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!