CMPU-203: Introduction to Computer Science III
Data Structures and Software Systems

Fall, 2001

Instructor

Chris Welty - OLB 117, x5992, weltyc@cs.vassar.edu
Office hours: MW 9:30-11

Coach

Arianna Schlegel - arschlegel@vassar.edu
Hours: M 9-11pm, T 8-10pm, W 7-9pm

Contents

  • Announcements/Messages
  • Readings
  • Background
  • Course Schedule and Projects
  • Grading Policy
  • Announcements

  • The final will be Tuesday, December 18, 9:00 AM. Location TBA.

    Schedule

    Week of Topic Reading Quiz Project
    9/3 C++ Review Overview; Encapsulation, Classes, Pointers, Operator Overloading [C++: 4.1]
    [C++: 4.2]
    Project 1
    9/10 Friends, Subclasses, Abstract Classes, Templates, Namespaces [C++: 4.3] [C++: 4.4] [C++: 5.1] [C++: 5.2] Quiz 1
    9/17 STL Terminology Concepts, containers, algorithms, iterators, refinement [STL: Intro] [STL: Howto] Quiz 2
    9/24 Container ADTs General containers, sequences; strings, vectors; Persistence [STL: 3.1.1] [STL: 3.1.2] [STL: 3.2.3] [STL: 3.2.1.1] [C++: 6.1] Quiz 3 Project 2
    10/1 Sequences: Deque, list, slist [STL: 3.2.1.2] [STL: 3.2.1.3] [STL: 3.2.1.4] Quiz 4 Project 3
    10/8 Associative Containers: set, map [STL: 3.1.3.1] [STL: 3.1.3.2] [STL: 3.1.3.7] [STL: 3.1.3.4] [STL: 3.2.2.1] [STL: 3.2.2.2] Quiz 5
    10/15 Fall Break
    10/22 MID TERM EXAM
    10/29 Generic Containers Stacks, Queues, Priority Queues [STL: 3.2.5] Quiz 6 Project 4
    11/5 Hashing Functors, Hashing Functions [STL: 6.1], [STL: 6.2.1], [STL: 6.2.2], [STL: 3.1.3.6], [STL: 3.2.2.9] Quiz 7
    11/12 Hash sets, hash maps [STL: 3.1.3.5], [STL: 3.2.2.5], [STL: 3.2.2.6] Quiz 8 Project 5
    11/19 Algorithms Searching
    Thanksgiving Break
    [STL: 5.1] Quiz 9
    11/26 Sorting [STL: 5.3] [DADS: Sort]
    12/3 Sorting Quiz 10 Project 6
    12/10 Wrapup Note: No class this week, Mon/Tues are Thur/Fri
    12/17 Final: Tues, Dec. 18. 9AM

    Resources and Materials

    Background

    This course will concentrate on advanced data structures and modeling using the C++ Standard Template Library (STL). The STL is a particularly well designed and thought out collection of the most standard abstract data types (ADTs) and algorithms in Computer Science. While the focus of the course is not on C++ or STL per se, experience with these technologies will be treated as a necessary and practical means to gain a deeper understanding for the ADTs that have become the foundation of this science.

    We will start off simply, reviewing C++, modularity, operator overloading, and polymorphism through templates. We will then move into the notions of encapsulation, abstraction, information sharing/hiding, and inheritance. This will be followed by the advanced data structures section of the course, where we will cover containers and their realization in the STL, how to use them, and most importantly, what their computational properties are.

    As a special bonus this year, there will be no textbook to purchase, although you will find a book on C++ to be helpful. All assigned reading materials will be on-line. However, you will be required to do the assigned reading each week. The material we are covering is difficult and in some cases esoteric, and being exposed to it for the first time in class will make it impossible to understand. In order to ensure you do the reading, there will be a short, on-line quiz each week.

    Caveat Emptor. Like many things, the STL is at once wonderful and horrible. It's elegance, reliability, and reusability are balanced by the obscure syntax and bizzare notation of C++, in particular C++ templates. As a result, the practicum of this course will be very time consuming and difficult, and often quite frustrating. This appears to be an essential part of learning computer science, and, like all those who came before you, you will either look back on it fondly or give up.

    Grading

    Your final grade will be based on a weighted average of your scores on the quizzes, exams, and projects:
    20%: Quizzes Quizzes will be given each week, beginning the second week. The quizzes are intended to ensure that you do the reading for that week, as well as ocassionally reinforcing important concepts from the previous week. The quizzes will be short and taken on-line, and will be due before class on Monday.
    40%:  Projects Projects will be assigned roughly every other week, with a final project that will be larger in scope and duration. The projects are intended to give you hands-on experience with the notions taught in the course, with C++ and with the STL, which will serve as a foundation for using programming as an experimental tool in future computer science courses.
    15%:  Mid-term exam Each exam will be cumulative. The exams are intended to ensure that you retain the more important non-programming concepts taught in this course. As a result, exams will not stress programming, though you may be required to write simple programs, or understand concepts presented in program form.
    25%:  Final exam

    Academic accommodations are available for students with documented disabilities. Please schedule an appointment with the instructor early in the semester to discuss any accommodation that may be needed for the course. All accommodations must be approved through the Office of Disability and Support Services (ext. 7584) as indicated in their accommodation letter.