Concurrent Programming

« Return

Objectives

The main objectives of the Course are to give students enough knowledge and skills to program concurrent applications.
After successful course completion students should be able to:
- Understand the theoretical concepts related to concurrent and parallel programming
- Understand the gains, benefits and limitations from the use of concurrent programming
- Understand, compare and evaluate various concurrent programming models
- Evaluate the applicability and apply multiple concurrent programming technologies
- Apply the concurrent programming technologies in the development of applications

Program

Parallelism models (bit, instruction, data, task)
Parallel programming vs concurrent programming
Concurrency models
Multithreading programming
Data access syncronization
Funcional Programming
Asycrounous programming
MapReduce

Teaching Methodologies

The teaching methodologies will promote learning based on problem solving and projects, reinforcing the practical component, active learning, autonomous work and student accountability.
The assessment model incorporates elements of continuous assessment, supported by active learning (phased projects and reports) with the aim to significantly reduce the weight of assessment by exams.
Evaluation:
- Exam (50%)
- The project will contribute with the following weights:
- Intermediate assignment (20 %)
- Final Assignment (20%)
- Report (10%)

Bibliography

Seven Concurrency Models in Seven Weeks, Paul Butcher, 2014, The Pragmatic Programmers;
Using Asyncio in Python: Understanding Python's Asynchronous Programming Features, Caleb Hattingh, 2018, O'Reilly Media, Inc.;
Hadoop: The Definitive Guide, 4th Edition, Tom White, 2015, O'Reilly Media, Inc. ; Other technical reports and scientific papers, , ,

Code

01061540

ECTS Credits

3

Classes

  • Práticas e Laboratórios - 14 hours
  • Teóricas - 14 hours

Evaluation Methodology

  • Exam: 50%
  • Final Assignment: 20%
  • Intermediate assignment: 20%
  • Report: 10%