B-Pro
Compendium for Spiral Bilingual Programming

Course Materials

Topic #1: Review of prerequisites

Homework designed to accommodate extended coverage of multithreading

The course increased emphasis on multithreading which required an extra week of course work. Consequently, to accommodate this extra week, the first week that was reserved for review of pertinent computer architecture concepts was coverted into a comprehensive Homework #1 involving extensive literature review. Furthermore, the lecture session on introduction to Linux was substituted with a comprehensive instructor-guided laboratory exercise Exercise #2.
The following laboratory exercises should be performed to ensure familiarity with using the Linux server reserved for this course.

Topic #2: C++11 STL containers & algorithms

Introduction to containers, iterators, and algorithms

This topic's lecture material introduces C++11 STL containsers and STL algorithms for performing various standard problem solving operations.
The following laboratory exercises should be performed to ensure familiarity with this topic.

Topic #3: Concurrency and Parallelism

Core Parallel and Distributed Computing (PDC) topics

This topic provides the core coverage of various concurrency and parallelism topics including:
  • Data vs Task Parallelism
  • Race conditions
  • C++11 threads
  • Producer-Consumer model
  • Monitors and the std::condition_variable class
  • Inter-thread communication using std::future
  • Using std::async and std::promise
  • Using std::atomic
The following laboratory exercises should be performed to gain experience PDC concepts and acquire skills required to effectively apply the concepts.
The following homework assignments should be performed to gain experience PDC concepts and acquire skills required to effectively apply the concepts.