CS 216: Data Structures


Instructor   : Jaime Davila


Office       : ASH 204
Office Hrs   : Tuesdays & Thursdays 10:30 A.M. -12:00 P.M.
               Fridays              12:00- 1:00 PM.
               Or by appointment.
Phone Number : 413-559-5687
email        : jdavila at hampshire dot edu

Course textbook : Working Classes; Data Structures and Algorithms Using C++. 
Authors         : Rick Decker & Stuart Hirshfield
Publisher       : PWS Publishing

You might also want to invest in an additional book for you to use as a secondary reference for matters having to do with C++ (since this course is about data structures, and not about C++). If you want to buy such a reference book, my best advice is for you to go to a bookstore, look at the books on C++ they might have, and choose the one you find easier to understand, or more "user-friendly". All books tend to cover the same material, so it comes down to your subjective judgement. Whatever else you buy, the book Working Classes is a most if you want to efficiently follow the course material. 
Extremelly Important Note:

This course is designed for students with previous programming experience (for example, for students that took CS-109, or an equivalent introduction to programming, or students that have programmed in the recent past). That means we will be assuming you already have programming experience, and are familiar with topics such as arrays, functions, and pointers (among others). If you are not sure about your programming experience, make sure you talk to me to see if it is the best thing for you to take this course at this time.


Evaluations:

End-of-semester evaluations will be based on six homeworks to be assigned during the course. In addition, you are expected to contribute to class discussions, both during regular class and during homework discussions (explaned later below).



You will need to submit homeworks via email. You can get instructions on how to do this at http://helios.hampshire.edu/jdavila/submit_via_email.htm

Homeworks will always be due on Tuesdays at midnight. In our Thursday meeting after a homework is due, we will spend a good part of the class discussing several submitted methods for solving the assigned problem. Sample  homeworks will be projected on screen (with submiter's name removed) so that we can all discuss the pros and cons of the methods used together. For this reason, late homework will not be accepted.

As soon as the material pertaining to an assignment is covered in class, you will be able to read the details about the assignment by clicking on the assignment anouncement on this page.

These assignments are designed to take you several hours of work. You should start working on them as soon as they are assigned.



The following schedule should help you in preparing for the different topics we will be talking about during this semester. We will all enjoy and get more out of the course if you do the suggested readings before coming to class.

I encourage you to take advantage of the syllabus shown below in order to remain on schedule.


Week Dates Topics Assignments Reading
1 Jan 27 Course outline.
What the course is and is not about.
What you should expect of the course.
Evaluations, homeworks, office hours, etc.
Introduction to the course. 
Classes: a "super-structure". 
Object Oriented Programming, Abstract Data Types.
  Chapter 1
2 Feb. 1, 3 Object Oriented programming.  Assigned: First homework, dealing with simple classes (due Feb 8). Chapter 1.
3 Feb 8, 10 Lists. First assignment is due February 8. Chapter 2.
4 Feb 15, 17 Lists Second homework now due February 29. Chapter 2
5 Feb 22, 24.  Stacks Assigned: Second homework, dealing with lists (due February 29). Chapter 4.
6 Feb. 29, Mar. 2 Stacks, Queues Second homework due February 29.

Assigned: Third homework, dealing with stacks (due March 7).

Chapter 4.
7 Mar 7, 9 Queues Assigned: Fourth homework, dealing with queues (due March 21).

Third assignment due March 7.

Chapter 4. 
8 Mar. 21, 23 Recursion Fourth assignment due March 21. Chapters 5.
9 Mar. 28, 30  Recursion, trees, templates   Chapter 6 & 7.
10 Apr. 4, 6 Trees Assigned: Fifth homework, dealing with trees (due April 11). Chapters 6 & 7.
11 April 13 Trees We will not meet on April 11, but the fifth assignment is due that day. Chapter 7.
12 April 18, 20 Trees, Graphs   Chapter 8.
13 April 25, 27 Graphs   Chapter 8.
14 May 2, 4 Graphs Final homework/portfolio assigned (due May 12th). Chapter 8.