CS476/576: Programming Models for Emerging Platforms, Spring 2017
The landscape of computation platforms has changed dramatically in recent years. Android-powered smartphones are widely available to millions of users. New gadgets such as Google Glass, Leap Motion, and Oculus Rift promote interesting human-computer interactions, with rich programmability support. Multi-core CPUs, and CUDA-enabled GPUs are commonly deployed in computer systems. Computing devices such as Unmanned Aerial Vehicles (UAVs) are on the horizon. Programming on these emerging platforms remains a challenging task. This course introduces a number of state-of-the-art programming models on these platforms, and further explores the frontier of next-generation programming language design that may potentially impact the future programming practice for emerging platforms. In particular, the course investigates Android programming, multi-core programming, GPGPU programming, and UAV programming, with additional presentations on other platforms on the rise. Applications of these programming models range from high-performance computing, games, real-time systems, cyber-physical systems, to energy-conscious systems.
An adventurous, creative, and non-conformist student is expected to be happier than one only willing to learn today's standard practices verbatim. If you have asked yourself "what will the programming practices look like in ten years?" this course might help you form educated guesses by offering a forward-looking glimpse.
Recommended TextbooksThere are no required textbooks for the course. Some recommendations are listed below. (More will be added as the course progresses.)