Go to:
Logótipo
You are in:: Start > CC3040

Concurrent Programming

Code: CC3040     Acronym: CC3040

Keywords
Classification Keyword
OFICIAL Computer Science

Instance: 2022/2023 - 2S Ícone do Moodle

Active? Yes
Responsible unit: Department of Computer Science
Course/CS Responsible: Bachelor in Computer Science

Cycles of Study/Courses

Acronym No. of Students Study Plan Curricular Years Credits UCN Credits ECTS Contact hours Total Time
L:CC 31 study plan from 2021/22 3 - 6 56 162
L:IACD 0 study plan from 2021/22 3 - 6 56 162
Mais informaçõesLast updated on 2023-02-15.

Fields changed: Mandatory literature, Componentes de Avaliação e Ocupação

Teaching language

Suitable for English-speaking students

Objectives

Introduce students to the fundamental theoretic and practical principals of concurrency, with emphasis on the correctness, design and implementation of models of concurrent computation using shared memory architectures. 

Learning outcomes and competences

At the end of the course, students are expected to: 

  • understand the fundamentals of concurrency, the key issues related with the execution of concurrent programs and the specificities of modern shared memory architectures which are relevant to the performance of concurrent programs.
  • be able to apply the theoretical principles which guide a good and correct design of a concurrent program, with particular emphasis on the concepts and formal aspects of synchronization.
  • know the main synchronization primitives/libraries for the development of concurrent programs and be able to model and implement concurrent data structures, programs and/or applications correctly and efficiently by using primitives/libraries of modern programming languages for shared memory programming using processes and/or threads.

Working method

Presencial

Pre-requirements (prior knowledge) and co-requirements (common knowledge)

Computational logic and operation systems.

Program

 


  • Basic concepts: different types of architectures and concurrent applications. Concurrency as an abstraction of parallelism. Distinction between concurrency and parallelism; sequential and concurrent programs; sequential, concurrent, parallel and distributed programming. Processes.

  • Introduction to modeling: abstraction, specification and modeling of sequential and concurrent  systems. Labelled transition systems (LTS): states, atomic actions, behaviour and equivalence. Basic concepts of a process algebra: event prefix, choice, parallel composition and guards. Synchronous and asynchronous models.  Interleaving. Shared atomic actions. Correction properties: safety, liveness and fairness.

  • Principles of synchronization: distinction between communication and synchronization; competition and cooperation. Atomic operations in hardware and software. The critical region problem. Starvation versus deadlock. Requirements for the occurrence of deadlocks. Priority inversion. Classical problems of synchronization.

  • Synchronization primitives: locks, semaphores, monitors and barriers.

  • Programming with processes and threads: distinction between processes and threads. Main advantages and difficulties of using multithreaded processes. User threads versus kernel threads. Concurrent programming based on:(i) processes with advanced memory mapping techniques; (ii)  multithreaded processes using libraries of a current programming language.

Mandatory literature

Herlihy Maurice; The art of multiprocessor programming. ISBN: 9780123705914
Aceto Luca 070; Reactive systems. ISBN: 978-0-521-87546-2
Joe Armstrong; Concurrent programming in ERLANG. ISBN: 9780135083017

Complementary Bibliography

Michel Raynal.; Concurrent Programming: Algorithms, Principles and Foundations. , Springer, 2012
Roberto Gorrieri, Cristian Versari; Introduction to Concurrency Theory, Springer, 2015
Ben-Ari M. 1948-; Principles of concurrent and distributed programming. ISBN: 9780321312839 pbk
Gregory R. Andrews; Foundations of Multithreaded, Parallel, and Distributed Programming., 2000
R. Milner; Communication and concurrency. ISBN: 0-13-115007-3

Teaching methods and learning activities

Theoretical classes of exposition of the topics of the program and practical laboratory classes for demonstration and development of programs. Transition system simulators or state machines will be used for modeling.

Evaluation Type

Distributed evaluation without final exam

Assessment Components

designation Weight (%)
Trabalho laboratorial 40,00
Teste 60,00
Total: 100,00

Amount of time allocated to each course unit

designation Time (hours)
Estudo autónomo 56,00
Frequência das aulas 56,00
Elaboração de projeto 50,00
Total: 162,00

Eligibility for exams

Students must attend at least 75% of the pratical classes to be admitted to the exams.

6/20 minimum score in each test.

Calculation formula of final grade

The final grade (NF) is obtained by weighting the partial assessment grades as follows:
NF = 4 * CW1 + 4 * CW2 + 6 * Test1 + 6 * Test2
Where:
CW1 = Course work 1
CW2 = Course work 2
Test1 = First test
Test2 = Second test


Recommend this page Top
Copyright 1996-2024 © Faculdade de Ciências da Universidade do Porto  I Terms and Conditions  I Acessibility  I Index A-Z  I Guest Book
Page created on: 2024-10-06 at 19:17:18 | Acceptable Use Policy | Data Protection Policy | Complaint Portal