CSC161 2011S Imperative Problem Solving : Handouts


Responses to student questions from the introductory survey.


About the Course

Policies and Procedures

How can we find out how we're doing in the class?
I will do my best to send you weekly summaries of the grades that I have recorded for you.
Can you explain more about this attend talks and events extra credit?
By attending events I recommend (typically, CS talks and convocations) and events that your colleagues participate in (announced in class), you can earn up to 3 points of extra credit in the class. These get added to your computed numeric grade before I determine your letter grade. For example, if you have an average of 87 (a B+) and attend three academic events and three support events, your average will be raised to a 90 (an A-).
My 10:00 a.m. class is on the other side of campus, and my professor for that class regularly lets us out after 10:50. What should I do?
Running on ice is dangerous, so I would suggest that you get here as quickly as you reasonably can. I will not lock the door, but I am likely to make sarcastic comments when you arrive.
The Web site page about our assigned readings describes an online submission form for each reading that we would use to ask questions. If we use these forms for asking questions about the readings, what will we be using Piazza for?
In terms of readings, Piazzza is for questions that I don't answer in class or on the Web page that you still want answered. Piazzza is also for assignment questions or for broader questions.
Will the change to Piazzza be imminent or take time?
In terms of reading questions ... I think it will take time. I want to see how the current system works, first. I like the ability to quickly skim all the questions and look for themes. I don't think that all of the questions necessarily need answers. So, for now, we'll use forms for the reading questions and Piazzza for homework questions.
What are your expectations for lab write-ups? That is, what work should we show or not show in the write-up, and is there a specific format for presenting our answers that you'd like us to use?
I generally don't expect you to do lab write-ups.
How do Tutoring groups work?
Tutoring groups will get an individual tutor that they will meet with weekly or twice weekly. It gets you regular help with someone who becomes familiar with you. Making it a group rather than one-on-one gives you colleagues to rely upon.
What exactly is the end product we will produce to demonstrate our mastery of the material? In 151 we had our final visual projects; will something similar appear in 161?
I have not traditionally included a large project in 161. You show your mastery in regular assignments and examinations.
Are there any surprise quizzes during the classes?
There will probably be some.

Strategies and Such

In 151, we learned a lot of different commands. It was often hard to keep track and to remember. Given our first few days of Linux, it feels like 161 is going to be the same. Are there good ways to remember?
I would suggest that you set up a cheat sheet (glossary, whatever) that you can refer to. I've started one for the Linux commands that you have learned.
How hard will this class be?
I asked my CSC161 students last semester, and they told me that this course is similar in workload to 151. Some students find the imperative model more natural than the functional model; some find it harder.


