Algorithms and OOD (CSC 207 2014S) : Handouts

Frequently (and not-so-frequently) Asked Questions

These are my attempts to answer some questions that students have asked (in the first assignment, in office hours, via email, etc.)

Note that there may be some repetition on this page.

About the Course

What environment/compiler will we be using?

We'll be using Eclipse for most of our development. We'll start with OpenJDK 1.7, which is the default, but we may need to switch to the Oracle JDK at some point.

How much work do you think we'll have outside of class?

There is a daily reading. That should take you about thirty minutes. There is a daily lab writeup. That should take you about thirty minutes to an hour. There is a weekly assignment, which should take you between six and eight hours. So about twelve hours per week.

I understand that my homework assignments were long last semester. I am working on making them less long.

Is see that we're working with pointers a lot in this class. Do you have suggestions for understanding linked structures better?

I find that drawing pictures helps a lot.

What is the role of the final project? Is it meant to be incorporate what we have learned throughout the semester, or is it just a creative application expressing our knowledge of Java and Android development? Obviously, you will explain this when the time comes, but I am a little bit curious about it.

It's a chance to apply some of what you've learned over the semester, but in a more practical situation. It's also an opportunity for you to think about this material in a very different context.

Is our final exam take-home or in-class? Under "Basics" on the front door page, it says we have a take-home final, but in the "Examinations" section on the grading page it says all our exams except the final are take home exams. When is our final (or when is it due if it is a take-home)?

Sorry for the confusion. Our final examination is take-home. The grading page is fairly generic. It's due whenever the registrar says our final is supposed to be, although I'm happy to negotiate a bit if that's inconvenient.

Will the virtual machines you give to your 151 students work for this course?

Sure, but you shouldn't need them. All the software we use in the course works on all three platforms. That is, you can get Eclipse, Git, and even the Android development environment on Linux, Mac OS X, and Microsoft Windows.

When we send you homework, do you expect us to attach the file, and also include the text in the body of the text?

Labs: In the body of the text.

Weekly assignments: Email me a link to the GitHub page that contains your work.

Exams: Email me a tarball of your work.

What went wrong with using Android last semester and how is this semester going to be different?

We had a variety of problems. We probably didn't spend quite enough time on some Android features, so students weren't comfortable moving in new directions. (Android is non-trivial, which is also a problem.) Ushahidi also upgraded, which broke our client software. And I was working on getting readings/labs ready, so I didn't have time to adapt.

More of the labs and readings are ready, which means I'll have a little more time for adapting when things go wrong. (Unfortunately, five classes means that I won't have a lot of time to adapt.) And I have some more intermediate assignments to add along the way.

I’m sure it’ll be discussed but why Java as the code for this class?

It probably won't be discussed. It has many features we like, including a strong type system, a variety of advanced approaches (generics, exceptions), and a large library. It's used widely, so it may be helpful on your resume.

About the Professor

It looks like you're teaching five or six courses in spring 2014. Is that really true?

In addition to three four-credit courses, I'm teaching two one-credit courses and supervising an independent study. I have about 120 students this semester, and each of my four-credit courses has daily homework. It's going to be a busy semester.

Where did you find the tigger suit you wore last semester?

At the Disney store, about a decade ago. We were buying my eldest son a "Winnie the Pooh" costume (so maybe more than a decade) and saw that they had a Tigger suit in my size.

I looked at your CV, and saw that you attended U Chicago. I’m curious as to how you found out about Grinnell, why you chose to come here, and what you like most about the college.

Right before I finished my Ph.D., I took a short-term job at Dartmouth (teaching compilers). That stretched to four years, and probably would have lasted indefinitely. But I wanted a tenure-track job and looked around for a liberal arts college (since liberal arts colleges seemed to match my enthusiasm for and perspective on teaching). Grinnell was clearly the best match for me - I liked the students (much more interested in learning for the sake of learning, and nice people, too), the focus on teaching, and the faculty. And I seemed to have been a good candidate - before I got back from my interview, the department had arranged with the hospital for my wife to come out and interview. I remain thrilled to be at Grinnell - the students are special, I have great support for trying new ways of teaching, and the town is generally a good place to raise kids.

