Fall 2011: Computer Science II, Data Structures, 22C:021


The course meets 2.30--3.20 am Monday, Wednesday, and Friday at 125 Trowbridge Hall. Each student is also registered for and will attend a weekly discussion section conducted by one of our TAs.


Kasturi Varadarajan, 101D MacLean Hall, Phone: 335-0732, email:firstname-lastname@uiowa.edu

What this Course is About

Programs, in the course of performing computation, often need to store, query, and update large, or somewhat large, amounts of information. There are usually different ways in which the program can be designed to do this information processing. Some of these ways are good, and others not so good. In several contexts, this distinction is crucial -- it can determine whether an application is useful or completely useless. In brief, then, the goal of this course is to learn that there are usually these different ways of doing the information processing, which are called data structures, and to learn to be increasingly sensitive to the distinction between the good and the bad ways.

That is a lofty goal, but we will begin in a modest way, by first acquiring familiarity with the constructs in Java, the programming language we will use. We will then learn some rather neat things to do, like solving problems using recursion and building linked lists.

We will then dive into several data structures, such as stacks, queues, lists, trees, priority queues, hash tables, and binary search trees. Each of these is a good way of processing information in some contexts, as we will see. Finally, assuming time permits, we will finish off by discussing graphs and basic algorithms on graphs, which illustrate quite well the idea of a good data structure.

For our textbook, we will use "Data Structures and Algorithms in Java", by Goodrich and Tamassia, ISBN 978-0-470-38326-1.


Computer Science I (22C:016). Discrete Structures (22C:019) is a corequisite if not taken as a prerequisite.


The grading will be based on several homeworks (35 percent), quizzes (5 percent), two in-class midterms (15 percent each), and the final (30 percent).

There will be a quiz every friday that will take no more than five minutes. I expect there to be twelve to fourteen quizzes overall. Each quiz will be worth 1 point. Your overall grade on the quiz will be the minimum of 5 and the expression (5 * total points on quizzes)/10. Notice that you can do 10 quizzes perfectly and get the maximum grade on the quizzes. So you will not be allowed to make up missed quizzes.

Roughly speaking, there will be a homework every week, and I will try to make these due on Monday. This way, you may make greater use of the TA discussion sections on thursday. Most of the homeworks will involve programming in Java.

The policy on late homeworks is that you have a quota of three days for the entire semester that you may use for late submissions. So for example, there will be no penalty if you submit the fifth homework a day late, the seventh two days late, and the rest of the homeworks on time. Once you use up your quota of three days, any homework submitted late will not be accepted and you will get 0 points for that homework.

When you submit a homework X days late, your quota gets decreased by X irrevocably. You can only be late by an integer number of days -- if you submit 10 hours after the deadline, for example, your quote is depleted by one day.

Exam Dates

The midterms will be in our usual classroom and during our class on Wednesday, Sep 21 and on Wednesday, Oct 19. The final will be at 7.30 am -- 9.30 am on Tuesday, December 13, in our usual classroom. (The final is scheduled by the Office of the Registrar.)

Teaching Assistants and Discussion Sections

Each of the students in the class is registered for a discussion section that he/she is expected to attend. The TAs for the class are Daniel Squires and Rajeev Penmatsa. See the firstday handout for their email addresses. They will lead discussions according to the following schedule.
Section         Time                    Location                TA
A01             8:30-9:20 Th            14 SH                   Daniel 
A02             9:30-10:20 Th           110 MLH                 Rajeev
A03             2:00-2:50 Th            118 MH                  Rajeev 

Office Hours

Kasturi         3.30--4.30 Mon, 3.00--5.00 Thu                101D MLH
Daniel          2.00--3.00 Tue, 2.00--3.00 Thu                101C MLH
Rajeev          9.00--10.00 Mon, 10.30--11.30 Thu             201G MLH

What we cover each week

We will keep a brief summary of what we cover each week here.

Handouts and Notes

Homework Solutions

Daniel Squires, one of our TAs, is maintaining a page with the solutions to the homeworks.