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
|