• If you are citizen of an European Union member nation, you may not use this service unless you are at least 16 years old.

  • Whenever you search in PBworks or on the Web, Dokkio Sidebar (from the makers of PBworks) will run the same search in your Drive, Dropbox, OneDrive, Gmail, Slack, and browsed web pages. Now you can find what you're looking for wherever it lives. Try Dokkio Sidebar for free.



Page history last edited by Joel Galenson 13 years, 5 months ago

CS164: Hack your language!


We will design and implement our own programming language and language extensions. To do so, we will learn about foundations of programming languages and implementation techniques. 


Announcements: subscribe to the RSS feed of this page or check it regularly.

Lecture, Sections, Projects: subscribing to changes on this page will tell you when projects, slides and other materials have been posted.

Calendar: includes office hours and due dates (a public Google calendar).

Newsgroup: ask your questions here.  For instructions on how to view the newsgroup, see http://inst.eecs.berkeley.edu/connecting.html#news.


Instructors: Ras Bodik and Joel Galenson.  Contact info and office hours




     First Midterm: Oct 20

     Second Midterm: Dec 3 (80 minutes)

     Final Project Demo and Posters: Dec 19, 12:30-3:30, Soda Hall, 6th floor hallway




  • Project 1: intro to web programming

    • Metaprogramming, regexes, DOM, event-driven pming
  • Project 2: build your parser and write applications (3 weeks)

    • google calc to AST; HTML to DOM
    • simple DOM layout ==> gives us a scriptless browser
  • Project 3: design and implement a small language (3 weeks)

    • Dynamically typed, a’la Python, Scheme, Ruby, Lua, …
    • add some constructs for extending the language
    • application: embed a simple DSL
  • Project 4: static analysis, static typing and compilation (2 wks)

    • compile rather than interpret; needs static analysis for that
  • Project 5: your own language (4 weeks)

    • or implement what we propose


Approximate grading breakdown:


Projects: 50% (5, 10, 10, 10, 15)

Homeworks: 15%

Exams: 35% (the two midterms will be weighed equally)


This scale may well be changed, but it hopefully gives an approximate idea of how grades will be calculated.


The weights currently on glookup do not reflect the various weights of the assignments.  Specifically, the extra credit will be worth more than a tiny fraction of the projects.


Other useful links:


For questions on the waitlist, email Michael-David Sasson (msasson@cs.berkeley.edu).


Roster: students taking the course (requires CalnetId login)   


Comments (0)

You don't have permission to comment on this page.