How did you get hooked on CS?

I was a math major as an undergrad. But it was quickly clear that I would not be a great mathematician. (My first year at Chicago, one of my first-year classmates placed in the top ten on the Putnam. I was in the fiftieth percentile, which means I got a 0.) I took my first CS course on a lark, and discovered that it had all of the things that I loved about math - particularly problem solving. And, more importantly, the solutions were "things", not just proofs. I haven't looked back since.

What made you want to be a professor?

My mother was a psychology professor at Boston University. And it was clear that she made a big difference in her students' lives. (She received outstanding teacher awards from both BU and from her professional society; one's on the bookshelves right where you walk in to my office.) Even so, I wasn't planning on following in her footsteps. But I found in college that I liked tutoring and that I was good at it. I still appreciate the feeling I get when I see a student "click" on a concept and know that I had a place in it. Plus, good teaching is also an exercise in problem solving.

What is your favorite computer science course at Grinnell?

My favorite courses to teach: CSC 151, because I like introducing students to the field. CSC 207, because I think it's where you really start to develop the tools of computer scientist and software designer. My one-credit "C & Unix" seminar, because I can make sure you learn things that are essential. (Whoops, that's three.)

Algorithms was my favorite class as an undergraduate.

What are you currently working on in terms of computer science research or projects?

My main research project is an investigation into scripting media applications, particularly using a functional approach. (You see some aspects of that project in the intro course.) I think the next step will be finding a way to script the Gimp with Scratch. But this summer, I'm trying a different project, one that looks at math over images.

Are you a Monty Python fan? And if so, what is your favorite sketch?

When I was your age, I was a big monty python fan. I like the lumberjack song a lot. (Is it my favorite sketch? I'm not sure, but I like it a lot.) Hmmmm … maybe the political science seen(s) in Holy Grail. Maybe the witch scene in Holy Grail.

What do you do on your free time outside computer science?

Free time? What's free time? I have three sons, so most of my time is with my family (sometimes attending their events, sometimes just doing house stuff, sometimes just hanging out). I like to play board games. I sometimes get sucked into stupid video games (e.g., Plants vs. Zombies or Temple Run).

What's your favorite language to program in, and why?

Believe it or not, but it depends on the task.

I really love programming in C. It's efficient, it requires understanding of the machine, and it's concise. Plus, C macros are just awesome.

I love programming in Scheme about as much. I don't think I've ever seen beautiful C code, but I can say that some Scheme code that one could really call beautiful. (Okay, I think lots of map-reduce is beautiful.)

But when I need a quick text manipulation program, I hack it out in Perl.

Hmmm ... can we consider Make a programming language? I love Make.

Do you like living in Grinnell?

I love living in Grinnell. I like that it's small enough that I know lots of people. (Yeah, there's something to be said for anonymity, but as a parent, I see benefits to my kids being less anonymous.) I love my job, which probably has a big effect.

Do you do any sports?

I do not do any competitive sports. I do try to do water aerobics for my health, but don't always succeed.

About the Site

The daily eboards look much nicer than what you type in class. How do I see what you type in class?

Replace the .html at the end with .md.

What technology do you use to build the course web?

I use two markup languages. For many of the pages (e.g., readings, labs) I use a form of XML called Docbook. But Docbook is wordy, so for other pages (e.g., the daily outlines and eboards), I use Markdown. I also have a bunch of scripts to help with all of this. You can find the scripts and source code on GitHub.

I was curious about if and how we should report errors we see in the course web site and in any assignments or exams we’re given, and if you want to be informed of small grammatical errors or missing letters, or only errors that may directly affect the ability to interpret or complete course material.

I'd like to be informed about anything you notice. I prefer email, but I'll take comments in class, too.

Do you really put this course (and all your courses) on GitHub?

Yes. I'm less good about commits with courses than I am with my regular code, though. I'm trying to get better.

About Other Things

Copyright (c) 2013-14 Samuel A. Rebelsky.

Creative Commons License

This work is licensed under a Creative Commons Attribution 3.0 Unported License. To view a copy of this license, visit or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.