Programming Journal
Description
By now, you have read the introduction to the
phenomenology of programming languages in chapter 1. The purpose
of keeping a programming journal, in which you record your experiences
while programming, is to develop your awareness of the full range of
phenomenological issues in programming language design.
For example, in your journal you should record the sorts
of errors you make, the difficulties you had in finding them, and what you had
to do to correct them. You should also describe especially good
experiences, for example, when the code seems to "write itself." Describe
cases where you found (your own or other programmers') code especially hard to
decipher. You should also record your feelings during the process of
programming (e.g., do you feel frustrated, empowered, cheated, competent,
blocked, etc.). Do you feel like you are "hacking" or writing elegant
code? Are you experiencing "fear" or "fascination?" How is the
language ampliative or reductive? Is what ways is your use of it embodied,
in what ways alienated?
As much as possible, make entries in your journal while
you are programming, or immediately after a programming session. The purpose of
this journal is to make you more familiar with the phenomenology of the
languages you use, so that you will be more sensitive to the full range of
phenomenological issues when you design programming languages (and other
language-like systems) and when you choose a language for a particular project.
Additional Information
- Although I normally grade for writing style, grammar,
etc., that does not apply to your "programming journal." Don't
worry about those kinds of issues when you are writing in your journal!
- You will not receive a grade on the material in your
journal at all, except if you do not turn it in, or if the quality of your
information recorded convinces me that you haven't tried to comply with the
spirit of the assignment. You will be expected to do this, and it may
provide the data for later projects or writing assignments.
- You can keep your journal in any medium you choose:
from a "low tech" bluebook to a word-processor to an on-line note-taking
system. However, from time to time, you will be asked to hand it in (at
least the part written since the previous time it was handed in), so it is
necessary that you be able to produce a hardcopy to hand in.
- The main reason for handing in the journal is so that I
can look it over to make sure you get the idea, and perhaps suggest ways in
which it can be improved. As said above, grading will be very loose.
- You should record in your journal any experiences you
have while programming (or even doing programming-like things, such as writing
in scripting languages). Most of you are taking at least one course in
which you are programming, and these activities should be reflected in your
journal. If you are not taking any courses that involve programming,
then record your experiences while doing personal programming or on the job.
In the unlikely event that you are doing no programming (if not, why
aren't you?), talk to me so we can find a way for you to do the journal.
- Feel free to include in your journal experiences you
have with other language-like things (e.g. the UNIX shell), since many of the
same issues apply to programming languages. Although in this course we
are focused on programming languages, much of that is part of a general
phenomenology of tools.