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
- Know what
volatile
means, and why we may need it.
- Do exercise 28 of Chapter 3.
- Java Memory Model:
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.