This hands-on course explores a selection of techniques from Programming Languages and Human-Computer Interaction that can help us create useful, usable programming languages and programming tools. We will cover strategies for designing programming systems—e.g., need finding, formative studies, user-centered design broadly. We will also cover tools and techniques that help us build user-friendly programming systems—e.g., program synthesis, structure editors, abstraction design, program slicing. For the final project, individuals or teams will develop a usable abstraction, language, or programming tool of their own design.

The course will include a mix of formats: lecture; seminar-style discussion; small design projects and programming projects for building familiarity with key techniques; and a final project, which can be small- or medium-scale.

Course Schedule

Week 0
PL + HCI for Useful, Usable Programming Systems
Thursday 1/18/24
Week 2
Need Finding
Animating question or theme: What problem should I solve?
Week 3
Qualitative Analysis
Week 4
Formative Studies and Prototyping
Animating question or theme: What should I build, to solve my chosen problem?
Week 5
Animating question or theme: Is my solution any good?
Week 6
Cognitive Models of Programming
Animating question or theme: Understanding the programmer.
Week 7
Frontier of Usable Programming Tools
Animating question or theme: Inspiration!
Tuesday 3/5/24
Thursday 3/7/24
Week 8
Abstraction Design
Animating question or theme: What can I build, and how can I build it?
Week 9
Program Synthesis
Animating question or theme: What can I build, and how can I build it?
Tuesday 3/19/24
Week 10
Spring Break!
Tuesday 3/26/24
Thursday 3/28/24
Week 11
Program Synthesis
Animating question or theme: What can I build, and how can I build it?
Week 12
Structure Editors
Animating question or theme: What can I build, and how can I build it?
Week 13
Program Slicing + the PL Toolbox
Animating question or theme: What can I build, and how can I build it?
Week 14
Project Presentations
Tuesday 4/23/24
Project Presentations
Thursday 4/25/24
Project Presentations
Due: 4/23/24
Exam Week
Assignment: Project Writeups
Due: 5/9/24

Course Policies

Inclusion: We are committed to creating a learning environment welcoming of all students that supports a diversity of thoughts, perspectives and experiences and respects your identities and backgrounds (including race, ethnicity, nationality, gender identity, socioeconomic class, sexual orientation, language, religion, ability, and more.) To help accomplish this:

  • If your name and/or pronouns differ from those that appear in your official records, please let us know.
  • If you feel like your performance in the class is being affected by your experiences outside of class (e.g., family matters, current events), please don’t hesitate to come and talk with us. We want to be resources for you.
  • We (like many people) are still in the process of learning about diverse perspectives and identities. If something was said in class (by anyone) that made you feel uncomfortable, please talk to us about it. You may also contact the department’s Faculty Equity Advisor Prof. Fox (
  • As a participant in this class, recognize that you can be proactive about making other students feel included and respected.

If individuals are disrespectful to students, course staff, or others via course resources, they will lose access to course resources. E.g., if someone is unkind in the course channel, their account will be removed from the channel.

Accommodation policy: We honor and respect the different learning needs of our students, and are committed to ensuring you have the resources you need to succeed in our class. If you need religious or disability-related accommodations, if you have emergency medical information you wish to share with us, or if you need special arrangements in case the building must be evacuated, please share this information with us as soon as possible. You may speak with either instructor privately after class or during office hours. Also see DSP under “Resources.”


Grades for this course will be based on:

  • Assignments: 40% (All assignments weighted equally)
  • Final project: 60%


EECS Peers
( Fellow EECS grad students doing peer mentoring! EECS Peers aims to provide a private, independent, open-minded, and supportive ear and to serve as a resource to other students who are navigating issues with classes, advisors, exams, stress, and conflict.
Center for Access to Engineering Excellence (CAEE)
The Center for Access to Engineering Excellence (227 Bechtel Engineering Center; is an inclusive center that offers study spaces, nutritious snacks, and tutoring in >50 courses for Berkeley engineers and other majors across campus. The Center also offers a wide range of professional development, leadership, and wellness programs, and loans iclickers, laptops, and professional attire for interviews.
Disabled Students' Program (DSP)
The Disabled Student’s Program (260 César Chávez Student Center #4250; 510-642-0518; serves students with disabilities of all kinds. Services are individually designed and based on the specific needs of each student as identified by DSP's Specialists.
Counseling and Psychological Services
The main University Health Services Counseling and Psychological Services staff is located at the Tang Center (; 2222 Bancroft Way; 642-9494) and provides confidential assistance to students managing problems that can emerge from illness such as financial, academic, legal, family concerns, and more. To improve access for engineering students, a licensed psychologist from the Tang Center also holds walk-in appointments for confidential counseling in 241 Bechtel Engineering Center (check here for schedule:
The Care Line (PATH to Care Center)
The Care Line (510-643-2005; is a 24/7, confidential, free, campus-based resource for urgent support around sexual assault, sexual harassment, interpersonal violence, stalking, and invasion of sexual privacy. The Care Line will connect you with a confidential advocate for trauma-informed crisis support including time-sensitive information, securing urgent safety resources, and accompaniment to medical care or reporting.
Ombudsperson for Students
The Ombudsperson for Students (102 Sproul Hall; 642-5754; provides a confidential service for students involved in a University-related problem (academic or administrative), acting as a neutral complaint resolver and not as an advocate for any of the parties involved in a dispute. The Ombudsman can provide information on policies and procedures affecting students, facilitate students' contact with services able to assist in resolving the problem, and assist students in complaints concerning improper application of University policies or procedures. All matters referred to this office are held in strict confidence. The only exceptions, at the sole discretion of the Ombudsman, are cases where there appears to be imminent threat of serious harm.
UC Berkeley Food Pantry
The UC Berkeley Food Pantry (#68 Martin Luther King Student Union; aims to reduce food insecurity among students and staff at UC Berkeley, especially the lack of nutritious food. Students and staff can visit the pantry as many times as they need and take as much as they need while being mindful that it is a shared resource. The pantry operates on a self-assessed need basis; there are no eligibility requirements. The pantry is not for students and staff who need supplemental snacking food, but rather, core food support.