CS476/576: Programming Models for Emerging Platforms, Spring 2017


  • Time: T Th 4:25-5:50PM
  • Classroom: SL 210
  • Professor: David Liu. Office hours:
    • Tuesdays, 3:50-4:20, Q3
    • Tuesdays, 5:50-6:20, SL 210
    • Thursdays, 3:50-4:20, Q3
    • Thursdays, 5:50-6:20, SL 210
  • TAs: Sonali Waghmare and John Weachock. Office hours: to be announced in class
  • Blackboard System, where lecture slides and assignments are posted.


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 Textbooks

There are no required textbooks for the course. Some recommendations are listed below. (More will be added as the course progresses.)
  • Herlihy, Shavit, The Art of Multiprocessor Programming. Morgan Kaufmann. ISBN-13: 978-0123705914.
  • Sanders, Kandrot, CUDA by Example: An Introduction to General-Purpose GPU Programming. Addison-Wesley Professional, ISBN-13: 978-0131387683.
  • Mednieks, Dornin, Meike, Nakamura, Programming Android: Java Programming for the New Generation of Mobile Devices. O'Reilly Media, ISBN-13: 978-1449316648.
  • Cinar, Android Apps with Eclipse. Apress, ISBN-13: 978-1430244349.


  • Project, 40%
  • Assignment, 20%
  • Presentation, 15%
  • Final Exam, 20%
  • Attendance, 5%

Useful Links

Academic Honesty