CS 535 Multicore Programming, Fall 2016

Lecture Dates

  • 30.09.2016 (Friday)
  • 08.10.2016 (Saturday)
  • 21.10.2016 (Friday - Exam 1)
  • 19.11.2016 (Saturday)
  • 24.12.2016 (Saturday)
  • 14.01.2017 (Saturday - Exam 2 & Report presentations)

Topics

Course Intro

Introduction

Using Threads in Java

  • Read Appendix Section A.1 and A.2. [Slides] [Code]
  • As an exercise, implement and run the various correct/incorrect versions of the CallQueue example.
  • Do exercise 1 of Chapter 1 (i.e. Dining philosophers). A starting point for the code is given here.

Mutual Exclusion

  • Read Chapter 2. [Slides]
  • Do exercises 11, 12, 15, and 18 of Chapter 2.

Hardware Basics

  • Read Appendix B. [Slides]
  • Do exercises 219-224 of Appendix B.

The Power of Primitive Synchronization Operations

  • Chapter 5: “compareAndSet() is the king of all wild things.”

Monitors and Blocking Synchronization

  • Read Chapter 8.
  • Do exercises 93, 95, 96, and 97 of Chapter 8.

Concurrent Objects

Spin Locks and Contention

  • Read Chapter 7 (skip Sections 7.6, 7.7, 7.8). [Slides]
  • Do exercises 85 and 91 of Chapter 7.

Linked Lists

  • Read Chapter 9 [Slides]
  • Do exercises 104, 105, and 106 of Chapter 9.

Queues

  • Read Chapter 10 (skip Section 10.7) [Slides]
  • Do exercises 121 and 122 of Chapter 10.

Stacks

  • Read Chapter 11 [Slides]
  • Do exercises 126, 127, 128, 130, 131, 132, and 133 of Chapter 11.

Futures, Scheduling, and Work Distribution

  • Read Chapter 16 (Skip Section 16.5) [Slides]
  • Do exercises 185-191 of Chapter 16.