This four-hour course covers knowledge of programs and programming techniques used in building concurrent systems including multi-core architectures, concurrency and synchronization issues, and programming tactics with Java threads and Scala Actor and Python Coroutine models for both shared memory and message passing systems.