Algorithms and OOD (CSC 207 2014F) : Handouts

Frequently (and not-so-frequently) Asked Questions

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

Note that there may be some repetition on this page.

About the Course

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. There is a weekly assignment, which should take you between six and eight hours. So about twelve hours per week.

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.

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 Java 8 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?

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

Exams: Email me a tarball of your work. A zip will also work.

Why did you drop Android development?

After two semesters of trying to incorporate Android, and a number of discussions with the students who've taken CSC 207, I've concluded that the additional burden that Android imposes is not offset by any learning gains or excitement it generates. I'm hoping that JavaFX will provide less of a burden and more gains.

About the Professor

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

Recently, I've been having fun with Javascript. I like that it's interpreted, that it's easy to hack, and that you can make Web pages with it.

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.

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.

Why are there some weird symbols on this page?

I often cut-and-paste your questions, and if you use things like "curly quotes", they don't always make it through well. I clean them up when I notice them.

About Other Things