252-0268-00L  Concepts of Concurrent Computation

SemesterSpring Semester 2014
LecturersB. Meyer, S. Nanz
Periodicityyearly recurring course
Language of instructionEnglish



Courses

NumberTitleHoursLecturers
252-0268-00 VConcepts of Concurrent Computation3 hrs
Tue10:15-12:00RZ F 21 »
Wed16:15-17:00RZ F 21 »
B. Meyer, S. Nanz
252-0268-00 UConcepts of Concurrent Computation2 hrs
Wed14:15-16:00RZ F 21 »
B. Meyer, S. Nanz
252-0268-00 AConcepts of Concurrent Computation
No presence required.
1 hrsB. Meyer, S. Nanz

Catalogue data

AbstractConcurrent programming is one of the major challenges in software development. The "Concepts of Concurrent Computation" course explores important models of concurrency, with a special emphasis on concurrent object-oriented programming and process calculi.
ObjectiveAfter completing this course, students will understand the principles and techniques of concurrent programming, supporting theories allowing formal reasoning about concurrent systems, and advances in concurrent object-oriented programming.
ContentTopics include:

Overview
- Concurrent and parallel programming
- Multitasking and multiprocessing
- Shared-memory and distributed-memory multiprocessing
- Notion of process and thread
- Performance of concurrent systems

Approaches to concurrent programming
- Issues: data races, deadlock, starvation
- Synchronization algorithms
- Semaphores
- Monitors
- Java and .NET multithreading

Concurrent object-oriented programming: the SCOOP model
- Processors; handling an object
- Synchronous and asynchronous feature calls
- Design by Contract in a concurrent context
- Separate objects and entities
- Accessing separate objects; validity rules
- Synchronization: waiting, reserving, preconditions as wait conditions, Wait by Necessity
- Examples and applications

Programming approaches to concurrency
- Message-passing vs. shared-memory communication
- Language examples: Ada, Polyphonic C#, Erlang (Actors), X10, Linda, Cilk and others.
- Lock-free programming
- Software Transactional Memory

Reasoning about concurrent programs
- Properties of concurrent programs
- Temporal logic
- Process calculi: CSP, CCS
- Petri nets
- Proofs of concurrent programs
Literature- Bertrand Meyer and Sebastian Nanz: Course textbook (draft)
- Mordechai Ben-Ari: Principles of Concurrent and Distributed Programming. Prentice Hall, 2006
- Maurice Herlihy and Nir Shavit: The Art of Multiprocessor Programming. Morgan Kaufmann, 2008
- Gregory R. Andrews: Foundations of Multithreaded, Parallel, and Distributed Programming. Addison Wesley, 1999
Prerequisites / NoticeThe course's lectures are of two different kinds: the Tuesday session is a traditional lecture; the Wednesday session is devoted to seminar talks by the student participants, based on research papers related to the topics of the course. The research papers to be presented will be assigned at the start of the course.

Performance assessment

Performance assessment information (valid until the course unit is held again)
Performance assessment as a semester course
ECTS credits7 credits
ExaminersB. Meyer, S. Nanz
Typeend-of-semester examination
Language of examinationEnglish
RepetitionThe performance assessment is only offered at the end after the course unit. Repetition only possible after re-enrolling.
Additional information on mode of examinationThe assessment consists of a project (35%), a seminar talk (15%) and a written semester end exam (50%) for which no supporting material is allowed.

Learning materials

 
Main linkInformation
Only public learning materials are listed.

Groups

No information on groups available.

Restrictions

There are no additional restrictions for the registration.

Offered in

ProgrammeSectionType
Computer Science MasterFocus Elective Courses Software EngineeringWInformation
Certificate of Advanced Studies in Computer ScienceFocus Courses and ElectivesWInformation