CS 151: Principles of Computer Science II

Semester: Spring 2009
Room: King 221
Class Time: Mon/Wed/Fri 10:00pm-10:50am
Office Hours: Tuesday, 3:00-4:30pm
Friday, 2:30-4:00pm
or by appointment
Professor: Benjamin Kuperman
email: benjamin.kuperman AT oberlin edu
Please include "cs151" in the subject.
AIM: ProfKuperman
Office: King 223B
Phone: x58556



(Subject to change)
1 Feb 02   Course Overview Lab 0 - Intro to lab/Eclipse
Feb 04 Review of Java and Object Oriented Programming
(Skim: Ch 1-3, Read: 2.5, 2.6, 3.3)
Feb 06
2 Feb 09   Inheritance, Generics, and Collections
(Read: Ch 4, 6)
Lab 1 - MyArrayList
Feb 11 Last Day to Add/Drop Data Structure: Array Lists, Iterators
(Read Ch 15)
Feb 13   Algorithm Analysis
  • Big-Oh Notation
  • Algorithm Growth
  • Classes of algorithms

(Read Ch 5)
3 Feb 16   Lab 2 - Algorithm Timing
Feb 18 Recursion
  • Divide and Conquer
Data Structure: Stacks
Data Structure: Queues
(Read Ch 7.1-7.3, 7.7, 16)
Feb 20 Kuperman at ACEIS 2009
Awesome guest instructor!
4 Feb 23   Data Structure: Linked Lists
(Read Ch 17)
Lab 3 - Maze Solver
Feb 25
Feb 27
5 Mar 02   Data Structure: Trees
  • General
  • BST
  • AVL
  • Red-Black

(Read Ch 18,19)
Lab 4 - Directory
Mar 04
Mar 06
6 Mar 09   Lab 5 - Binary tree methods
Mar 11
Mar 13 Swing and Graphical User Interfaces
(Read Appendix B)
7 Mar 16   No Lab
Mar 18 Review for exam
Mar 20 Midterm Exam [topics]
  Mar 23 Spring Break (Mar 21-29)
Mar 25
Mar 27
8 Mar 30   Data Structure: Priority Queues
  • Heaps
  • Array based heaps
  • Heapsort

(Read Ch 21)
Lab 6 - Word Frequency Tree
Apr 01
Apr 03
9 Apr 06   Data Structure: Hashtables
(Read Ch 20)
Lab 7 - Process Queries
Apr 08
Apr 10
10 Apr 13   Data Structure: Tries Lab 8 - Hashtable/GUI
Apr 15 Tentative: Data Structure: Graphs
  • Representation
  • Shortest Path
  • Topological Sorting

(Read Ch 14)
Apr 17
11 Apr 20   Lab 9 - Boggle solver
Apr 22
Apr 24
12 Apr 27 Last Day for P/NP, CR/NE,
  or Withdraw
Lab 10 - Kevin Bacon Game
Apr 29   Sorting Algorithms
  • Selection
  • Bubble
  • Insertion
  • Shell
  • Merge
  • Quick

(Read Ch 8)
May 01
13 May 04   Lab review and Eclipse tips
May 06 Other structures and algorithms
  • B-Trees
  • Huffman compression
  • String edit distances
  • dynamic programming

(Read ??)
May 08
  May 13 Final Exam (7-9pm King 221) [topics]

Course Description

From the Oberlin catalog course description:

This course builds upon the principles introduced in CSCI 150 and provides a general background for further study in Computer Science. The course will cover object-oriented programming concepts; the design and implementation of data structures (linked lists, stacks, queues, trees, heaps, and hash tables) and related algorithmic techniques (searching, sorting, recursion); and algorithm analysis. Students will be expected to complete a number of programming projects illustrating the concepts presented.

Goals and course objectives

My goals and objectives for students taking this course are as follows:

  1. Understand Big-O measurements and why it is of great importance to data structures and algorithms
  2. Study common algorithms used in computer science
    • Sorting: Bubble, insertion, shell, merge, quick, heap, radix
    • Searching/Selection: Linear, binary, quick
  3. Become skilled in common data structures (lists, stacks, queues, trees, heaps, hashtables)
    • Be able to create any of these from scratch -- structure and operations
    • Know the running times for the most common operations
    • Be able to reason about which structure is most appropriate for a given task
  4. Become fluent in Java programming including
    • Design and creation of interworking classes
    • Proper use of visibility modifiers
    • Creation and handling of exceptions
    • Regular use Javadoc
  5. Gain experience using various tools in the Java/Linux environment
  6. Develop the habits of proper coding and thorough testing


