This course website is for section 1 of CSC 207 and is taught by Dr. Barbara Johnson. Our course meets Monday, Wednesday, and Friday 10:00 to 11:20am. If you are in section 2 (afternoons), please check with your instructor for the appropriate website and materials.

This home page contains all of the information about course expectations. If you have questions, please contact me as soon as possible. These are a basis for our collective work as a community of learners (yes, that includes me) in a time-boxed situation. In many cases, adjustments can be made in collaboration. And no document can cover every possible question. So .... ask rather than assume, please.

Table of Contents

Overview Topics Class Attendance
Textbook and References Assignments and Activities Grading
Academic Honesty Deadlines Contacting Me
Course Support Accommodations Religious Holidays


CSC 207 (Algorithms and Object-Oriented Design) is the third course in our introductory sequence, introducing students to the third of our programming paradigms (object-oriented programming), commonly used algorithms and datastructures, analysis of algorithms, and the Java programming language.

Like the prior classes, this is a lab course. I will generally lecture for approximately 20 to 30 minutes per class session, and the remaining time will be devoted to hands-on learning through conducting labs with a partner. Attendance is therefore required for every class period. See the "Class Attendance" and "Accomodations" sections for more details.

If the pandemic worses, there may be some adjustments to how we conduct class activities, but these changes will be posted here and discussed in class as necessary.

Contacting Me

Email: johnsonba@grinnell.edu

Office: 2811 Noyce (Science Center)

Phone: 641-269-4695 (which I rarely check .... I recommend using email or stopping by my office)

Office Hours

What do "office hours" mean to me?? These are scheduled times when I guarantee that I will be in my office and able to answer student questions. When you come to my office hours, please don't apologize for disturbing me. This is YOUR TIME and it is set aside for informal, student consultations. If no students are in my office, I will be working on something (this is Grinnell College after all), but I will stop what I am doing to meet with you.

There are times when many students will be stopping by (often before quizzes, tests, and assignment due dates). I may give you advice on solving a problem and ask you to come back after you've tried that approach. Or, if it is OK with everyone, we may turn an individual's question into a group problem-solving session.

If at all possible, try to bring questions during "office hours". I schedule these based on student polls (and around my classes and recurring meeting times), but I know that they will not fit every student's schedule. So, if you cannot attend office hours, please set up an appointment!!


This course covers a great deal of information and core software development skills and concepts. From a high level perspective, we will cover:

  1. Java 11
    1. Language and syntax
    2. Packages and the Java Virtual Machine
    3. Exceptions and handlers
    4. The Eclipse IDE
  2. Object-Oriented Software Design
    1. Polymorphism
    2. Inheritance
    3. Abstraction
    4. Encapsulation
    5. Generics
    6. Design Patterns
  3. Core Abstract Data Types
    1. Arrays
    2. Lists
    3. Trees
    4. Maps
    5. Graphs
    6. Heaps
  4. Unit Testing
  5. Version Control
  6. Algorithms and Algorithm Analysis
    1. Sorting
    2. Analysis of run-time complexity


Like our other core, introductory courses, this is a lab-based course in which you will work with a partner to complete programming projects in class. It is extremely important, therefore, that you attend class and participate in the coding practice. Students often over-estimate their ability to learn this material on their own or catch up if they fall behind. Therefore, I will take attendance each class period. If you think you might have to miss class or be late, contact me in advance so that we can make arrangements to keep your progress on track.

Attendance (or lack thereof) will affect your grade. I will deduct 2% from your final grade for each unexcused absence and 1% for each time you are late to class. However, each student is allotted a 4% “penalty buffer,” so you may miss two classes or arrive late four times with no impact on your final grade. This policy is intended to give you the flexibility to deal with brief illnesses or personal issues that require you to miss class. 

Recognizing that we are operating in the midst of a pandemic, it is even more important that you keep me informed if you think you might be affected by COVID-19 and a quarantine period so that we can arrange for remote learning and extended deadlines, if necessary.

No matter why you miss class, you are responsible for the material covered! You should consult the class slides, talk to other people in your class, do the day's labs, and come to office hours with whatever questions you have.

