Computer Science City College of New York
  CSc21200 Section KL Data Structures, Fall 2005 


Instructor: 
Class Meets:
Classroom:

Office Hours:
Office:
Email:
Professor Zhigang  Zhu 
T, Th 09:00-10:40 AM
NAC 5126
Tuesday 1:30-4:00 pm
R 8/210
zhu@cs.ccny.cuny.edu
 

Course Update Information 


 

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++,  Second Edition, by Michael Main and Walter Savitch , ISBN 0-201-70297-5, Addison Wesley, softcover, 816 pages. Textbook can be found in CCNY bookstore.

    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 CSc102's C++ How to Program by Dietel & Dietel, 3rd Ed., Prentice Hall 2001, QA76.73.C153D45, ISBN 0-13-089571-7. This course involves some of C++ language details that could be found in this book.

    Prerequisites

    CSc102 (Introduction to Computing) and CSc104 (Discrete Mathematical Structure I).  You should feel confident in your ability to design and implement simple programs using arrays and functions: as a rough guide line, 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 2005 academic calendar:

    Date Planned Lecture Topics Read/Assign/Exam
    Aug 30 (T) 
    Sep 01 (Th) 
    Lecture 1. Introduction & Software Development
    Lecture 2. ADT & C++ Classes  (code)  
    Ch. 1
    Ch 2.1-2.3;  Assignment 1
    Sep 06 (T)
    Sep 08 (Th) 
    Lecture 3. More Classes and Operator Overloading  
    Lecture 4.  Container Classes
    Ch 2.4-2.5
    Ch 3 (code)
    Sep 13 (T )
    Sep 15 (Th) 
    Lecture 5. Container Classes (cont.)
    Lecture 6. Pointers and Dynamic Arrays (I)  (point code with pointers)  
    Ch 3, Assignment 2
    Ch 4.1 - 4.2
    Sep 20(T)
    Sep 22 (Th) 
    Lecture 7. Pointers and Dynamic Arrays (II)
    Lecture 8. Dynamic Classes and the Big Three (code)
    Ch. 4.2 - 4.5
    Assignment 3
    Sep 27 (T)
    Sep 29 (Th) 
    Exam Review 1
    First Exam (Chapters 1-4) 

    Oct 04 (X)
    Oct 06 (Th) 
    No Classes
    Lecture 9.  Linked Lists ( code)

    Ch. 5.1-5.2, Assignment 4
    Oct 11 (M)
    Oct 13 (X) 
    The day after Columbus Day, Monday schedule.
    No Class.


    Oct 18 (T)
    Oct 20 (Th) 
    Lecture 10. Building &Using the Linked List Toolkit  (code)
    Lecture 11. Software Development using Templates and Iterators
    Ch. 5.3 - 5.5
    Ch. 6,  code (bag4&5, node2
    Oct 25 (T)
    Oct 27 (Th) 
    Lecture 11a. Software Development using Templates and Iterators (cont.)
    Lecture 12. Stacks (code) and Queues (code

    Ch. 7, Ch 8 
    Nov 01 (T)
    Nov 03 (Th) 
    Lecture 13. Introduction to Recursion 
    Lecture 14. Using and Reasoning about Recursion 
    Ch. 9.1 , Assignment 5
     Ch. 9.2 - 9.3
    Nov 08 (T)
    Nov 10 (Th) 
    Exam Review 2
    Second Exam
    (Chapters 5-9)

    Nov 15 (T)
    Nov 17 (Th) 
    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 22(T)
    Nov 24 (X ) 
    Lecture 17. Heaps and Priority Queues
    Thanksgiving Holiday
    Ch. 11.1, 11.3, Assignment 7

    Nov 29 (T)
    Dec 01 (Th)
    Lecture 18. B-Trees and Set Class (code) ;  Time Anaysis of Trees
    Lecture 19. Searching
    Ch. 11.2
    Ch. 12.1-12.2 
    Dec 06 (T)
    Dec 08 (Th) 
    Lecture 20. Hashing 
    Lecture 21. Quadradic Sorting 
    Ch. 12.2-12.4
    Ch. 13.1 
    Dec 13 (T)
    Dec 15 (Th) 
    Lecture 22. Recusive Sorting , Heapsort & the STL Quicksort (code)
    Exam 3 Review , Assignment Discussions
    Ch. 13.2-13.4

    Dec 20 (T) Final exam (mainly Ch 10-13, some from Ch 1-9)   NAC 5/126 @ 8:40-10:20 AM
    Notes:

    1: No classes on 10/04(T),  10/11(T), 10/13 (Th) and  11/24 (Th)
    2.  10/11 (Tue) will have Monday schedule
    3. Most of the lectures have reading assignments that you should complete before the lecture
    4. The lecture PPT slides will have color background s - you'd better print them out in B-W.

    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 hours or send me messages by e-mail.

    Computing Facilities

    The language used for this class is ANSI Standard C++ as supported by today's available compilers. Variety of PC based C++ compilers are available such as Borland C++ and Microsoft Visual C++, also publicly accessible at our Student Computer Labs.


    Copyright @ Zhigang Zhu (email zhu@cs.ccny.cuny.edu ), City College of New york, Fall 2005.