The text for the course is Data Structures and Problem Solving Using Java, Third Edition by Mark Weiss. All of the code from the text is available on the author's website: http://www.cs.fiu.edu/~weiss/dsj3/code/code.html

Data Structures and Problem Solving

Data Structures & Problem Solving Using Java by Weiss

You can use the 2nd edition if you want, but you'll need to read up on the features added in Java 5 on your own.

A copy should be on reserve in the library.


Course grades will be calculated based on the following distribution:

The distribution might be adjusted based on the progression of the course.

Programming projects will generally consist of two major components:

  1. An underlying data structure implementation
  2. An application of this data structure
The actual breakdown of points will depend on the individual project, but the plurality of points will be for the data structure implementation. Projects will also be graded on style, documentation, and test cases.

If a portion of your program is not working correctly, please clearly indicate it in the comments at the beginning of the file and in the methods that are not working. Problems that I discover are graded more severely than those you discover.

Programming assignments will be graded on both correctness as well as programming style. Good programming style includes the following:

More information on Java style can be found on Sun's Code Conventions web page. There is also an open source tool checkstyle that can be used to check the style used.

Course Policy


Regular class attendance and participation is expected. Please talk to me if regular class attendance is going to be a problem.

Homework Assignments

There will be a number of assignments made in this class. I expect every student to attempt each assignment and turn in the results. You are encouraged to complete every assignment as this is one of the most effective ways to learn the material.

If you know that for some reason you will not be able to submit the assignment before the deadline, you should contact me in advance of the deadline. Extensions are only granted in exceptional circumstances, but need to be done in advance.

Late submissions of lab assignments will be penalized up to 10% per day.

Accommodations for students with disabilities

If you have a disability that might impact your performance in this course, or requires special accommodation, please contact me as soon as possible so that appropriate arrangements can be made. Support is available through Student Academic Services, specifically Jane Boomer. You will need to contact them to get your disability documented before accommodations can be made.

Plagiarism and Academic Dishonesty

I have very low tolerance for academic dishonesty, and will vigorously pursue available remedies for any incidents. All work in this class is to be performed according to the Oberlin Honor Code. Specifically I expect that:

  1. Quizzes and exams will be closed book, closed notes, and no communication between students. This includes discussing the same to students who are taking the quiz at another time.
  2. Discussion of assignments is expected and encouraged, however all work and code on assignments should be your own without outside assistance.
  3. Sources should be cited including the textbook and other web sites when you use them in your work.
  4. You are not permitted to share your source code with other students, including future ones.
  5. You are not permitted to use other students solutions as your own, nor answer keys, nor instructor versions.

Illustrative examples:

  1. Confirming that we had and exam is OK, telling another student in the class who has not taken it that it was easy/hard, what topics, etc. is NOT OK.
  2. On a project or homework, discussing what needs to be done and how it can be done is OK, having a student (other than a TA) go over your code is NOT OK, discussing what might be wrong and how to tell is OK (and encouraged).
  3. On an assignment, you base your design off of the textbook's example. This is OK if you cite the source in the code. You don't need to have it be part of the Javadoc.

All assignments must include the following signed statement:

"I have adhered to the Honor Code in this assignment."

Electronic submissions should include the honor statement in either the README file or header comments and must include your name.

Grader and Tutors

Contact me if you are interested in a Student Academic Services approved tutor.

The CSMC might hold walk-in tutoring sessions as well.

The CS department will be hiring a couple of students to work as lab helpers. They will be in the upstairs lab during the hours posted below.

Joe Kramer-Miller Sam Cole Kiron Roy
Joe Kramer-Miller
Lab hours: Sun 2:00-5:00pm
Sam Cole
Lab hours: Sun 7:00-9:00pm
Kiron Roy
Lab hours: Tues 8:00-10:00pm

VI PoweredLast Modified: March 01, 2009 - Benjamin A. Kuperman

Valid HTML 4.01 Strict Valid CSS!