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
|