(Updated throughout the semester - the most relevant updates will occur at the bottom)

Spring 2015: Computer Science II - Data Structures, CS:1210 (22C:021)

Meeting Details

The course meets 2:30-3:20 pm Monday, Wednesday, and Friday at the Main Library (SHAM LIB). Each student is also registered for and will attend a weekly discussion section conducted by one of our TAs.

Instructor

Benton McCune, email:benton-mccune@uiowa.edu

Course Summary

In programming, one often needs to store, query, and update large amounts of information. There are usually many ways in which a program might do this information processing. The choice of the right data structure is often more important than the hardware available. Your choices could determine whether your program is efficient or even works at all. It is at the heart of good programming.

We will begin in a modest way, by first acquiring familiarity with the constructs in Java, the programming language we will use. We will use the NetBeans Integrated Development Environment (IDE). This is free and you can download it bundled with Java. You can download it here.

We will examine several data structures. Among them will be 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. Hopefully we will have time to cover graphs and basic algorithms on graphs as well. Only through learning these basic data structures does one develop the ability to choose the right data structure for the right problem. The aim of the course is to give you a solid, theoretically grounded understanding of basic data structures. The hope is the work that you put in this course will increase your sensitivity to the importance of choosing the right data structures as well as your ability to choose them when confronted with new problems. The foundation laid here should serve you well in future coursework and programming endeavors.

For our textbook, we will use "Data Structures and Algorithms in Java", by Goodrich, Tamassia and Goldwasser, ISBN-13: 978-1118771334 .

Prerequisites

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

Grading

The grading will be based on several homework assignments and some quizzes (20%), two in-class midterms (20%), and the final (20%). The remaining 20 percent will be the highest of your homework/quiz average or your exam average.

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. Most of the homework will involve programming in Java. The quizzes will usually be in discussion rather than lecture and may be announced or unannounced. A missed quiz will result in a zero and there will be no accomodation outside of a documented emergency.

The policy on late homework 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 homework 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 quota is depleted by one day.

Exam Dates

The first midterm exam will be on Wednesday, February 25th. The second midterm exam will be held on Wednesday, April 8th. The midterm exams will be held in our classroom at our regularly scheduled time. The final exam will be given on Thursday, May 14th 5:30 pm at VAN LR2.

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. Your TAs will lead discussions according to the following schedule.
Section         Time                    Location              TA			 Email
A01             8:30-9:20  Th           31 SH                Charlie Shi                 shuochao-shi@uiowa.edu
A02             9:30-10:20 Th           213 MLH              Charlie Shi                 shuochao-shi@uiowa.edu         
A03             9:30-10:20 Th           210 MLH              Shivam Tomar                shivamsingh-tomar@uiowa.edu
A04             11:00-11:50 Th          E138 AJB             Aishwarya Murali            aishwarya-murali@uiowa.edu
A05             12:30-1:20 Th           116 MH               Aishwarya Murali            aishwarya-murali@uiowa.edu
A06             5:00-5:50 Th            346 JH               Shivam Tomar                shivamsingh-tomar@uiowa.edu                

Office Hours

Office hours are below. Note that you can also meet any of us at times other than those listed below by appointment.

Name              Time                                      Location
Benton      10:00-12.00 Tue, 3:30-4:30 Wed.                 101B MLH
Charlie     11:30-12:30 Wed, 10:30-12:30 Fri.               301 MLH       
Shivam      3:30-5:00 & 6:00-7:30 Tue                       301 MLH       
Aishwarya   3:30-5:00, Mon. and Wed                         301 MLH         

Communication

Your TA will be the best person to contact for questions and programming help. If you have any problems with regards to your coursework, please do not hesitate to contact them. You are also welcome to contact me with course related questions. I will attempt to be prompt in my replies. I would strongly encourage you to always include CS:2230 within the subject of your message.

Course Web Site & ICON

The main source of information for the course will come through this website. Homework submission and grades will done through ICON.

University Policies

Please follow this link for information on general University policies.

Syllabus Handout

Here is a copy of the syllabus from the first day of class.

What we cover each week

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

Homework

  1. Homework 1 (Due Monday, 1/26 at 11:59 pm) link
  2. Homework 2 (Due Monday, 2/2 at 11:59 pm) link
  3. Homework 3 (Due Monday, 2/9 at 11:59 pm) link
  4. Homework 4 (Due Wednesday, 2/18 at 11:59 pm) link
  5. Homework 5 (Due Wednesday, 3/4 at 11:59 pm) link
  6. Homework 6 (Due Wednesday, 3/25 at 11:59 pm) link
  7. Homework 7 (Due Friday, 4/3 at 11:59 pm) link
  8. Homework 8 (Due Monday, 4/20 at 11:59 pm) link
  9. Homework 9 (Due Monday, 4/27 at 11:59 pm) link
  10. Homework 10(Due Wednesday, 5/6 at 11:59 pm) link