CSEP 590 Spring 2017 - Programming Systems (PMP)

News

  • Welcome to Spring Quarter!

Course Description

This 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 Information

Lectures: 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

Homeworks

Dropbox: 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!

Student Presentations

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.

Initial draft presentation schedule:

Lecture Schedule

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.
    Readings: None
    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
    Slides:

  • Class #4 (April 18, 2017)
    Topic(s): Programming systems for distributed data analytics
    Readings: Slides: Lecture 4 slides

  • 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: Coming soon

  • 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; others?
    Readings: Coming soon
    Slides: Coming soon

  • Class #8 (May 16, 2017)
    Topic(s): Student-led topics I. See schedule here

  • Class #9 (May 23, 2017)
    Topic(s): Student-led topics II. See schedule here

  • Class #10 (May 30, 2017)
    Topic(s): Student-led topics III. See schedule here