Textbook and References

We are using Mark Allen Weiss' Data Structures & Problem Solving Using Java, 4th Edition. This book is purchasable from the bookstore, and there should be used copies available.

Other readings will be in digital format and available from the schedule.

Assignments and Activities

This course follows a lab-based format. Thus, work related to [almost] all class sessions proceed in three stages:

  1. Read Before Class: Reading assignments will incorporate both assigned readings from the textbook and online readings (links found on the schedule page). Textbook readings are assigned on most days, and those assignments can be found noted on the schedule. Students are expected to complete assigned readings prior to each class session. Each student should prepare a list of questions or topics for class discussion, should questions arise on the reading.

  2. Ask Questions and Work on Lab during Class: Each class will begin with questions from students, based on the reading. Following this initial discussion, the course may involve a short lecture or an ungraded quiz on the reading. After these preliminaries, students will work collaboratively, in pairs, on a lab exercise based on the reading.

  3. Finish Lab for Homework: Although the in-class labs will help students get started on the lab exercises, students might not be able to complete the lab during the class period. Any lab work not completed during class should plan be finished as part of homework. I will assign lab partners that will generally change for each class period. Note: not all labs will be turned in for credit; however, you can expect the graded quizzes and tests will include questions or coding problems taken from either the reading or the labs.

Academic Honesty

All work in this course is governed by the rules of the college regarding academic honesty. In summary, standard practice requires that you must acknowledge all ideas from others.


All labs or assignments must be submitted by 10:30 pm on the due date. This allows us to grade them in a timely manner and to discuss the lab as a class while the assignment is still fresh in everyone's mind.

There are exceptions, of course, if you have an excused absence and have discussed the extension with your instructor ahead of time. If you do not have an extension, late assignments will be penalized 10% per day (weekends count as one day). Assignments that are more than 10 days late will not be accepted unless there are extenuating circumstances and permission has been grated in advance.

An extension of at least one class period is automatically granted if the department's Linux network (MathLAN) is down for an unscheduled period of three or more hours during the week preceding the assignment.

Course Support

This can be a very challenging course since it asks you to think in yet another way about problems that can be solved with computers. It will also cover quite a few topics and move quickly. So, I encourage you to reach out with questions or confusions as soon as they arise and seek help from one or more of the following sources:

Keep in mind that the type of help mentors and tutors will give is limited. Please see the page on the role of mentors and tutors in Computer Science for more information. You are expected to cite any help you receive from evening tutors or the course mentor on assignments and labs that are completed outside of class time.


My goal is to create a learning environment that supports the learning needs of all students. If you have a disability that requires an accommodation, please contact the Coordinator for Disability Resources, Jae Hirschman, located in Steiner Hall, 641-269-3089. Disability Resources will work with you to determine your needs and will provide you with paperwork detailing the accommodations you require (this is done electronically now). Please release this information to me at least one week before the course activity that needs to be modified for your accomodation.

Religious Holidays

Attendance in a lab class such as this one is important, however, I also support work-life balance and encourage you to attend to the non-academic aspects of your (our!) lives. Please let me know by week two if you will need to be absent from class for any religious holidays this semester, and we can work out an appropriate schedule for making up absences or missed work.


This instructor's grading philosophy dictates that the final grade should ultimately be based upon each student's demonstration of their understanding of the material, not on the performance of the class as a whole. In the interest of simplifying grading and keeping students up to date on their progress, I will NOT be calculating final grades using categories. All points are equally weighted. This means that you can easily calculate your current grade by summing your scores and dividing that sum by the total points possible so far. This, in fact, would be a useful project for you to do in Java!!

Points breakdown, subject to change!!

Letter grades are assigned by this schema:

Percentage Letter Grade
90 - 100 A
80 - 89 B
70 - 79 C
60 - 69 D
0 - 59 F

and I add modifiers (+ and −) based on the last digit of the score, as follows:

Last Digit Modifier
8 - 9 +
4–7 [None]
0 - 2 -

A D or F however, is not modified. And given the Grinnell College grading scheme, there is no C- either.