CS 584: Human Factors of Programming Languages, Fall 2013

Instructor: Dr. Burnett
Office: KEC 3051
E-Mail: burnett at eecs dot oregonstate dot edu
Dr. Burnett's Office Hours are listed on my home page

Course Objectives

CS 584, Human Factors of Programming Languages, is a four-credit course for graduate students. Programming languages today have been designed primarily with machine efficiency in mind, with little attention given to the efficiency of the human doing the programming. Since labor costs far exceed machine costs in software development, this past way of designing programming languages is no longer appropriate. This course presents basic principles and evaluation methods for designing and evaluating programming languages that emphasize human productivity and problem solving.

The theme for this term is "Consumer Programming Languages/Environments". Students will each pick their own "consumer", whether it be a particular professional programmer, a business owner doing their own web applications, a school teacher setting up educational simulations, or whatever. This consumer will motivate (almost) everything the student does all term. Finally, by the end of the term, the student will present a design of a (portion of) a programming language or programming tool/environment for this consumer.

The course will focus on the following topics, drawing from both emerging research and from fundamentals established over the last 20+ years. Therefore, students should come away with a fundamental understanding of:


Your grade will be computed as follows:


Graduate standing in CS and interest in programming language design issues, or permission of the instructor. Senior undergraduates who are interested in taking this course as an elective should discuss this with Dr. Burnett during her office hours.


The course is offered only every second year at most.

Education Methods

This is not a lecture-oriented class. I will do some lectures, but the class is very active-learning based. Thus, it will be quite critique-oriented, with student presentations and analyses regarding research papers and with a strong element of group critiques as work begins to emerge. No textbook -- we will be reading papers instead. No programming is expected, except a little of it might come in handy in the final project. Students should approach the course with the attitude that they get out of it what they put into it.

Tentative Schedule (subject to change)

An Overview of Papers We Might Cover

We will ultimately cover a subset of a superset of this group, but it gives you an idea of the kinds of papers we're covering. We'll probably read 6-7 of the Foundations papers, and the rest will be a fairly equal division between the remaining two classifications.

How to obtain these papers: Unless otherwise specified, you can obtain them from the ACM Digital Library or the IEEE Digital Library. OSU has subscriptions to both, so all you have to do is (1) be using an OSU IP# and you can just go to the ACM Digital Library or IEEE Xplore directly, or (2) if you're working from elsewhere, go to the OSU Library e-journals access page, make your way to the ACM Digital Library or the IEEE Digital Library, and be ready to type in your ONID username and password.

HCI Foundations


Case Studies of Languages/Tools for People

A few misc. resources

Margaret M. Burnett
Date of last update: Nov. 25, 2013