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
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 (fox@berkeley.edu).
- 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.”
Grading
Grades for this course will be based on:
- Assignments: 40% (All assignments weighted equally)
- Final project: 60%