Existing literature on concurrent programming either lacks sufficient detail on how to apply the material to write correct and performant concurrent programs, or is at a level that is unsuitable as an introduction to concurrent programming. This poster introduces the open course book Introduction to Concurrent Programming in C that aims to address this gap by helping students build an accurate model of how concurrent programs behave through examples and visualizations in Progvis, and by showing how to properly synchronize programs through examples and exercises that use Progvis' model checker to provide automatic feedback.