CS580P: Programming Models for Emerging Platforms, Spring 2009




Essentials

  • Time: T Th 1:15-2:40PM.
  • Classroom: Student Services Wing 327.
  • Professor: David Liu. Office hour: T Th 3:15-4:15 (room G25 Engineering Building, NOT my office!).
  • TA: Sapna Gursahani. Office hour: M W 11-12 (room T5). Email: sgursah1@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. 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

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.

Grading

  • Project (1): 35%
  • Mid-Term Exam (1, in late April or early May): 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. Students who have not taken CS 571 or equivalent should discuss with the instructor, or at least team up with someone who has.

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
Tue
Jan 27th
Introduction
Thur
Jan 29th
POSIX Multi-Processing
 
Tue
Feb 3rd
IPC (Signals, Pipes, Message Queues)
 
Thur
Feb 5th
IPC (Semaphores, Shared Memory), pThreads (Lifecycle Support)
Project Iteration I Assigned
Tue
Feb 10th
pThreads (Conditonal Wait), OpenMP
 
Thur
Feb 12th
OpenMP (Cont'd)
 
Tue
Feb 17th
Project (Demo Session I)
 
Thur
Feb 19th
Project (Demo Session II)
Project Iteration I Due Feb 20th 11:59PM
Tue
Feb 24th
Java Threads: Lifecycle Support
 
Thur
Feb 26th
Java Threads: Executor Framework, Synchronized Blocks
 
Tue
Mar 3rd
Java Threads: java.util.concurrent Library (CyclicBarrier, Exchange, CountDownLatch), Race Avoidance
 
Thur
Mar 5th
Atomicity (Software Transactional Memory)
Project Iteraction II Assigned
Tue
Mar 10th
Atomicity (Lock-Based Approaches)
 
Thur
Mar 12th
Actor languages, Erlang Concurrency
Project Iteration II Due Mar 13th 11:59PM
Tue
Mar 17th
Cilk, Futures
Project Iteration III Assigned
Thur
Mar 19th
MPI   (Aditya)
Fortress   (Linyi)
Student Presentations
Tue
Mar 24th
TBB   (Zhe, Shunfei)
Kilim (Barbara, Lenny)
Student Presentations
Thur
Mar 26th
TinyOS, nesC (component model)
 
Tue
Mar 31st
nesC (atomicity, active messages)
 
Thur
Apr 2nd
Mate
Project Iteration III Due Apr 3rd 11:59PM
Optional Project Iteration IV Assigned
Project Iteration V Assigned (not due until final demo)
Tue
Apr 7th
No Class
Spring Recess
Thur
Apr 9th
No Class
Spring Recess
Tue
Apr 14th
Flask
 
Thur
Apr 16th
TinyDB, TML (Saurabh, Rishab)
Student Presentation (second half)
Assignment Given
Tue
Apr 21st
Agilla (Suhasini, Jigar)
Regiment (Yao, Chen, Ming)
Student Presentations
Thur
Apr 23rd
Eon (Minjun), XBox Programming with XNA
Student Presentation (first half)
Optional Project Iteration IV Due Apr 24th 11:59PM
Tue
Apr 28th
Exam Review, XNA (Cont'd), Cg (Michael)
Student Presentation (second half)
Assignment Due the Previous Day 11:59PM
Tue
Apr 28th
Java Memory Model (Apoorva, Vinit)
Student Presentation (4:30PM, not in class)
Thur
Apr 30th
GPU Memory Model and GPGPU
mid-term 1:15PM-3:15PM on May 2nd, Saturday
Tue
May 5th
Accelerators (Niranjan, Rajkumar)
CUDA Programming (Sagar, Ankit)
Student Presentations
Thur
May 7th
BSGP (Uday, Yash, Abha), Concluding Remarks
Student Presentation (first half)
Project Demos on May 11 (or late April upon request)

Useful Links

Academic Honesty