Parallelism and concurrency in software
Summary
From sensors,to smart phones,to the world's largest datacenters and supercomputers, parallelism & concurrency is ubiquitous in modern computing.There are also many forms of parallel & concurrent execution in modern platforms with varying degrees of ease of programmability,performance & efficiency.
Content
The goal of this course is to provide a deep understanding of the fundamental principles and trade-offs involved in constructing efficient parallel or concurrent software.
- Performance vs. efficiency
- Forms of parallelism
- Communication models
- Memory models
- Functional parallelism
- Domain-specific languages
- Throughput parallelism
- Data parallelism
- Distributed data parallelism
- Forms of concurrency
- Asynchronous programming
- Coroutines and futures
Learning Prerequisites
Required courses
- CS-200 Computer architecture
- CS-214 Software construction
Recommended courses
CS-202 Computer systems
Important concepts to start the course
- Programming in C/C++, Java or Scala
- Basic assembly language programming
- Basic use of tools to debug
Learning Outcomes
By the end of the course, the student must be able to:
- Construct parallel software
- Construct concurrent software
- Construct efficient software
- Design software for various platforms including CPUs, accelerators and clusters
Teaching methods
- Lectures
- Homework
- Projects
Expected student activities
- Standalone homeworks
- Projects in teams
Assessment methods
- 20% homework
- 30% projects
- 20% midterm
- 30% final
Supervision
Office hours | Yes |
Assistants | Yes |
Prerequisite for
- CS-471 Advanced multiprocessor architecture
- CS-453 Concurrent computing
- CS-451 Distributed algorithms
In the programs
- Semester: Spring
- Exam form: During the semester (summer session)
- Subject examined: Parallelism and concurrency in software
- Courses: 3 Hour(s) per week x 14 weeks
- Exercises: 1 Hour(s) per week x 14 weeks
- Lab: 2 Hour(s) per week x 14 weeks
- Type: optional
- Semester: Spring
- Exam form: During the semester (summer session)
- Subject examined: Parallelism and concurrency in software
- Courses: 3 Hour(s) per week x 14 weeks
- Exercises: 1 Hour(s) per week x 14 weeks
- Lab: 2 Hour(s) per week x 14 weeks
- Type: optional
- Semester: Spring
- Exam form: During the semester (summer session)
- Subject examined: Parallelism and concurrency in software
- Courses: 3 Hour(s) per week x 14 weeks
- Exercises: 1 Hour(s) per week x 14 weeks
- Lab: 2 Hour(s) per week x 14 weeks
- Type: optional
- Semester: Spring
- Exam form: During the semester (summer session)
- Subject examined: Parallelism and concurrency in software
- Courses: 3 Hour(s) per week x 14 weeks
- Exercises: 1 Hour(s) per week x 14 weeks
- Lab: 2 Hour(s) per week x 14 weeks
- Type: optional
- Semester: Spring
- Exam form: During the semester (summer session)
- Subject examined: Parallelism and concurrency in software
- Courses: 3 Hour(s) per week x 14 weeks
- Exercises: 1 Hour(s) per week x 14 weeks
- Lab: 2 Hour(s) per week x 14 weeks
- Type: optional