Experiential Learning "Active" learning opportunities

This page collects together all of the “experiences” associated with individual modules.

In this site, experiences represent “active” learning opportunities, as opposed to readings, which represent “passive” learning opportunities. In many courses, readings and experiences together constitute the “assignments”.

Module: Getting Started

Homework Assignment #0

An ungraded assignment about installing required software

Homework Assignment #1

An ungraded assignment in which you install/run starter code

Module: Java Threads

Homework Assignment #2

An assignment in which you add concurrency to our JavaFX app

Module: Locks

Homework Assignment #3

A short pencil-and-paper assignment in which you have to reason about locks and think about what it means to write thread-safe code

Homework Assignment #4

An assignment in which you add another set of features to our JavaFX app

Module: Condition Variables

Homework Assignment #5

A pencil-and-paper assignment in which you have to reason about a thread-safe stack implemented with locks and condition variables

Homework Assignment #6

An assignment in which you empower our JavaFX app with threads for better performance

Module: Semaphores

Homework Assignment #7

A pencil-and-paper assignment in which you have to reason about a thread-safe stack implemented with semaphores

Module: The Java Concurrency Package

Homework Assignment #8

An assignment in which you enhance our JavaFX app with java.util.concurrent

Module: Data Parallelism

Homework Assignment #9

An assignment in which you implement a data-parallel image filter

Homework Assignment #10

A pencil-and-paper assignment in which you reason about parallel performance

Module: Multi-Threading in C/C++

Homework Assignment #11

An assignment in which you implement data-parallel image filters in C using OpenMP

Module: Programming for Performance

Homework Assignment #12

A pencil-and-paper assignment in which you reason about caches