Skip to main content

Concurrent ProgrammingLaajuus (5 cr)

Code: TT00CD97

Credits

5 op

Teaching language

  • English

Responsible person

  • Jani Immonen

Objective

In the concurrent programming course, you learn about topics such as threads, synchronization, inter-process communication, parallel programming, and distributed systems. You develop skills in designing, implementing, and debugging concurrent programs and discover techniques for improving performance and avoiding common pitfalls. Additionally, you gain knowledge about concurrency models, locking, scheduling, message passing, and concurrency testing. The course also offers hands-on programming assignments, which allows you to develop and analyze concurrent programs using various programming languages and tools.

EUR-ACE Competences:
Knowledge and Understanding
Engineering practice
Communication and team-working
Multidisciplinary competences
Engineering practice
Investigations and information retrieval

Learning outcomes:
Upon completion of the concurrent programming course, you are able to:
- Design, implement, and debug concurrent programs that make efficient use of modern computer hardware
- Understand and apply concepts related to threads, synchronization, inter-process communication, parallel programming, and distributed systems
- Identify and avoid common pitfalls of concurrent programming, such as race conditions and deadlocks
- Evaluate and compare different concurrency models, locking mechanisms, scheduling strategies, and message passing techniques and
- Keep up-to-date with the latest trends and developments in the field of concurrent programming, and continue to learn and experiment with new tools and techniques.

Content

In this course, you will learn about threads, synchronization, inter-process communication, parallel programming, and distributed systems. You will develop skills in designing, implementing, and debugging concurrent programs, and discover techniques for improving performance and avoiding common pitfalls. Additionally, you will gain knowledge about concurrency models, locking, scheduling, message passing, and concurrency testing. The course also offers hands-on programming assignments, allowing you to develop and analyze concurrent programs using various programming languages and tools.

The course covers concurrent programming concepts and methods. The covered topics are modern threading API, synchronization, mutexes, dead locks, race conditions, and best practices in concurrent and parallel programming. The student is aware of the varying parallelization mechanisms.

Qualifications

Basics in programming, Data structures and algorithms

Assessment criteria, satisfactory (1)

Sufficient (1): You are familiar with the basic topics discussed during the course. You are able to write only the most basic multi-threaded programs with assistance.

Satisfactory (2): You understand the most basic topics discussed during the course, however, you struggle to utilize this knowledge. You are not able to search for relevant information independently. You are able to write simple multi-threaded programs with assistance.

Assessment criteria, good (3)

Good (3): You understand the most important topics discussed during the course and are able to utilize this knowledge in the most basic cases. You are able to utilize information about the discussed topics. You are able to write simple multi-threaded programs.

Very good (4): You understand the most important topics discussed during the course and are able to utilize this knowledge in most common cases. You are able to search and understand information about discussed topics. You are able to write multi-threaded programs.

Assessment criteria, excellent (5)

Excellent (5): You understand all topics discussed during the course and are able to use them in an innovative manner even in challenging situations. You are able to search and utilize information about discussed topics independently. You are able to write complex multi-threaded programs.