Introduction to the Sketch Program Synthesis System

Warning: this is an old version of the synthesizer. Please download the latest version from the bit-bucket site

Instructor: Armando Solar-Lezama   

Location: 4-149

Course Sessions: Mon Jan 12 - Wed Jan 14 1:30 - 3:30 PM
Grand Competition: Thu Jan 15 1:30 - 5 PM

Wouldn't it be great if programs could write themselves? Or at least help with the difficult parts of the code? Sketching is a new program synthesis technology that can help you write complicated code by deriving many of the tricky details for you. This short  3-day course will give you an introduction to this exciting new technology.

This short course will serve as a quick introduction to this exciting technology. The first session will teach the basics of sketching, and the SKETCH synthesis tool through a series of fun exercises and examples. The next two sessions will turn you into an expert user; you will learn about the technology behind sketching, and the finer points of turning your insight into a sketch and using the synthesizer to derive the details for you. Finally the last session will put your new skills to the test through a programming competition where you will have the chance to win some cool prizes.

Experience Requirements: To get the most from the course, participants should have programming experience and basic knowledge of algorithms and linked datastructures. 

Equipment Requirements: Participants should bring their own laptop. Before the first session, participants should install the SKETCH synthesis system version 1.3.

Downloading the Synthesizer:

Version Last Updated Platform link
1.3.0 01/09/09 5:56 PM PST * All (source) sketch-1.3.0.tar.gz
1.3.0 01/09/09 6:35 AM PST Windows (binary)
* At this time a very minor change was made to the source distribution to fix a compilation problem in one platform.

SKETCH requires gcc (4.2 should be compatible), JDK (not just JRE, you need to compile .java files). If you are using the windows version, you also need to have cygwin installed in your machine.
The build process for the source distribution is very standard; just run:
 ./configure && make && make install                (You may need to use sudo to run make install).
For the windows distribution, follow the instructions in the INSTALL file.

Schedule of sessions:

Date Topics covered in class Assignment Slides
Mon Jan 12
  • The basics of Sketching and the SKETCH Synthesis tool. (PDF, PPT)
Simple sketching exercises
Exercise 1.
Exercise 2.
Tue Jan 13
  • The technology behind sketching.  (PDF, PPT)
  • Advanced use of the SKETCH synthesizer.
Open programming exercise  
Wed Jan 14
  • More advanced Sketching techniques
  • Sketching problems worked in class
  • Class discussion on the shortcomings of the current technology and directions for future research
Thu Jan 15

Grand Sketching Competition