Computer Science Mount Holyoke College
  CS211 Data Structures , Fall 2007


 

Instructor: 
Class Meets:
Classroom:

Office Hours:
Office:

Email:

Professor Xiaoyan Li 
M, W 11:00 AM-12:15 PM
Clapp 218
T,Th 10:00-11:00 AM
Clapp 227
xli@mtholyoke.edu

 

 


Course Update Information 

  • Friday, Sept 7. First Day of  Class - Wednesday class schedule will be observed . Welcome all!

 

Course Objectives

This course teaches the basic techniques to orgranize data in a running program  You will know about well-known data structures as listed in the Quick Syllabus . You will be able to

(1) implement these structures as classes in C++;
(2) determine which structures are appropriate in various situations;
(3) confidently learn new structures beyond what's presented in this class. 

You will also learn part of object-oriented programming and software development methodology.
 

Quick Syllabus

To become a Data Structures Expert 
start by learning...

·  Precondition/Postcondition specifications 

·  Time analysis techniques 

·  Container classes 

·  Pointers and dynamic arrays 

·  Linked lists 

·  Templates and iterators 

·  Stacks 

·  Queues 

·  Recursive thinking 

·  Trees 

·  Sorting and searching techniques

Textbook and References

Textbook: Data Structures and Other Objects Using C++,  Third Edition, by Michael Main and Walter Savitch ,ISBN 0-321-19716-X, Addison Wesley, softcover.

Supplements:  The Code for the Book and the Corrections for the Text will be useful and can be found by clicking here .

References: Lots of good sample codes are found in  C++ How to Program by Dietel & Dietel, 3rd Ed., Prentice Hall 2001, QA76.73.C153D45, ISBN 0-13-089571-7. 

Prerequisites

CS101 (Problem Solving and Structured Programming) and CS102 ( Object Oriented Programming). You should feel confident in your ability to design and implement simple programs using arrays and functions. As a rough guideline, all the materials before Chapter 5 (Pointers and Strings) of C++ How to Program by Dietel & Dietel are assumed to be understood. You should be familiar with some programming environment--either a PC or a Unix system.

Schedule

The following schedule is based on Fall 2007 academic calendar :

 

Date

Planned Lecture Topics

Read/Assign/Exam

 
Sep 07 (F) 


Lecture 1. Introduction & Software Development


Ch. 1

Sep 10 (M)
Sep 12 (W) 

Lecture 2. ADT & C++ Classes  ( code
Lecture 3. More Classes and Operator Overloading  

Ch 2.1-2.3;  Assignment 1
Ch 2.4-2.5

Sep 17 (M)
Sep 19 (W) 

Lecture 4.  Container Classes
Lecture 5. Container Classes (cont.)

Ch 3 (code )
Ch 3, Assignment 2

Sep 24 (M)
Sep 26 (W) 

Lecture 6. Pointers and Dynamic Arrays (I)  ( point code with pointers )  
Lecture 7. Pointers and Dynamic Arrays (II)

Ch 4.1 - 4.2
Ch. 4.2 - 4.5

Oct 01 (M)
Oct 03 (W) 

Lecture 8. Dynamic Classes and the Big Three ( code )
Exam Review 1

Assignment 3

Oct 08 (M)
Oct 10 (W) 

Mid-semester break; no class!
First Exam
(Chapters 1-4)

 

Oct 15 (M)
Oct 17 (W) 

Lecture 9.  Linked Lists ( code )
Lecture 10. Building &Using the Linked List Toolkit  ( code )

Ch. 5.1-5.2,Assignment 4
Ch. 5.3 - 5.5

Oct 22 (M)
Oct 24 (W) 

Lecture 11. Software Development using Templates and Iterators
Lecture 12. Stacks (code ) and Queues (code )

Ch. 6,  code (bag4&5 , node2 )
Ch. 7, Ch 8  

Oct 29 (M)
Oct 31 (W)

Lecture 13. Introduction to Recursion 
Lecture 14. Using and Reasoning about Recursion

Ch. 9.1 , Assignment 5  
Ch. 9.2 - 9.3

Nov 05 (M)
Nov 07 (W)  

Exam Review 2 ; Assignment Discussions
Second Exam
(Chapters 5-9)

 

Nov 12 (M)
Nov 14 (W)  

Lecture 15. Trees and Traversals  ( code )
Lecture 16. Binary Search Trees and the Bag Class with a BST

Ch. 10.1-10.4
Ch. 10.5, Assignment 6

Nov 19 (M)
Nov 21 (X) 

Lecture 17. B-Trees and Set Class (code )
Thanksgiving Holiday


Ch. 11.2

Nov 26 (M)
Nov 28 (W)

Lecture 18. Heaps and Priority Queues; Time Anaysis of Trees
Lecture 19. Searching

Ch. 11.1, 11.3, 
Ch. 12.1-12.4

Dec 03 (M)
Dec 05 (W)

Lecture 20. Hashing
Lecture 21. Quadradic Sorting

Ch. 12.2-12.4
Ch. 13.1,  Assignment 7

Dec 10 (M)
Dec 12 (W)  

Lecture 22. Recusive Sorting , Heapsort & the STL Quicksort (code )
Exam 3 Review, Assignment Discussions

 Ch. 13.2-13.4

Dec 15-19

Final exam (mainly Ch 10-13, some from Ch 1-9) 

 

 


Assignments and Grading

See syllabus above for the tentative timetable for a schedule. There will be six to seven programming assignments distributed roughly every two weeks (counted roughly 30% of your final grade).  Several in-class small quizzes will add up to 10 % of your final grade. There will be three in-class exams (60% of your final grade). Dates of these exams will be announced beforehand.

Policies:  Students may discuss ideas together. But since each student get credits for his or her submissions, all actual program code and written answers must be done separately by each student, and must not be shared.

Communications: I would like the course to run smoothly and enjoyably. Feel free to let me know what you find good and interesting about the course. Let me know as soon as possible about the reverse. You may see me in my office during my office hours or send me messages by e-mail.

Computing Facilities

The language used for this class is  C++ as supported by today's available compilers. You may use either Windows or Unix/Linux machines to work on your projects. GNU or Borland compilers work better with the sample code provided with the book for both examples and projects.


Copyright @ Xiaoyan Li , Mount Holyoke College, Fall 2007.