CS580P: Programming Models for Emerging Platforms, Fall 2009




Essentials

  • Time: MW 12:30-2PM.
  • Classroom: Appalachian Collegiate Center G014.
  • Professor: David Liu. Office hour: M W 2:30-3:30 (room G25 Engineering Building, NOT my office!).
  • TA: Chen Zhu. Office hour: T Th 1-2 (room G25). Email: czhu3@binghamton.edu.
  • Blackboard System, where lecture slides and assignments are posted.

Topics

This is an exciting period of time for the rapid change of landscapes of computation platforms. A number of previously ``high-end'' and ``research-only'' platforms have experienced the dramatic widespread use in recent years. Multi-core CPUs are swiftly adopted by PCs. A good number of sensor networks are deployed for public interests and scientific investigations. Game chips inside XBox 360, PS3, and Wii are shipped to common households. Powerful mobile phones such as iphones and Google phones are becoming extremely popular. These emerging platforms bring along new requirements and challenges for programming language design and implementation. This course investigates a wide range of state-of-the-art programming models that can potentially impact the future programming practice for these platforms. In particular, we will look into several topics in great detail:

  • programming models for multi-core CPUs
  • programming models for sensor networks
  • programming models for game chips
  • programming models for mobile phones (if we have time)

Recommended Textbooks

There are no required textbooks for the course. Some recommendations are listed below. (More will be added as the course progresses.)
  • Brian Goetz, Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes, Doug Lea, Java Concurrency in Practice. Addison-Wesley Professional, ISBN-10: 0321349601.
  • Philip Levis, David Gay, TinyOS Programming. Cambridge University Press, ISBN-13:9780521806061.

Grading

  • Project (1): 35%
  • Mid-Term Exam (1, before Thanksgiving): 25%
  • Assignments (1-3): 15%
  • Presentation (1): 15%
  • Attendance and Participation: 10%

Project

Students are expected to form groups of 2-4 people, working on one large programming project. On unusual circumstances, 1-person teams are also allowed, but they require the permission from the instructor. The topic of the project will be announced in the class.

The project will be checkpointed regularly. Grades are given on a stage-by-stage basis.

Presentation

Students are expected to form groups of 1-3 people to give presentations. Each presentation lasts around 30 minutes, followed by a 10-minute Q&A session. Each presentation will focus on a specific topic, a list of which will be given 2-3 weeks before the presentation.

One exception to the paper presentations is that you can present your own research results if they are closely related to the course. Please discuss with the instructor ahead of time.

Be a Happy CS580P Student

Before you decide to take the course, please read the following guidelines carefully:
  • The focus of the course is programming language design and implementation, not programming itself or software development. For instance, students who expect to learn writing a perfect video game might be disappointed -- we will only briefly talk about that topic, and the focus will be on how to design a good language for writing video games.
  • This is an advanced, research-oriented, graduate-level course. We will investigate 10-15 programming languages/models within a semester, many of which are very different from your everyday favorites like C/C++/Java, and some of which did not exist until 2 or 3 years ago. An adventurous, creative, and non-conformist student is expected to be happier than one only willing to learn today's standard practices in industry.
  • Pre-requisites: CS 325 (Computer Architecture) or CS 522 (Computer Architecture and Organization) or permission of the instructor. CS 571 (Programming Languages) or experience with object-oriented languages and functional languages. CS 350 (Operating Systems) or significant knowledge of concurrency.
  • This course is categorized as a large-programming course. Significant programming skills in Java or similar languages are expected. The project will require basic knowledge of compiler design (or determination to learn it within a short period of time). Students who have not taken CS 571 or equivalent should discuss with the instructor, or at least team up with someone who has. There will be an early project checkpoint in mid-September. If you have an extremely difficult time in meeting the deadline, chances are this course is probably not suitable for you.

Dateline

This dateline is being developed incrementally and iteratively. The schedules and topics will be continually updated to reflect any changes.

Day
Date
Topic
Notes
Mon
Aug 31
Project Demo I (Project Overview, Polyglot installation)
by TA, Project Iteration I Assigned
Wed
Sept 2
Project Demo II (Project Example Demo)
by TA
Mon
Sept 7
No Class
Labor Day
Wed
Sept 9
Introduction
 
Mon
Sept 14th
Compiler Basics (Project Topic)
 
Wed
Sept 16th
Multi-Core Programming Overview, Java Threads I (Lifecycle, Scheduling)
Project Iteration I Due at 11:59PM
Mon
Sept 21st
Java Threads II (Executors, Synchronization)
 
Wed
Sept 23rd
Race Avoidance, Static Object Containment (Project Topic)
Project Iteration II Assigned
Mon
Sept 28th
No Class
New York State Holiday
Wed
Sept 30th
Typechecker Writing (Project Topic)
 
Mon
Oct 5th
Atomicity (Software Transactional Memory)
 
Wed
Oct 7th
Atomicity (Lock-Based Approaches), Constraint-Based Inference (Project Topic)
Optional Project Iteration II Due at 11:59PM, Project Iteration III Assigned
Mon
Oct 12th
Futures, Polyglot Passes (Project Topic)
 
Wed
Oct 14th
OpenMP
 
Mon
Oct 19th
Cilk, MapReduce
 
Wed
Oct 21th
MPI, Erlang, Actors
Project Iteration III Due at 11:59PM
Mon
Oct 26th
nesC/TinyOS
 
Wed
Oct 28th
nesC/TinyOS (Cnt'd)
 
Mon
Nov 2nd
Macro-programming languages (TinyDB, TAG, Regiment)
 
Wed
Nov 4th
Regiment (Cnt'd)
 
Mon
Nov 9th
Flask
 
Wed
Nov 11th
Mate
 
Mon
Nov 16th
TOSThreads (Saurabh, Himanshu)
DSN (Sandesh, Ashwin, Siddesh)
 
Wed
Nov 18th
Pleiades (Sahithi, Vijay, Avinash)
Eon (Sourabh, Mahesh)
 
Mon
Nov 23rd
Mid-Term
held in class, 12-2
Wed
Nov 25th
No Class
Thanksgiving, Recess at 1PM, 0.5 hour moves to Nov 23rd
Mon
Nov 30th
 
 
Wed
Dec 2nd
 
 
Mon
Dec 7th
 
 
Wed
Dec 9th
Concluding Remarks
 

Useful Links

Academic Honesty