teaching

CMSC388W: Special Topics in Computer Science: Usability of Programming Languages, Spring 2021

Which is better: Python or Java? Is using a strongly typed language worth the hassle? Is it true that dynamically-typed languages are better for prototyping work, whereas statically-typed languages are better for deployed software? These questions all relate to the relationships between languages and people.

In this special course, we will study how to design and evaluate the usability of programming languages. How can we design programming languages that empower programmers and software engineers to be more effective at achieving their goals?

We will start by studying techniques for gathering insights about users, and then we will read and discuss papers investigating major questions in the area: how do types help programmers? How can we analyze a programming language or other notation for usability?

This course is just the beginning. After taking the course, you might want to do your own language design and research projects, potentially leading to publication! I am looking for students to work with over the summer, and taking this course is great preparation.

If you are a UMD student and have questions about the course, please email me.

Detailed schedule information is in the syllabus.