Will you send out as many emails for this class as you did Tutorial?
No. (For context: I send out a lot of email in my Tutorial: Summaries of the day's content; Reminders to turn in assignments; Links to interesting readings; Rants about students failing to turn in assignments; Pointers to interesting campus events; etc.)
Who actually wrote most of the content for the CSC 151 and 161 websites? Because they are taught by different professors, but some of the content is uncannily similar…
We share a lot. Administrative stuff is generally mine (mostly since I preceded Dr. Davis and Dr. Weinman). The labs and readings were often written collaboratively (as the copyright notice suggests). I try to cite stuff I borrow from others, but don't always succeed.
Why are you putting these answers in a document, rather than on Piazzza?
These generally seem small enough that Piaazzza is not required. I also end up keeping them around for longer if they're within the course web.
You seem to have a sarcastic sense of humor. To what extent do you allow/appreciate sarcastic comments from your students?
I certainly permit them. That seems only fair. I tend to appreciate them more in moderation.
What are the answers for the final?
Yeah, that's a funny question.

About SamR


Why do you enjoy Computer Science? Assuming you do.
I very much enjoy computer science. If I didn't, I'd find something else to do. I like the ability to build things and see them work, even though the things are virtual rather than physical. (Actually, I see some benefit to being virtual; it's harder to cause serious damage with most of the things I create.) I also like the intellectual challenge of designing and analyzing algorithms and data structures. I recently heard a Physicist talking about the beauty of the mathematical formulae that describe physical phenomena; I see similar beauty in a well designed algorithm or program. So ... it's fun and it's intellectually stimulating.
What made you interested in it in the first place?
I was a math major as an undergraduate and took CS on a lark. I discovered the joys I mentioned above. I also found that I'm much better at computer science than I was at math. (I got mostly A's in math, but I had colleagues who scored in the top ten in the Putnam, so I knew that I would never be a great mathematician.)
Okay, why do you like teaching?
Teaching, at least teaching at the college level, gives me the opportunity to help people discover new ideas and new approaches. There are few feelings better than discovering you have helped someone master a difficult concept or discover a new perspective. Teaching is also an intellectual challenge: I enjoy trying to figure out the best way to explain a concept or to help someone think differently. (Grading, I will admit, I do not find as exciting.) The improvisation that happens in a good class session is energizing and exausting. I also like to learn and I learn something new most of the time that I teach. There are also other great parts of being a faculty member:, particularly getting to choose interesting research projects to pursue and pursue them.
What is your area of interest?
In Computer Science? The impact of the functional model on media computation. Designing computing environments for non-programmers. Computing for the arts.
How long did it take to develop GIMP?
I have no idea. I can tell you how long it took to develop MediaScript, though. MediaScript plus the various Web pages took about nine months of full time work for me and an assistant.
What's your favorite programming language?
I don't have one favorite programming language; different languages are good for different tasks. That said, I find that I most enjoy programming in Scheme and C. Each is relatively small, and each supports its own kind of sparse beauty.
Will you be my advisor when I declare a CS major?
There is a standard disclaimer I give to all students who ask me this question. It goes as follows: I tend to have a lot of advisees. I am one of the least organized people you will ever meet. Past history suggests that I will lose your advisee folder at least once. Because I have so many advisees, I will not always remember what courses we have agreed upon or other things we have discussed. I meet deadlines only when I receive repeated reminders. (However, I don't mind the repeated reminders.) But I will do my best to help you think aboug how to get a good liberal arts education and a good computer science education. If folks are willing to deal with all of that, I will accept them as advisees.
From the little I know about your teaching style, it is very different from others I have seen at Grinnell. How did you decide to be so informal in classes? Do you have any books you base your teaching philosophy on, or just personal experience?
In part, my teaching style comes from my personality, but there's also thought behind it. I don't think that I've ever been particularly formal in classes, but some of the informality was a reaction to the strict formality I saw observed at Dartmouth. I also know that computer science can be scary to some students and I hope my manner helps offset some of that fear. And, as I mentioned in class, I see some benefit in challenging power expectations. My philosophy that I have a responsibility to teach you more than just computer science probably stems from watching my mother teach. (She taught Psychology at BU for thirty years or so and received both national and institutional awards.) I use variants of the Socratic method because I think we have a few millennia of examples suggesting that it works well. I use workshop-style labs because I've seen evidence that they work well and that students react well to them. I do read regularly about teaching, but one thing that I've learned is that teaching style needs to match personality: What works for one person may not work for another.
How did you decide to be a professor?
My mother was a professor, and I looked up to her and the impact she had on students. I also enjoyed the teaching I did as an undergraduate (mostly as a teaching assistant) and as a graduate student.


What do you dislike about Grinnell that is not a problem and a majority of other colleges (something Grinnell specificish)?
I dislike Grinnell's drinking culture. I know that many Colleges have a drinking problem (I taught at Dartmouth, and I think it's worse there), but some aspects of Grinnell seem to make it worse here. I know one of the most frequent reasons people give for transferring from Grinnell is that culture.
While I think we do great things with the endowment, I also think it makes us a bit too unwilling to accept that we fund every good idea.
I dislike many students' failure to properly understand that self governance means I govern myself and my relations with others; we communally goern ourselves rather than I can do whatever I want and no one should interfere.
How did you wind up in Grinnell?
I wanted to teach at a small liberal arts college that placed appropriate emphasis on teaching but also supported good scholarly work. When I interviewed, I liked the students and found the departmental colleagues excellent. As I talk to colleagues at other schools, I still find that Grinnell is perhaps the ideal place for me. (Well, it would be nicer if it were in New England, but that might change the character of the students.)
Why do you like teaching at Grinnell (assuming, of course, that you like teaching at Grinnell)?
I love teaching at Grinnell. In part, it's simply that I like teaching. (I've addressed that separately.) Teaching at Grinnell is special because of the people and because of a shared perspective on undergraduate education. How are the people special? One obvious thing is that most people here are nice and treat each other with respect, but it's more than that. The students are interesting, varied people, most of whom do more than focus on one thing. It's great to be at a school where students in many majors are involved in art, theatre, music, and more. The faculty are smart and Grinnell is small enough that we can know what other faculty do. As importantly, Grinnell is clearly focused on undergraduate education: In the end, most decisions that are made include some underlying discussion of what is best for teaching students. Grinnell also places an appropriate balance between scholarship and research: While we value scholarship, we really do make teaching our priority. It is not clear to me that our peers continue that balance. Finally, the individually mentored curriculum (the official name for the open curriculum) makes it a particularly nice place to teach: It's great to have students who are in your class only because they want to be there or because someone has presented them with a convincing argument that the class would be valuable. (Okay, there are a few courses that are exceptions to that rule, but it's still true for most courses.)


