CEN 328 — PROGRAMMING LANGUAGES I | Brussels College
Course Syllabus

PROGRAMMING LANGUAGES I

CEN 328 — Computer Engineering
Code
CEN 328
Type
B
ECTS
6
Category
Elective
Course Description

-

Course Objectives

Students will demonstrate an understanding of the main models for parallel hardware and parallel software; and will apply techniques for decomposing problems into smaller tasks and assigning them into computing units. To know the basic constructs for building parallel programs with Java multi-threading, POSIX threads, OpenMP, MPI.

Key Concepts
  1. Parallel programming design principles
  2. Shared-memory parallel programming
  3. Distributed-memory parallel programming
  4. Java multithreading
  5. POSIX threads
  6. OpenMP parallel programming
  7. MPI parallel programming
14-Week Outline
WeekTopic
1Introduction and motivation for parallel programming.
2Parallel hardware. Flynn's taxonomy.
3Parallel software. Performance metrics.
4Algorithms and constructs for collective communication.
5Analytical modeling of parallel programs.
6Shared-memory parallel programming (in POSIX and OpenMP). Threads, their life cycles.
7Critical sections, race conditions and thread synchronization.
8Midterm exam.
9Distributed memory programming (in MPI). Principles of message passing, send and receive operations.
10Overlapping communication and computation, collective operations.
11Parallel programming approach on dense matrix algorithms.
12Parallel sorting algorithms.
13Parallel graph algorithms.
14An overview of state-of-the-art applications of parallel programming.
Learning Outcomes
  1. To know the fundamental parallel architecture models.
  2. To know and apply the principles of parallel algorithm design.
  3. To design and implement programs in shared-memory programming model using POSIX threads, OpenMP, Java multi-threading etc.
  4. To design and implement programs in distributed-memory programming model using MPI .
  5. To know and be able to apply parallel approaches on significant problems like dense matrix operations, sorting, graphs etc.
Assessment Methods
Method% EachQuantity
Homework7.52
Midterm Exam(s)251
Presentation51
Project101
Final Exam401
Attendance5
Recommended Textbooks

"An Introduction to Parallel Programming", Peter Pacheco "An introduction to parallel computing" (2nd edition) Ananth Grama , Vipin Kumar, George Karypis, Anshul Gupta

Scroll