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.