Do you live here or in Iowa City/Des Moines?
I live on Main street. My old friends make fun of me for that. ("It seems somehow fitting that Sam and Michelle live on Main street in small town Iowa.")
What is your favorite thing to do?
Spend time with my kids, often playing games (card, board, even video).
What is your favorite color?
I like to say "Plaid" or "White" to confuse people, but it's probably some shade of purple.
What music do you listen to?
Various forms of popular music. These days, mostly power pop, americana, folk, garage, some old-school punk (Modern Lovers, X, etc.). Occasionally sixties/seventies funk or R&B.
Who is your favorite sports team or athlete?
Bill Russell. Great team player. Changed the game. Articulate. Not afraid to speak out about important political issues and had important things to say. What more could you want in an athlete?
How are you so energetic all the time?
I'm not. I'm tired and overwhelmed much of the time. I just get energized by teaching. I also fake it well.
What are your hobbies?
Mostly just reading and playing games with my kids. I program for fun some of the time. (Less than I used to.) I also collect books and music of various kinds.

Top Five

What are your top five pick a category objects?
Objects in my office (in no particular order). Steel sculptures that once illustrated a plane parallel to a conic section. (Some day I'll rethread them, although I've been saying that for twenty years.) Pictures of my kids. The sword from a marlin that my father harpooned. Artificial flowers that everyone who walks in my office thinks are real. My mother's Psychology Teacher of the Year award. The 1966 Grinnell College yearbook (banned at the time it was made; not released until 1991 or so). Yes, I know that's six. Deal.
What are your five favorite foods!?
That's a hard question to answer, because there are so many different criteria to consider. Is that food that I eat regularly, or is it food that I might eat only on special occasions? Is it food that I like to eat, or food that I like to make, or both? Should I choose based on taste sensation or upon memories and thoughts it invokes? Well, I just go with gut instinct (which seems somehow apropriate). Chocolate. Muijses (preferably the powdered anise seed kind). Bagels. Baked eggs. Pears.
Who are your top 5 favorite Pokemon?
[Disclaimer: My knowledge of Pokemon comes primarily from watching the original series with my kids, and maybe playing a card game or two.] Snorlax (my kids say that I am Snorlax), Hitmonchan (I like his noise), Porygon (I like how it looks), Onyx (yeah, I'm not sure why), Dark Golduck (because my son says it's not a real Pokemon).

Off the Wall

If you had to lose a sense, which would you choose?
Given my weight, the obvious choice would be taste. After all, if there's little taste to food, I might eat less. (No, that's not a very good answer.) More seriously, while I think I would miss the many pleasures and experiences taste brings, I rely too much on sight and hearing for communication, I know that a lack of touch is dangerous, and a loss of smell normally leads to a loss of taste.
If you could have a sense augmented - bionically or otherwise - to superhero proportions, which would you choose?
Vision. Everything else seems dangerous in the excess, particularly if one does not have control over when the sense is or is not enhanced.
If you could ride one animal (assuming it’s tamed and will do your bidding) what would it be and where would you ride it (assuming you had the necessary gear to survive)?
My middle son keeps telling me that he wants a giant eagle that he could ride to school. I think I'd prefer a pooka (like Harvey, in the movie of the same name) who I might ride to wherever it is when it's not here.


What is the thesis?
The primary thesis is By taking this course, you will become a better thinker and a better person. Secondary theses include Computers are sentient and malicious, There is more to life than computer science, The devil is in the details, and Have fun with what you do.
What advice would you give someone just starting in computer science?
Explore! Don't stick to what you learn in classes. Try new languages. Install Linux on your computer. Try figuring out what you can and can't do with Linux. Read books. Contribute to open source software. (Even if you're not yet up to reading and writing code, you can write documentation, submit bug reports, etc.)
When I type "rebelsky" into Outlook and press "Check Name" it always gives me an error because there are 2 rebelskys in the directory. How do I avoid that?
You can't avoid the two Rebelskys in the directory. You can, however, try typing "Rebelsky, Sam" into Outlook.
What are differences between functional and imperative programming?
In functional programming, the focus is on defining and applying functions. In imperative programming, the focus is on writing sequences of operations that move data around. Functional programming has less explicit sequencing of operations than imperative programming. Functional programming emphasizes functions as first-class data objects (that is, you can take functions as parameters and return them as values); imperative programming traditionally does not. Functional programming rarely involves operations that have side-effects (e.g., you can't generally change the value associated with a name); imperative programming emphasizes such changes.



Monday, 24 January 2011 [Samuel A. Rebelsky]

  • Created. Added first set of questions and answers.

Tuesday, 25 January 2011 [Samuel A. Rebelsky]

  • Divided sections into subsections.
  • Added more questions and answers.

Thursday, 27 January 2011 [Samuel A. Rebelsky]

  • Remaining questions and answers.

Friday, 28 January 2011 [Samuel A. Rebelsky]

  • Released.


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 Jan 30 19:06:17 2011.
The source to the document was last modified on Thu Jan 27 21:48:13 2011.
This document may be found at

Samuel A. Rebelsky,