CS 70, Spring 2000: Data Structures and Program Development

Quick index:

  • Useful general information
  • Course content
  • Reading assignments
  • Homework assignments and FAQs
  • Course handouts
  • Exams
  • Administrative matters, including honor-code questions
  • Class suggestion box
  • Useful Information

    The tutors and graders currently assigned to this course are:

    You can always get help from the graders and the professors by sending mail to cs70help@cs.hmc.edu. This is a good way to report problems or to get quick help on a homework question. DO NOT send mail to cs70grad to get help. Mail to this account will not be answered promptly.

    If you want an answer from a professor only (e.g., requests for extensions, difficulties with the graders, etc.), please send mail to both professors rather than just one. Doing so will ensure a quicker answer, and also will ensure that both professors are aware of what is happening in the class.

    Finding Margaret

    My schedule of regular meetings is on my web page. At other times, I'm usually to be found in my office, around the CS department (ground floor Olin, B102 and B120 Beckman), or in other obvious places (e.g. Platt, coffee cart). Please feel free to drop by: if I'm busy, we can at least set up a time to meet later. Because daycare is on an early schedule, I also am. If you can't find me in person, send email.

    Finding Geoff

    My weekly schedule is posted on the Web for all to see. I am generally in my office every day except Friday. If the door is open, please feel free to drop in with your questions. Even if I happen to be busy, I'll at least know that you need to talk to me and we can set up an appointment to talk. If you are on a computer, the command finger @mallet will generally tell you whether I'm logged in and have multiple active windows, which is a very good sign that I'm in the office.

    As a general rule, the talk utility is not a good way to reach me, regardless of what machine you are trying to reach me at. I usually keep my command windows closed and my bell disabled, so I will never see the talk request.

    I will usually try to be in my office in the evening on Wednesdays when an assignment is due. You can e-mail me, call me (x71610), or stop by with your questions.

    On Fridays I do research. You can sometimes reach me by calling 310-825-7307, though you'll rarely get an answer between 1 and 3 PM, when I'm in meetings. In general, if I'm available to answer the phone, I'm also available to answer questions. If you can't get me by phone, send e-mail.


    Catalog Description

    Abstract data types including priority queues, dynamic dictionaries, and disjoint sets. Efficient data structures for these data types, including heaps, self-balancing trees, and hash tables. Analysis of data structures including worst-case, average-case, and amortized analysis. Storage reclamation and secondary storage considerations. Extensive practice in implementing these data structures in several languages for a variety of applications.

    Prerequisites: Computer Science 60.
    3 credit hours.

    Goals

    In this course, you should learn

    You will also get lots of practice writing software, including some moderately large programs, so as to improve your coding skills and speed.

    Topic outline

    List of key topics, (very) approximately in the order in which they will be covered:


    Homework Assignments

    There will be about 7-10 homework assignments, each taking between 1 and 2 weeks. Assignments will be posted here and announced on the class mailing list. Assignments will generally be due on Wednesday evenings at 9 P.M. See the homework policies and homework grading guidelines pages for general information on homework. There is also a page of frequently asked questions about homework that is worth checking from time to time.

    Homework assignment #1, cleaning up stylistically bad code. and its grading curve.

    Homework assignment #2, a program to find stylistically bad constructs, and its grading curve.

    Homework assignment #3, a string-reading function, and its grading curve.

    Homework assignment #4 (which also includes assignment #5), a registrar database for Deep Glen Polytechnic, and the grading curve for homework 5.

    Homework assignment #6, complexity analysis, and its grading curve.

    Homework assignment #7, a templated list class.

    Homework assignment #8, iterators and chunky strings.

    Homework assignment #9, a hash-based spell checker.

    Homework assignment #10, binary trees and binary I/O.


    Handouts

    The following handouts were provided to students in class. For those who missed the lecture, or who wish to make use of code from the handouts, they are also available for downloading here. Note that C++ source files are exactly the same as were presented in class, which means that any bugs discovered during the lecture are still present.

    Postscript files may be printed from Turing by simply typing "lpr foo.ps". They may be directly viewed with the utility gv (if your shell claims it's not found, try /usr/openwin/bin/gv).

  • From January 19 and 20, 2000: quick facts for the first day of class (Postscript).
  • From January 24 and 25, 2000: examples of good and bad style (Postscript).
  • From February 2 and 3, 2000: the recipe for Prof. Kuenning's killer chocolate-chip cookies.
  • From March 20 and 21, 2000:
  • The untemplated integer-list class.
  • The header for the templated list class.
  • The implementation of the templated list class.
  • The test program for the templated list class.
  • From April 3 and 4, 2000:
  • The Makefile for the iterator classes.
  • The modified header file for the templated list class.
  • The header file for the integer-list iterator.
  • The implementation of the integer-list iterator.
  • The test program for the integer-list iterator.

  • Exams

    The midterm has been graded and the curve is available.


    Helpful C++ Information and Code examples

    Prof. Fleck has created a number of pages that contain notes on all sorts of useful topics.

    Reading assignments

    Reading assignments are selected from both texts. The due dates given are for section 1; in general students in section 2 can complete the reading one day later, before their class meets.

    Due Date Assignment
    January 24 Kernighan & Pike, Chapter 1.
    Stroustrup, 1.1, 1.2, 1.7, 1.8; Chapter 2.
    January 26 Stroustrup, Chapter 4.
    January 31 Weiss, 1-1.4.
    Stroustrup, 5.1-5.6.
    February 9 Weiss, 1.5, 1.7-1.8
    Stroustrup 6.2.6, 8.3-8.3.2, 8.3.3.1.
    February 14 Kernighan & Pike, Chapters 5 & 6.
    February 16 Weiss, 2.1-2.8
    Stroustrup Chapter 10
    February 28 Stroustrup Chapter 11
    March 1 Weiss, Chapter 5
    March 6 Weiss, Chapter 3
    Stroustrup, Chapter 13
    March 27 Weiss, Chapter 4
    Stroustrup, Chapter 12
    March 29 Weiss, Chapters 6 & 16
    April 3 Weiss, Chapter 15
    April 5 Weiss, Chapter 17
    April 12 Weiss, Chapter 18
    April 17 Weiss, Chapter 19


    Administrative matters

    See the administrivia page for details of administrative matters:

    You are responsible for being familiar with the contents of the administrivia page!

    Class suggestion box

    If you have questions that you prefer not to ask during class, or suggestions that you would rather have remain anonymous, there is now a class suggestion box on the Web. This interface will allow you to send e-mail to Prof. Kuenning such that it appears to have also come from him, instead of from youself.


    This page is maintained by Geoff Kuenning.