CS151.01 2009F Functional Problem Solving

Notes on Assignment 1: Introductory Survey

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.)

What questions about the class do you have that are not answered by the Web site?

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 written work. 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 writing.
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.
What do 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, if anything, would you like to know about me?


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 Jenny Anger, Marc Chamberland, Kathy Jacobson, Elaine Marzluff, Phillipe Moisan, Tyler Roberts, and Kathleen Skerrett.
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 career?
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 proprietary software?
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 OS X.


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 forth.
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.

Top Five Lists

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 find the 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 mediascheme course.

A Final Question

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.

Earning Higher Grades

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 check.

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?

Disclaimer: I usually create these pages on the fly, which means that I rarely proofread them and they may contain bad grammar and incorrect details. It also means that I tend to update them regularly (see the history for more details). Feel free to contact me with any suggestions for changes.

This document was generated by Siteweaver on Sun Sep 13 22:18:19 2009.
The source to the document was last modified on Sun Sep 13 22:18:14 2009.
This document may be found at http://www.cs.grinnell.edu/~rebelsky/Courses/CS151/2009F/Assignments/notes.01.html.

You may wish to validate this document's HTML ; Valid CSS! ; Creative Commons License

Samuel A. Rebelsky, rebelsky@grinnell.edu

Copyright © 2007-9 Janet Davis, Matthew Kluber, Samuel A. Rebelsky, and Jerod Weinman. (Selected materials copyright by John David Stone and Henry Walker and used by permission.) This material is based upon work partially supported by the National Science Foundation under Grant No. CCLI-0633090. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation. This work is licensed under a Creative Commons Attribution-NonCommercial 2.5 License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc/2.5/ or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.