HMN 001D: Sapir-Whorf and Programming Languages

Fall 2005

Organizer Daniel Brown <danb@cs.utexas.edu>
Sponsor Dr. William Cook <wcook@cs.utexas.edu>
Room BUR 232
Time M 3–4pm
Website www.cs.utexas.edu/~danb/courses/fa05/sapir-whorf
Unique # 39086

Overview

Practical programming language design requires balancing the rigidity of the machine and the creativity of the programmer. Popular languages today seem to have been designed to accomodate the machine more than programmer; C/C++ lack garbage collection, Java lacked generics until recently, and neither have even the most primitive forms of type inference.
The purpose of a compilers class is to learn about the boundary between programming languages and the machine; the purpose of this class is to explore the boundary between programming languages and the programmer. Our motivating question in this class (hereafter: the Big Question) is: "How do programming languages affect the way programmers ____________ programs?" The blank may contain things like: write, read, design, debug, reason about, verify, optimize, refactor, port, remember, talk about, etc.

Goals

Exploring the human-computer interface for programming can lead in many directions: improving languages, enhancing IDE's, starting companies, discovering why you find language X hard to use, etc. Because this class is student-oriented, the only explicit goals are to explore the Big Question and keep a written record of the dicussions and related material.

Meetings

This class is an interactive, discussion-based course. The organizer will lead the first meetings to introduce and explore the foundational concepts of the course. Students will lead the remaining discussions with topics they choose, progressing towards the goals of the course.
Throughout the semester, students will volunteer to lead discussions. A few weeks in advance, they should choose a topic related to the Big Question and prepare materials for discussion. Preparation should consist of things like readings or activities (or perhaps meditation) to ensure well-informed discussions. Preparatory assignments should be given a week in advance (e.g. at the end of the preceeding discussion).
This class meets weekly for one hour in BUR 232, Mon 3–4pm.

Expectations

At a minimum, students are expected to have some programming experience. Familiarity with various programming languages and paradigms will be beneficial, but a desire to learn and question will suffice.
Students are the core of the class, so each is expected to contribute in various ways: students will participate during class discussions, complete preparatory assignments, and take turns steering the course by organizing and leading discussions on topics they choose.
Students are expected to spend, on average, two hours per week on work outside of class (twice the in-class time). This includes the extra time a student will spend preparing for the discussion they lead. Any student concerned about this class's workload during the semester should contact the facilitator; the most important aspects of this course are participation, learning, and fun.

Grading and Attendance

This course counts for 0 credit hours, so grades will be assigned arbitrarily.
If students don't attend the weekly discussions, they won't fail, but the course might fail to accomplish its goals. The success of this course will be a direct result of the interests and efforts of the participating students.