Concurrent Programming
Overall Course Objectives
To provide the participants with a conceptual and practical basis for construction of systems comprising multiple interacting concurrent activities.
See course description in Danish
Learning Objectives
- model and analyse concurrent activities using mathematical models
- explain the workings of classical synchronization and communication mechanism as well as their mutual relationships
- apply knowledge of number of common communication and coordination solutions for solving new problems
- verify correctness of concurrent algorithms using formally based verification tools
- identify relevant usage of concurrent activities within development of usual applications
- implement concurrent activities efficiently using tasks, threads and processes
- apply concurrency for utilization of modern machine architectures
- use concurrency related concepts for concise problem analysis and documentation of solutions
Course Content
Concurrent programming: Processes, synchronization, communication. Process models, atomic actions.
Safety and liveness properties. Deadlock. Verification techniques and tools.
Critical regions, semaphores, monitors, synchronous and asynchronous message passing, call mechanisms, distributed objects, tupple spaces. Concurrent data structures.
System design: Common communication patterns and algorithms. Client-server paradigm. Transactions and concurrency control. Asynchronous and task-based programming.
Teaching Method
Lectures, exercise classes, and programming laboratories.
Faculty
Remarks
The course is a specialization course within the bachelor programme in Software Technology.