Archived class announcement. You want the actual class page.
This is a new class. Ideally, we will have around 16--20 students, evenly split between undergraduate/graduate students.
This class studies recent computer science techniques that let computers write programs. At the end of this course, you will learn to write programs that write programs. Consider the examples below.
What if you could just show computers examples of how inputs get tranformed into outputs and let them write the program?
This is programming by example, a notable example of which exists in Excel 2013 as the FlashFill feature (here's another video on YouTube).
There's tremendous interest in applying these techniques to data wrangling (i.e. getting data into shape for analysis using data science techniques), which could simplify many repetitive tasks for analyzing data.
Can we write less code? Could we let code with "holes" in it that are then filled in by the computer? This is the premise of sketching.
This course will study applications in computers systems for automatic program synthesis techniques like the ones listed above.
There is no real textbook for these techniques yet, so this is a course that requires:
This is a cooperative class -- our collective efforts will be necessary to understanding these advanced techniques.
Working in groups of up to 4, students will create up to 3 projects over the course of the semester.
The prerequisites CSC254 and CSC255 are strongly recommended (but not mandatory). Knowledge of techniques from logic and AI is very useful. I prefer teams of students with different skillsets -- e.g. one with 254, one with 255, one with AI, a grad student, etc.
Sign up, or drop in to my office (WH 3409) to ask questions