A variety of notes on the first assignment.
I was surprised at how many of you had difficulty with the concept of
sending me two different emails with particular names. (Believe it or
not, but I use the email titles to help organize the messages.)
While many of you had good answers to why I gave you this assignment
(at least the first half), not everyone got the core reason: Evidence
suggests that you don't read course syllabi or remember what we say
about them in class. However, if you've answered questions about the
syllabus (and had to read it in order to do so), you're more likley to
read and remember.
A few of you noted that this course has a reputation of having too much
of a workload. We do what we can to keep it reasonable. Take-home exams
are capped at four or five hours. Most homework assignments are capped
at two. I rely on you to tell me when the workload is too high.
Of course, part of the problem is the nature of the discipline. You can
write a mediocre essay and not even know it. If you write a mediocre
program, it won't work. Another issue is that the range of times students
take to solve problems in CS is much wider than in other disciplines.
(If you're lucky, you can write an essay twice as fast as your neighbors.
We regularly find that there are problems that the average student can
solve in an hour, that some students solve in five minutes, and that others
cannot solve given ten hours.)
How does CSC 151 relate to the other Computer Science courses
offered? How does 151 prepare us for later courses?
CSC 151 teaches you the basic of algorithmic thinking: How, given a
problem, you design a collection of instructions that allow the computer
to solve that problem or category of problem. We cover a few of the
key algorithm design pattern in the course. CSC 151 also teaches you
some skills for analyzing the algorithms you design, both experimentally
and formally. So, you will use those skills in essentially every future
computer science course.
The Grinnell Computer Science department has made a conscious decision
to switch languages (and what we call "paradigms" through the introductory
courses. Our second course, CSC 161, uses the C programming language and
the imperative paradigm. Our third course, CSC 207, uses the Java
programming language and the object-oriented paradigm. So, other than
thinking like a computer scientist, and taking advantage of some
key algorithms you learn in 151, you may find that 151 is very different
than the next two.
We use the Scheme programming language in 151. We return to that language
in a variety of other courses, particularly Programming Languages and
Artifical Intelligence, but also others.
Have you considered testing the hypothesis that distributing chocolate
chip cookies in this course will be helpful to the learning process?
If I were to distribute cookies, it seems that they should be home made.
If they are home made, that means I spending time making cookies, rather
than preparing class. It is difficult to believe that spending less
time preparing class will be helpful to the learning process.
As importantly, it seems very difficult to design an experiment that
will adequately test the hypothesis. For example, what will serve as
the control group?
But don't worry, it is generally my habit to provide food for my
students at least a few times during the semester.
- What sorts of math skills will be necessary?
Certainly, you should be able to add, subtract, multiply, and divide.
I don't expect to use anything beyond 9th grade math. I'll provide
you with appropriate formulae, such as that of a circle, and to teach
you any other math that is necessary.
Is there written work (lab reports, etc)?
It depends on what you mean by
There will a lab writeup approximately once per week. A typical writeup
requires some code and some text. Exams will also have a mix of code and
Is everything going to based online?
I try to put everything I create for the course online. In terms of your
work, quizzes will be on paper, and I'll ask you to turn in both paper
and hardcopy versions of many assignments.
exams or "programming" assignments look like?
Programming assignments typically have the form "Write a program that
accomplishes the following task." The tasks vary widely. At least one
will be to write a real program that draws a smiley face. Others may be
things like taking a collection of information and putting it in order.
Exams have a variety of kinds of problems. Some will be programming
problems. Others will be reading/interpretation problems (e.g.,
what does this program do)? Some will require editing of code (what
is wrong with this)? Still others will require assessment (which of
the following algorithms better solves this problem? Why?).
If a student wants to go above and beyond so as to earn an A in the
course, what other extra credit opportunities are there aside from
talks and supporting classmates?
On many assignments, I will suggest something. Often, you'll figure
something out, too. ("Hmmm ... I got the computer to do X. Y is
similar. I wonder if a small extension will allow me to do Y.") Oh,
yeah, doing something that makes me go
Wow! is also a good way.
If I ask for help from you or a student, should I cite it with formal APA/MLA technique or write at the bottom of the assignment:
So-and-so helped me with this section of code?
A simple note is enough. However, I'd prefer it at the beginning,
rather than the end. If you decide to be formal, I prefer APA.
What will the Friday quizzes look like?
Two or three short questions, typically based on the readings over
the past week. We may ask you to write code, but will not expect
perfection. (One clear theme of this course: You need to play with
your algorithms and your code to get them right.)
Given that you used DrScheme in prior courses, why did you not use
it in this course?
I think the "write programs to build and manipulate images" model
is an important one, and we did not have good luck trying to bridge
DrScheme and the GIMP's standard programming environment. MediaScript,
the environment we developed at Grinnell, keeps many of DrScheme's
strengths, adds a few of its own, and interacts well with the GIMP.
What is key to learning computer science well?
You know, I don't think there's one thing that is key. I've also
found that it depends on the student. For example, CS seems to use
some of the same thought processes as math, but I've seen excellent
math students have trouble in CS, and folks with severe math phobia
do really well. I expect that the things that make you do well at
any course will serve you well in this course: working hard, being
willing to take chances, and being willing to regularly ask questions.
What made you choose computer science as a field of study?
I was a math major as an undergraduate. I found that CS had all the
things that I loved about math (lots of problem solving, some puzzles,
some formality), plus the solutions you came up with were relatively
concrete. I also really, really like being able to build things in
the open, experimental space that is the world of programming.
What interested you in coming to teach at Grinnell?
A variety of things. I applied to Grinnell because I believe strongly
in the liberal arts approach to education and I wanted to be at a
place that values teaching. When I interviewed here, I found faculty
who were creative and innovative teachers and students who were smart,
nice, and with a diverse set of interests. Since coming to Grinnell,
I've also found great support for creative teaching for working with
students on research. I've also come to appreciate that the open
curriculum means that students are generally taking my courses because
they want to, not because they have to.
Do you enjoy working at Grinnell?
I love working at Grinnell. I have wonderful colleagues, a supportive
institution, and students who have a huge number of positive characteristics
(nice people, smart, generally interested in a wide variety of topics).
How long have you been teaching at Grinnell?
I think this is my thirteenth year at Grinnell. I started here in the fall
of 1997, in an incoming class of faculty that included
Tyler Roberts, and
What led you to become a professor?
I love teaching: the sense of accomplishment when I help a student
master a difficult concept, the challenge of finding new and better
ways to explain things, the give and take that happens during a good
discussion or recitation, the new things I learn each time I teach.
I also seem to do pretty well at it. (On the other hand, I really
don't like grading all that much.) In addition, I love the other
aspects of professorial life: Picking challenging problems to explore,
getting to work with interesting colleagues, watching students grow,
even committee work.
If you had decided to do go into a field completely unrelated to computers,
what would it have been?
Now that's a hard question. College teaching really does feel like
my vocation. I was a math major in college, and I ended up in computer
science in part because it had much of what I loved about math (puzzles
and problem solving) plus the ability to see relatively concrete results
for what I'd done. So, I suppose I could have continued in mathematics.
However, I must admit that I was not a great mathematician. You may
also feel that mathematics is related to computers, and therefore not an
acceptable answer. I loved my film studies classes as an undergraduate
and graduate student, and my faculty member seemed to think that I did
well at analysis and came up with innovative ideas. However, I did not
write to his standards. Hmmm ... maybe I'd be a stay-at-home dad.
What is your personal favorite project/program that you've done for fun?
I once wrote a huge program to manage my record (vinyl) collection,
back in the days before CDs. Writing that program led me to learn
a whole lot of different things (including how to generate RTF).
I certainly enjoyed that. But, you know, I really love MediaScript,
the program that you'll be using for this class, and I still enjoy
using it (as well as tinkering behind the scenes). So, although I
wrote it for professional reasons, rather than just for fun, I have
a lot of fun with it.
What kind of software or programs have you invented during your
All sorts of things. In grad school, I did a lot of work on a
structure-based program editor, a compiler for a functional language,
and some other stuff that I forget. I wrote an email based submission
server that was used for a few dozen conferences (prior to and at
the beginning of the advent of the Web). I wrote a small e-commerce
site for a friend. My research students at Grinnell and I wrote a
suite of software that lets you collaboratively extend Web pages.
(That is, you can add links or notes, and share them with friends.)
My research students and I wrote software that makes it easier to
analyze the ways in which people follow links on a site (including
such data as time-on-page and use of multiple windows). The last two
systems got discontinued as it became impossible for us to keep up
with the advances that many now classify as Web 2.0. Most recently,
I've been working on the software system that supports this course.
What do you think about the relationship of free software and
I very much appreciate the spirit of open-source software - I think
there is much to be gained from software that is freely shared, that can
be read and extended. I release anything I write under an open-source
license. (The particular license I use depends on the software I'm
writing.) That said, I think each developer (individual, company,
whatever) has the right to decide how best to release their software.
I certainly use a number of proprietary systems, including Macintosh
Where are you from and what is it like there?
I grew up in Newton, a suburb of Boston. I'm really bad at describing
what things are like. It was hilly. People seemed friendly, if a
bit crazy in their driving habits, although not as friendly as they
are in Grinnell. It has a climate similar to Grinnell's (cold and
snowy in the winter, hot in the summer, pretty leaves in the fall).
It has the best independent bookstore in the U.S.
How do you find the experience of living in the town of Grinnell?
I find it strange that it's small enough that it's hard to be very
private. People I don't know very well seem to know a lot about me.
I love being able to walk to work. I love that it's a relatively
safe place to raise my children and that my children seem to have a
lot of good options in school. I wish it had a big used bookstore.
I wish it had more dining options. My experience is also positively
impacted by my great joy in working at Grinnell.
Why do you always look so happy? (In other words, why do you always
have smile on your face?)
Okay, I didn't realize that I always have a smile on my face.
I guess there's the stereotypic reason (fat people are always happy).
More likely, it's simply that I have a lot of fun teaching 151 (and
doing most of what I do at Grinnell).
What is your favorite sports team?
Generally, whatever team my children are playing on. My favorite
professional sports team is probably the Boston Celtics, but I'll
admit my love of the Celtics is primarily from childhood (the not-so-good
years leading up to the Bird years).
Is there a professors' cafeteria, or are you required to provide
your own lunches?
Once per week, members of the faculty can gather at faculty house
for lunch. (Maybe 1/4 of the faculty show up.) We do pay for our
lunches there. Other than that, we can bring lunches, eat in the JRC
with students (faculty and staff pay $5.00), wander home (I live two
blocks from campus), eat at a restaurant in town, and so on and so
How has CS changed since you started studying it?
In some ways, the discipline hasn't change much: We still study the
same fundamental kinds of problems (algorithms and data structures).
In many others, it has changed significantly. Computers are so much
more powerful, and storage is so much cheaper (and available) that we
attempt types of problems that would have been difficult to imagine
when I started studying it in 1983 or so. At that time, few people
would have imagined the kinds of media we could store and manipulate,
or the size of databases that we now use with regularity.
Have any of your students gone on to achieve any degree of fame? Who
are they/what do they do, and how much of their success (if not all)
do they owe to you personally?
Rachel Heck is probably our most successful graduate. While working on
her Ph.D., she interned at Rockstar Games, where she was responsible
for the character animation on Rockstar Games Presents Table Tennis
(the original Xbox edition). After she finished her Ph.D., Rockstar
wanted her back, but she ended up at Industrial Light and Magic.
Of course, Rachel gave standing-room-only talks at conferences when
she was an undergraduate and doing research with me. So, I think I
gave Rachel opportunities to grow, but, in the end, Rachel's success
stems from Rachel being outstanding.
Of course, each of our graduates is successful in his or her own way.
A few have told me that they would not have made it through Grinnell
without me. That's less my teaching than my advising, but I do think
I made a difference for those students. Some others have told me that
they decided to become CS majors because of my classes. But I think
that's just because of how cool CS is, and they would have felt the
same no matter who taught their first course.
- What is your answer to question i?
My favorite jokes to tell. (No, I won't provide the full details;
you'll end up hearing them in class. And, given past experience,
it's unlikely that many people will laugh at any of them.) (1) The
Polish comedian. (2) Ending sentences with a preposition. (3) How do
you get down off an elephant? (4) Joke-by-number. (5) The talking dog.
What are the five best categories of objects people have used for
question i in the past?
It is difficult to classify categories as
best, since there
are no clear criteria for quality. Should I pick the categories that tell me
most about the students? The ones that give me the most enjoyment?
The most innovative ones? Then, there's the problem that my memory is
limited, and I'm too lazy to track down my old surveys. So, here are
five fun categories that I recall seeing: Top five smells; Top five
places on campus to study; Top five chia pets; Top five ways to
procrastinate; Top five potential topics for making a top-five list.
What are your five favorite movies?
Kurosawa's "The Seven Samurai". "Bedazzled" (the original Peter
Cook / Dudley Moore one, not the crappy remake). Tati's "Playtime".
"Singing in the Rain". Chaplin's "Modern Times". "Harold and Maude".
(Yeah, that's six. I should probably drop "Playtime", but I'll stick
with six anyway.)
In your opinion, what are the top 5 metal bands of all time?
I guess it all depends on your definition of metal. I like to be
nearly as inclusive as Chuck Eddy in what I consider metal. Of course,
since I'm not a metalhead, my answers are suspect. So, let's go with
(in no particular order): The Stooges, Led Zeppelin, AC/DC, The Jimi
Hendrix Experience, and the Sonics.
What are your five favorite television shows?
Hmmm ... it varies from time to time. I don't watch a lot of TV,
and when I do, it's often as a social occasion with the family.
This summer, my family is progressing through all five seasons of
"Angel" together. (Yeah, I know, a weird show to watch with kids,
but, hey.) We also watch "The Big Bang Theory" together. I loved
"Monster House" the one year it was on. Last spring, for some strange
reason, I got into "Dollhouse". One more? Oh yeah, the first season of
"Who Wants to be a Superhero?", when the Grinnell alum was on.
- Which XKCD comic is your favorite?
Warning! While XKCD is often a brilliant techie/science comic,
it can also be sexually explicit (as was the XKCD on the day
that I posted this response). It also regularly involves violence.
The answers I've given below are (relatively) safe, but, if you scan
XKCD, be prepared for things that you may consider inappropriate.
Another hard question. I really like Exploits
of a Mom not only because it has an important moral and is clearly
something designed to speak to a restricted group, but also because I
Little Bobby Tables line so hilarious. I appreciate
the recent Tech Support Cheat Sheet
because it so perfectly describes how so many of us expect people to
approach problems on using computer applications. And, while I don't
particularly like the Twilight books, I find
Troll Slayer wonderful.
I'll note that I seem to be in the extreme minority in finding
Sandwich a minor effort, at best.
(That is, I don't particularly like it, but lots of people do.)
But, hey, this is the top-five section, so let's add two more.
I'll add Lisp Cycles, because it reflects
upon the language choice for this course, and
Cuttlefish, because, well, students
ended up using cuttlefish as sample images in the first version of the
May we continue to ask questions beyond this point? And are you truthful
with your responses?
You may continue to ask questions. I do my best to be truthful,
but I reserve the right to refuse to answer some questions.
Since many of you were wondering about the strategies one can use to earn
higher grades in my
a correct assignment earns a check scheme, I
thought I'd mention a few things that helped earn grades higher than a
- Careful citation. My site makes it clear that I care about
citation, so showing me that you can cite my site makes me happy.
(Yes, the source for your responses is clear, so it is not strictly
necessary. People who cited well went beyond the basic expectations.)
- A particularly nice description of something. For example, a few of
you were careful in how you described not only the creation and form
of eboards, but also how you access them.
- Thinking outside the box. For example, in their answers to how to find
the assignment for the class, some of you listed five or so Web-based
techniques but also included other answers (ask a classmate, stop by
Sam's office, etc.).
- The occasional suck-up answer earned a little extra (but this will rarely
be the case).
- A few really funny and really creative answers earned extra points.
A few people nearly earned grades lower than a check by submitting
answers that made it seem like they had not read the stuff, but I decided
to be sympathetic. One of you wrote answers that were so long as to be
a bit painful, which put me in a grading dillema: Should I reward the
obvious effort, or should I discourage someone from wasting that much time
on what should have been a straightforward assignment?