Algorithms and OOD (CSC 207 2014S) : Handouts

Lessons from students

These lessons are taken from the introductory survey.

Lessons from the Web site

I learned more about the structure of the course, by reading about the various types of assignments, and the way that they will be graded, and those grades weighted.

I learned that you care deeply about teaching, and that you view teaching as a form of problem solving, which has been a career-deciding passion of yours.

I learned that you like to conserve paper and that is why you keep as many materials as possible on the webpage.

It may be more that I like to be able to update things freely.

I learned about SQ3R, which seems like a nice reading technique. [x4]

I learned that you hold optional review classes on Thursdays from 10 to 10.50. [x2]

I learned that we'll be using wrappers to monitor and enhance our learning in this course.

I learned that we will be largely using Eclipse when programming.

I learned that we are allowed to use any source other than other people while doing take-home exams.

You will use other people indirectly if you look things up on the Interweb. You are just not allowed to ask them for help.

The is a link on the front page called "examples". I assume it contains some examples to some of the labs that we will be working on.

And some we generate in class, too.

How extra credit works: each event is worth 1/4 of a point (towards the final grade), and there are two categories of extra credit. Each category can get a tops of 1 point, that is towards the final grade.

I learned that there are extra credit opportunities that add up to a maximum of two points towards the final grade by attending an academic event or acting as peer support then submitting a reaction paragraph of the event.

Lab write-ups are required for specified labs and are graded as acceptable or unacceptable based on if there is an answer and/or evidence of effort (even if the answer is not necessarily correct).

If the answer is not correct, I do expect a note from you that suggests that you realize that it is not correct.

I learned about the different software we will be using and some of what they will be used for.

I learned criteria you will use when grading homework.

One assignment grade is dropped.

Send labs to [rebelsky] not a grader email.

Students will not get a zero for any lab that they put significant effort to providing that they talk to you ASAP about their difficulties with the lab afterward.

When I'm confused during a lecture, I need to stop you and ask you explain the concept more.

I learned that we will have a required take-home final exam (different from 151, so good to note).

I learned that lab write-ups will probably need outside-of-class time.

It will be a good idea to bookmark the current eBoard tab to keep track on daily homeworks.

How exactly to email assignments or help from you via guidelines on the email's subject line.

Yes, I've become fairly precise in my expectations for email subjects because the precision helps make me more efficient.

I learned that the format for citing web pages should be a slight variant of the APA format.

How to navigate the site effectively. [x4]

I bookmarked the site webpage if that counts as learning.

No, not really, but I'll accept it.

There is a handy little search box on each page, and it's really useful if you can't find what you're looking for and/or can't remember where you read something.

Did the search box actually work? Cool. I just updated the code and wasn't sure.

I learned how to approach you when I have problems in the class.

I learned that everything except for lab writeups is due on Wednesday at 10:30pm, which is great because I like consistency.

I learned that it is possible to avoid the late work penalty if you submit a note attesting to the facts that you started working on an assignment 3 days in advance, went to bed before midnight the night before that assignment was due, made a reasonable effort to complete the assignment by midnight; and talk to Sam about the problems you've had with that assignment.

One important thing I learned in this part of the assignment is that Sam can be contacted through IRC.

I haven't been on IRC much this semester. I'll try to remember to get back on.

I learned when working on assignments, students can collaborate on design and debugging.

I learned Sam's office hours.

Your policy on citation (what is an ideal citation as well as what is just acceptable). Essentially, if nothing else, make sure it's clear what code I did not come up with entirely on my own, and provide a source (person/book/url etc.) of the code/inspiration.

I learned that the tests (other than the final) will be take-home. Which made me quite happy, I much preferred the style of CS 151's take home tests vs. CS 161's in class exams.

Our style isn't quite the same as 151, but we do use take-homes.

That I can just download the class schedule from Google docs.

Really? I hadn't known that.

That tests are graded A if I get all of them right, B if I get 3 of them right, and etc.

You like the holy grail.

Presumably, that's "Monty Python and the Holy Grail".

I should stop you in class if I am confused about something.

Lessons from the first day of class

I learned that it is okay to ask questions in class, even on the first day.

I learned that this class is themed around creating pro-social software for the Android operating system!

I learned that you have 120 students total which is a lot for Grinnell I think.

I learned about the 3 questions that I should keep in mind when making an ADT. [x2]

Good. I'll expect you to remember those.

I learned that I can check the Google Calendar for events related to this class.

I learned that the Android development material did not work well last semester. I learned that the primary focus of the course isn't on learning Java but is rather on developing programming skills - I was definitely in the "oh they're just gonna teach me Java" camp.

I learned about the basic concepts of object oriented programming: Encapsulation, Inheritance, and Polymorphism. [x4]

Learning that I can call you Sam is one of the important things I learned in class today. I went to schools where calling instructors by either their first name or last names only was a punishable offence. We were supposed to address them by Mr or Mrs, Dr., Sir., and at times, Prof.

I got reminded that it had been a while since I last worked on functional program, specifically Scheme, and there is need to touch base as soon as possible.

On the first day of class I learned the difference between functional, imperative and object oriented problem solving and how it relates to programming. [x3]

I learned that one of the goals of OO programming is to hide the underlying representation of code, so that clients cannot manipulate it, potentially causing the code to malfunction.

I learned that rather than starting fresh in every program, OO design bases new code on old code and we should not repeat the same code many time; instead we should write a separate procedure. [x2]

I learned some simple basics about abstract data structures and how you can arrange data.

I have an idea of how the class will be structured.


Sam is not scary. [x2]

It's hard to think, speak and type at the same time.


This course is basically the "gateway" to the major, and will give us more programming experience.

You will be expected to answer questions in front of the whole class, so be prepared.

I also learned the names of the different kinds of documentation that are important for understanding the full reasoning or function of the code: client, peer, and system. [x2]

Just so you know, these are not formal names. They are just useful ways of thinking about kinds of documentation.

I learned what we will be covering throughout this class.

I learned how programs and software use object-oriented approaches.

On the first day of class I learned everybody's preferred gender pronouns.

What I should do in class each day.

What I should do in preparation for each class.

This class it not just "the Java class" but is about a number of important concepts, such as problem solving and algorithms.

Polymorphism is a thing and it sounds cool.

Some names.


The class emphasizes object-oriented problem solving. Objects combine data and operations.

Documentation is important in that it often can translate the code into English, which may help people reading over your code (if its wrong) to figure out what you are trying to get your code to do. This may be split up into what the code is doing and how it is going about doing that.

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.