CS161 is designed to introduce students to object-oriented programming. As with CS160, the course interleaves theory, programming, and architecture concepts as needed to motivate and explain problem solving using object-oriented programming. The core of the course is explaining objects: how they represent data and how they are defined and used in Java. Fundamental concepts such as inheritance and polymorphism are introduced and explained in the context of programming assignments. Another major programming topic is recursion and its relationship to mathematical induction.

A student completing this course should be able to: implement object-oriented programs and understand the underlying principles such as encapsulation, abstraction and reuse; design and build more complex programs (multiple files and multiple objects) by dividing problems into parts that are easily solvable; and relate concepts from theory to programming and architecture, such as how recursion is programmed and implemented.

This course is essential for majors and other students who intend to use object-oriented programming to solve problems and who intend to write complex software. The course would be useful to any student intending to pursue Computer Science or Information Technology as a career.


Section 001
Instructor: Russ Wakefield
Office: CSB 240
Office Hours: W/F 1-2 PM
Lecture: 3:00-3:50, MWF, Clark A201
Jake Lee
Lab Hours in Room 120: 11-1 F
Shivani Dave
Lab Hours in Room 120: 1-3 Th, 4-8 Sun
Undergraduate TAs:
Ben Scott
Lab Hours in Room 120: 6-8 Sun, 3-6 Th
CS161 help hours - Room 120

4-8 Sundays
4-6 Mondays
12-6 Thursdays
10-3 Fridays


CS160 or CS153 with a C or better; M124, M126 (both with a C or better).


Java Programming (Required):

Java: An Introduction to Problem Solving and Programming
Savitch (7th edition)

Discrete Math (Required):

Discrete Mathematics and Its Applications
Kenneth Rosen (7th edition).
The Rosen text will be used in CS200 as well.

iClickers (Required):

You are required to purchase an iClicker remote for in-class participation. iClicker is a response system that allows you to respond to questions we pose during class, and you will be graded on that feedback and participation. In order to receive this credit, you will need to register your iClicker remote by logging into Canvas, selecting CS161, and then use the iClicker menu on the left side to register your iClicker. The remote ID is the number found on the back of your iClicker remote. If you cannot read the ID on your iClicker, there is a kiosk in the bookstore where you can retrieve it.


Section Days Time Who Where
L01 Friday 9:00a-10:40a Shivani Dave COMSC 215
L02 Tuesday 9:00a-10:40a Jake Lee COMSC 215
L03 Wednesday 12:00p-1:40p Shivani Dave COMSC 215
L04 Friday 12:00p-1:40p Ben Scott COMSC 215
L05 Tuesday 8:00a-9:40a Shivani Dave COMSC 225
L06 Tuesday 2:00p-3:40p Jake Lee COMSC 225
L07 Thursday 2:00p-3:40p Jake Lee COMSC 225


The course requires demonstration of a student’s grasp of the concepts, as follows:

Activity Weight
Assignments 20%
Recitations 15%
Quizzes 10%
Midterm Exam 1 15%
Midterm Exam 2 15%
Final Exam 25%

In order to get a C in the course the weighted average of your exam scores needs to be passing grade (60 and above).

As discussed in the policies page, there are no makeups for missed quizzes or recitations. To take into account circumstances in which you have to miss class, we will drop the lowest recitation grade and two lowest quiz grades.

Programming assignments are auto-graded, teaching assistants grade recitations, and paper quizzes. If you believe you have been graded unfairly, talk with them first.

  • Assignments must be done individually. As required by the department, we will check for collaboration using a software tool, and all cases of cheating will be reported to academic integrity.
  • Recitation participation is required. Part of the class grade comes from the effort you demonstrate towards successfully finishing the assigned lab work.
The assignment of letter grades will be made as follows:

Letter Grade Points
A ≥90%
B ≥80%
C ≥70%
D ≥60%
F <60%

We will not assign lower grades than shown and +/- grades will be used.

Important Dates

Description Date Location
Last day to withdrawOct 17th
First midtermWeek 6 in recitation
Second midterm November 4th CS110 Lab 8-4
Final Exam Online Quiz December 9th CS110 Lab 8-4
Final Exam - Written Comprehesive Dec 14th A205 7:30A-9:30A


You must read and be aware of the course policies.