CSEP 590 Spring 2017 - Programming Systems (PMP)
- Welcome to Spring Quarter!
Course DescriptionThis course will conver a selection of topics related to the implementation of programming systems (compilers, interpreters, and runtime systems) for modern languages and architectures. We will start with a quick overview of compilers and programming systems, since I expect students will have a wide variety of backgrounds. I expect this to take roughly the first two lectures. After that, we will switch to more of a seminar format. There will be a weekly topic with assigned readings that we will discuss in class. For the first few weeks, I will prepare some material on the weekly topic to open the class and get the discussion started. In later classes, students will present material and help facilitate discussions. Topics to be covered will be driven by student and instructor interest, but may include: automatic vectorization and parallelization, code generation, optimization passes, interpreted languages, garbage collection, and just-in-time compilation.
Course InformationLectures: Tuesdays 6:30-9:20 pm, Johnson 111
Instructor: Michael ("Mike") Ringenburg, miker[at]cs, office hours by arrangement
Class discussion board: click here
Class email list: csep590b_sp17[at]uw...
Email list archives: click here
HomeworksDropbox: Click here
Gradebook: View your scores here
- Homework #1: Homework 1. Due: Tuesday, April 4 at 6:30pm. Submit via the dropbox link above.
- Homework #2: Homework 2. Due: Tuesday, April 11 at 6:30pm. Submit via the dropbox link above.
- Homework #3: Homework 3. Due: Tuesday, April 18 at 6:30pm. Submit via the dropbox link above.
- Homework #4: Homework 4. Due: Tuesday, April 25 at 6:30pm. Submit via the dropbox link above.
- Week 5: No homework - work on your presentation research!
- Homework #5: Homework 5. Due: Friday, June 2 at 11:59pm (last day of quarter). Submit via the dropbox link above.
Every student will give a presentation about a programming systems related topic during class this quarter. We will allocate the last 3 class sessions to this. Presentations can be about a programming-systems related project you've done at work (or for fun!), or you may choose to research and present on a topic of interest. We will allocate 25 minutes for each presentation. Plan on 15-20 minutes for presenting, and 5-10 minutes for questions and discussion.
If you would be willing to present a week earlier, please let me know (it will make scheduling much easier if we can get one or two early presentations).
A list of possible topic ideas can be found here. Feel free to suggest your own ideas.
Presentation schedule, and links to presentations that were shared:
- Presentation schedule and shared slides (UW ID required)
This tentative schedule will be updated as the quarter progresses. Slides will be posted as they become available. Readings should be done before the associated discussion (in most cases, short reviews of these papers will be due the day before class as part of your homework).
- Class #1 (March 28, 2017)
Topic(s): Introduction & course administratrivia; fundamentals of compilers and programming systems, part I.
Slides: PDF here
- Class #2 (April 4, 2017)
Topic(s): Fundamentals of compilers and programming systems, part II.
Readings: See homework 1
Slides: PDF here
- Class #3 (April 11, 2017)
Topic(s): Compiler backend advanced topics: Register allocation; SSA form
Readings: “Improvements to Graph Coloring Register Allocation”, by Briggs, Cooper, and Torczon
- Class #4 (April 18, 2017)
Topic(s): Programming systems for distributed data analytics
- Useful background, if you haven't read it already: MapReduce: Simplified Data Processing on Large Clusters, by Jeffrey Dean and Sanjay Ghemawat.
- For class discussion and review: Making Sense of Performance in Data Analytics Frameworks, by Kay Ousterhout, Ryan Rasti, Sylvia Ratnasamy, Scott Shenker, and Byung-Gon Chun
- Class #5 (April 25, 2017)
Topic(s): Garbage collection
Readings: “A Unified Theory of Garbage Collection”, by David F. Bacon, Perry Cheng, and V.T. Rajan
Slides: Lecture 5 slides
- Class #6 (May 2, 2017)
Topic(s): No class (Mike away)
- Class #7 (May 9, 2017)
Topic(s): Potpourri: Query Optimization; Just-in-time compilation; Loop Parallelization; Type Checking
Readings: Some further reading on today's topics:
- Catalyst query optimizer: Deep Dive into Spark SQL’s Catalyst Optimizer
- Loop parallelization: Optimal Loop Parallelization, by Alexander Aiken and Alexandru Nicolau
- Type checking:
- Practical pluggable types for Java, by Matthew M. Papi, Mahmood Ali, Telmo Luis Correa Jr., Jeff H. Perkins, and Michael D. Ernst
- Chapter 4 of the Java 8 specification (Types, Values, and Variables)
- JVM and JIT:
- Class #8 (May 16, 2017)
Topic(s): Student-led topics I. See schedule and links to shared slides here (UW id required).
- Class #9 (May 23, 2017)
Topic(s): Student-led topics II. See schedule and links to shared slides here (UW id required).
- Class #10 (May 30, 2017)
Topic(s): Student-led topics III. See schedule and links to shared slides here (UW id required).