CSC 207.02 Grinnell College Fall, 2018
Object-Oriented Problem Solving, Data Structures, and Algorithms

Note: Although this course is reasonably well developed,
expect adjustments in some details as the semester progresses and the course evolves.

 Class Schedule  Supplemental Problems  In-class Materials  Deadlines
 Instructor  Textbooks  Anticipated Work Load
 Course Work  Collaboration  Tutors and Mentors
 Cell Phones  Accommodations  Grading

CSC 207, Object-oriented Problem Solving, Data Structures, and Algorithms, explores object-oriented problem solving using the Java programming language (a language widely used for large-scale applications and systems). Topics and themes covered include:

To cover this material, the course is roughly divided into 12-13 units:

  1. Introduction to Object-oriented problem solving and Java
  2. Objects and classes
  3. Utilizing objects and classes
  4. Generics and interfaces
  5. Introduction to the analysis of algorithms
  6. Collections
  7. Software development with assertions and loop invariants (as scheduling permits)
  8. Sorting
  9. Implementing collections
  10. Linked lists
  11. Tree structures
  12. Hashing and hash tables
  13. Heaps and heap sort
  14. Graphs

Blended through the course, several discussions will highlights approaches for effective and efficient software development.


Henry M. Walker

Office: Science 2806
Telephone: extension 4208

Office hours are posted weekly on the bulletin board outside Science 2806, with additional hours possible by appointment. You may reserve a half hour meeting by signing up on the weekly schedule, but please sign up at least a day in advance.


The following text has been selected to support this course:

In addition, the following on-line references may be useful:


While the schedule for this course is expected to evolve, a detailed Tentative Class Schedule is posted with readings, labs, assignments, examples, etc. This schedule will be updated as the course evolves.

Anticipate Work Load

This course includes a variety of activities, including class preparation (reading), labs and projects (started in class and finished for homework), and supplemental problems (some required and some available for extra credit), as well as quizzes, tests, and a final exam. From past experience, the time required for these activities will likely vary substantially from student to student and from one part of the course to another. For example, a student may need to devote considerable time and effort when starting a new or different topic, but the workload may drop noticeably when that material is mastered.

Such variation in student experiences complicates any estimation of the time individual students may need to devote to homework for this course. However, from past experience, students working steadily on the course likely should expect to allocate 10-15 hours per week to homework. Some students may require additional time for some weeks; some students may complete work in less time for some weeks. Conversations with computer science faculty and others suggest this time allocation is consistent with expectations for many courses at Grinnell College.

Course Work

All programming for this course must meet reasonable standards for clarity, readability, maintainability, and efficiency. Also, submitted programs must compile appropriately, tests should demonstrate program correctness, and some commentary is needed to explain why programs produce correct answers. See Notes on Program Standards for details on writing and testing programs according to basic standards.

Course Work will involve a combination of the following activities.


Deadlines are shown on the Tentative Class Schedule, and work is due at the start of each class specified. A penalty of 25% per class meeting will be assessed for any assignment turned in late, even work submitted at the end of a class. However, an extension of at least one class period is automatically granted if the department's Linux network is down for an unscheduled period of three or more hours during the week preceding the assignment. Normally, a program or laboratory write-up is due every third class meeting.

Although dates for labs, programming assignments, tests, and the final exam are firm, I understand that circumstances arise when you are not able to attend class.

Absolute Deadline: All homework must be turned in by Friday, 14 December at 5:00 pm;
laboratory reports or programs received after that time will not be counted in the grading of the course.


Collaboration often will be allowed on laboratory exercises, but collaboration normally will NOT be allowed on supplemental problems and tests. To avoid confusion, the rules for collaboration on homework are included in the specification of each assignment.

Cell Phones, Text Messaging, and E-Community Devices

Cell phones, text-messaging devices, and other social-networking connections may not be used in this class. If you bring such equipment to the classroom, it must be turned off before the class starts and stay off throughout the class period. Use of such equipment is distracting to those nearby and will not be tolerated.


If you have specific physical, psychiatric, or learning disabilities and require accommodations, please let me know early in the semester so that your learning needs may be appropriately met. You will need to provide documentation of your disability to the Director of Academic Advising. Feel free to talk to me if you have questions or want more information.


This instructor's grading philosophy dictates that the final grade should ultimately be based upon each student's demonstration of her or his understanding of the material, not on the performance of the class as a whole nor on a strict percentile basis. The following scheme is proposed as a base for how the various assignments and tests will be counted in the final grade.

Lab Write-ups: 30%     Supplemental Problems: 20%     Tests: 30%     Exam: 20%    

created 10 May 2011
revised 7 April 2012
updated 2 May 2013
updated 12 July 2014
updated 26 August 2014
updated 25 September 2014
updated 8, 26 August 2018
Valid HTML 4.01! Valid CSS!
For more information, please contact Henry M. Walker at

Copyright © 2011-2018 Henry M. Walker.
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License .