Carnegie Mellon
HCII Logo

Other Links

HCII Calendar

Job Talk: Daniela Rosner
NSH 3305
16 May, 2012 4:00pm

BHCI Commencement presentations
Baker Hall Adamson Wing (136A)
19 May, 2012 11:30am

HCII Commencement Party
NSH 1507 & attached outdoor patio
19 May, 2012 12:30pm

» HCII Calendar

Special topics: Human Aspects of Software Development

05-899D
Spring 2011: 12 units
Syllabus
Prerequisites: None

This course will investigate the research on the human aspects of software development. The focus will primarily be on individual software development, such as what is known about people programming, debugging, testing, and understanding code. We will cover studies of programmers, and tools that have been shown to be effective for programmers. This will include what is sometimes called “Empirical Studies of Programmers” and the “Psychology of Programmers”. Topics that are associated with Human Aspects of Software Engineering, such as the study of processes for management, studies of large groups of programmers, and software specifications, will only be covered lightly.

This will be a seminar course, primarily intended for PhD students and other students interested in research on this topic. The course readings will mostly be important research articles on the various topics. We will also draw from the books: “Making Software: What Really Works, and Why We Believe It”, edited by Andy Oram and Greg Wilson (2011), and “Human Aspects of Software Engineering”, by James Tomayko and Orit Hazzan (2004). Most of the classes will be led by the students. Each student will choose one or more topics, and will read the relevant literature and present the material to the rest of the class. Grading will be based on students’ presentations, short paragraphs about assigned readings to demonstrate mastery, participation in class, and a final project. The final project will be performed in small groups, and will entail either a new user study of some aspect of software development, or the creation of a new tool for developers (such as a new plugin for Eclipse). These projects may result in publishable papers.

The specific topics covered will be developed in collaboration with the students in the class, based on mutual interest. A preliminary list of topics includes:

  • HCI techniques relevant to studying software development (contextual inquiries, field studies, surveys, lab studies, etc.)
  • Studies of novice programmers (barriers, performance, etc.)
  • Studies of professional programmers (programmer variability, cultural differences, actual practices, questions asked)
  • Studies of the usability of APIs
  • Studies of processes for programming (Agile, Peer, collaboration, test-driven development, etc.)
  • Tools for novice programmers
  • Tools for making it easier to understand code (Visualization, analyses, etc.)
  • Tools for making it easier to write programs (IDEs, etc.)
  • Programming Languages and Environments that have good usability properties
  • Tools for making it easier to debug programs
  • Tools focused on “end-user” development of code (for people who are not professional programmers)
  • End-User Software Engineering (EUSE)
  • Tools for making it easier to capture and use Design Rationale
  • Documentation tools for making it easier to understand APIs

Although intended primarily for PhD students, Masters and even advanced undergraduates are welcome, if you are interested in a research seminar.