computer science II
c m s c 214  
f a l l   2 0 0 1  

(as of Sep 21, 2001)


Sections 01, 02, and 03 Sections 04, 05 and 06
Dr. Bunny Tjaden Charles Lin
1109a A. V. Williams 1127 A. V. Williams
301-405-8412 301-405-2709

Only call the instructors for administrative matters (e.g., you are sick and can't make the exam). You should not call about project debugging. See TAs for that. Email is generally preferable, instead of calling.


Design and analysis of object-oriented programs. Implementation of structured programs using abstract data types, templates, and inheritance. Concrete data structures include dynamic arrays, linked lists, and binary trees.


CMSC 114 (Computer Science I), MATH 141


CMSC 250

You must be concurrently taking, or have completed CMSC 250, before taking CMSC 214.


Data Structures and Other Objects Using C++, Main & Savitch, Second Edition, Addison Wesley.

Although this is the "required" text, we will use it primarily as a reference.

Strongly recommended text:
any C++ language reference, such as the CMSC 114 textbook or equivalent.

Office Hours

The instructors' and TAs' office hours will be provided in lecture and available in the class posting accounts (see below).

Our email addresses are supplied so you can contact us when necessary in emergency situations, but we regret that we have insufficient resources to debug students' projects via email. We strive to answer email in as timely a fashion as possible but cannot always guarantee how quickly that may be. We will generally be unable to answer any substantive questions on course material via email; these are more appropriate for class discussion or office hours. Office hours or personal communication during, before, or after class are the preferred means for asking us questions about the course material, and the quickest way to receive a reply.


Much of the course material will be available on the webpage. This webpage is located at:
It is your responsibility to read the webpage often.

Posting Accounts

Various course materials will be made available in the public course posting accounts, to be explained further in discussion section. The posting account for Dr. Tjaden's lecture is bt214001, and Mr. Lin's posting account is ch214001.

Project assignments and important announcements will be made available electronically through these accounts; students are responsible for reading these messages and knowing their contents. Directions for obtaining course materials in the posting accounts and reading the announcements will be provided in class. Projects will be submitted electronically and instructions will be provided separately and will appear on the assignments as well.

Course Requirements and Grading Policy

Quizzes: weekly quizzes 10%
Midterms: two midterms 25% (12.5% of the total course grade each)
Programming projects: five coding assignments 40%
  Project #1 - 7% (of the total course grade)
  Project #2 - 7%
  Project #3 - 10%
  Project #4 - 10%
  Project #5 - 6%
Final exam: will be comprehensive 25%

The final course grades may be curved, if necessary, based on each student's total numeric score for all coursework at the end of the semester.

Any request for reconsideration of the grading on any exam must be submitted in written form, during the lab session following the one where the exam was returned. The instructors reserve the right to regrade the entirety of any exam submitted for regrading, which could result in a lower score.

Practice exercises and solutions will be made available in the course posting accounts; these will not be collected or graded, but serve for you to test your knowledge of the material, and as preparation for projects and exams.

Under no circumstances will any emailed project, or a project submitted by any means other than that specified on the assignment be considered.

If you have access to another computer with a C++ compiler, such as a personal computer at home or another computer system at your job, you may work on your programming projects there. However, all project submissions must be made from your class account on the OIT UNIX Class Cluster and must run and work correctly using the C++ compiler available there (cxx, with the -w0 option).

The instructional staff only has access to your class account in office hours, and cannot help debug any program written on any other computer except from a printout. It is your responsibility to find out how to transfer a program to your class account for submission; the instructional staff cannot help with this (see the Information Technology Library in 1400 CSS for information on transferring files between computers). It is also your responsibility to insure your program works correctly on your class account with the compiler and option specified above. If you want to develop your project on another system you are strongly recommended to complete it several days early, so you have time to test your project in the class cluster, in case any problems arise.


This semester, we will have weekly quizzes. Quizzes will be given on Wednesdays of most weeks, exclusing weeks of exams. There are several goals for the quizzes. First, to make sure you are keeping up with class material. Second, to convince you to read and investigate material on your own. Third, to encourage you to show up to lab. Quizzes count 10% of your total grade.

Instead of dropping a quiz grade, we may average it out of less quizzes. Thus, you may have 10 quiz grades, but we may divide it out of 9 quizzes. At this point, assume no more than one quiz will be "dropped" in this manner.

There should be a quiz worksheet prior to any quiz to help you prepare for the quiz. These may be provided online, but it is expected that you get the worksheet in lab section.

Quizzes will be scored out of 50 points.

Quizzes must be taken in the section you are registered. If you take the quiz in the incorrect section, you will receive a 0. Only those students who have received special permission by the instructor may take quizzes in a different section. Otherwise, you must take quizzes at the discussion section time.

Project Grading Policy

Read this section carefully. The project grading policy of cmsc 214 is different from the one used in cmsc 114. In cmsc 214 all working projects will be due at 11:59 p.m. on the date indicated on each project assignment. There will be a one hour "grace period". Any project that is turned in "late", but within the grace period (turned in after 11:59 PM, but before 12:59 AM) will receive the same penalty as if it were turned in at 11:59 PM.

For the purposes of late projects, "one day" will be defined as 86,400 seconds (this is 24 hours). Two days will be twice this, etc. One day late will be defined as between 0 and 86,400 seconds after the due date. Two days late will be between 86,400 and 172,800 seconds late, etc. One week is defined as seven days.

A working project will be accepted up to three days late with a 15 points deduction in credit for each day late. After three days late, but before one week late, a working project will be worth a maximum of 25 points, provided that it has good style (it may receive less if it has poor style). Any projects submitted seven days late will receive a grade of 0 points.

No project (except project #4) will be accepted after 11:59 PM, seven days after the project is due. Thus, any project (except project #4) not submitted by the seventh day will receive a grade of 0. All projects will be graded out of 100 points. Each project is worth a different percentage to the final grade, as described in a previous section.

For this course, a ``working project'' is defined as a project that ``generates correct results'' when a project is run on a primary input data set, so that it produces results which match the corresponding primary output. Both the primary input data set and the primary output will be provided for each project. In order for a project to be considered running successfully on the primary input, its output must match the posted primary output as defined by the execution of a comparison command to be described in class. If any differences are reported by the comparison command, a program will be considered "not working". You will be unable to submit the project until the project is considered working.

In order to submit a project you will use a submission command to be described in lecture. Only those projects that generate results matching the expected primary output as described above will be accepted when using the submission command. Any project that for any reason (e.g., compilation problems, core dump conditions, etc.) doesn't produce the expected primary output will be rejected by the submission command. If a project is not successfully submitted within 7 days of the due date (except project #4), the project grade will be a 0.

IMPORTANT: In order to pass this course a student must submit a working project #4.

A working project is one generating the primary output as specified above. The deadline for submitting a working project #4 is Friday, December 7, 2001 at 4:00 pm. A student will automatically fail the course (i.e., letter grade of F) if a working project #4 is not submitted by the specified deadline. We want to clarify that project #4 is the only project a student needs to provide a working version of in order not to fail the course; students with non-working projects #1, #2, #3, or #5 will not automatically fail the course. If you have any doubts about this policy, ask us.

If you submit a working project #4 by the deadline specified above, but turn it after one week late, your project will be worth 10 points.

In addition to the primary input and output, each project will be graded using additional grading input data sets (secondary inputs). A program may be tested on, and will be expected to correctly handle, any cases allowed by the BNF description of the program input appearing on each project assignment.

While your projects are primarily graded on the correctness of the outputs, other criteria are used in grading your projects. In particular, your code will be graded on:

We will pay close attention to "modularity", as students tend to write too few helper functions.

If more than one submission has been made by a student for any project assignment (for example, both an on-time submission as well as a two-day late submission) only the last submission will be graded. We do NOT grade the best submission.

Academic Integrity and Working Outputs

Your project must produce working output based on the methods described in the project. If you "hardcode" your output (e.g., write print statements to simulate the correct output), not only will you receive a 0 on the project, you may also be brought up on charges of fabrication, which is a violation of academic integrity. Using other methods to simplify the project (such as using arrays, instead of linked lists, when you are required to use linked list by the project) to produce the primary output is also considered fabrication.

Late Policies


There will be no make-ups for missed hourly exams. In the case of a documented medical excuse or documented family or personal emergency a missed exam grade will be calculated by averaging a student's scores for the other midterms and the final exam. If you miss both midterms, but have valid documentation, the instructors reserve the right to give a make-up exam covering the material from both exams.

  1. An illness is considered severe enough to warrant an excused absence only if a medical doctor states that you were incapacitated by it. (Equivalently, your doctor should state that you were unable to attend classes on given dates).
  2. Excused absences for exams will be approved only with proper documentation.
  3. You must provide the documentation within one week of the exam, otherwise it will not be considered.
  4. A medical excuse consists of written verification from the Health Center, or a letter from your personal physician stating that you were incapacitated and listing exact dates of incapacitation. It is important that the exact dates be listed.
  5. This written verification must include the telephone number of a contact person.
  6. If you have a ``Verification of Visit'' form from the Health Center, you must request that the health provider specifically write on it your dates of incapacitation, otherwise the excuse will not be accepted.
  7. You may have to sign a release at the Health Center in order to permit your dates of incapacitation to be listed.
  8. You must contact the instructor as soon as possible if you miss an exam (on the same day, if possible). Even if you are unable to return to class immediately, please try to inform the instructor right away.


    You may be excused for quizzes if you provide proper documentation as described in the previous section on exams. You may also be excused for quizzes should it fall on a religious holiday. You must inform the instructor in advance that you are observing a religious holiday. The holiday must fall on the day of the quiz (one day before or one day after may not count).


    You may be granted an extension due to illness or other valid documented excuses. Such extensions will be handled on a case-by-case basis. In general, you will only be given an extension on a single project (usually the project that is currently due). You will generally not be given extensions on subsequent projects.

    If you have a valid excuse, you should make every effort to contact the instructor for a request for an extension on the due date of the project as soon as possible. Requests made much after the due date may not always be accommodated.

    Extensions are not given for observances of holidays or due to events known in advance. It is expected that you will not need the entire time given to complete the project. The time given is to allow you to complete the project, yet manage your time with other classes. We generally expect that a project will take a good programmer the time to complete the project.

    Unfortunately, different students work at different paces, and we can't give extensions to students who take longer to complete their projects or have a heavier courseload than others.

    Arbitrary extensions will not be given without consultation with the Undergraduate Coordinator. For example, if you request that you be given enough time to complete a project based on an illness that is chronic (e.g., you say "I have headaches all the time, but can't always see a doctor, and I want extensions to whenever I can finish the project"), the instructors will request you discuss the matter with the Undergraduate Coordinator. Also, any illnesses which last longer than a week may require consultation with the Undergraduate Coordinator.

    Tentative Exam Dates

    Exams will be held on the dates below unless a change is necessary to accommodate lecture topics. In that case, the revised date will be announced in lecture and posted in the public class accounts. The final exam date, however, is fixed. If you have a conflict with another final, it is your obligation to inform your instructor during the first two weeks of class, otherwise no allowances can be made. The midterm exams will be held in the discussion section times, but in a different location, to be announced in lecture and posted in the public class accounts.

    Exam 1: Wednesday, October 3

    Exam 2: Monday, November 5

    Final Exam: Saturday, December 15, 4:00-6:00 pm

    Academic Honesty Statement

    Please carefully read and consider the Computer Science Department policy regarding the use of computer systems, and the Office of Information Technology's policy regarding acceptable use of computer accounts provided for instructional use, in the Fall 2001 issue of the departmental newsletter, CS Tid-Bits, handed out with this syllabus. Note in particular the penalties for impermissible cooperation on programming projects, which is a violation of the University's Code of Academic Integrity. Any evidence of unacceptable use of computer accounts or unauthorized cooperation on exams or projects will be submitted to the appropriate authorities or to the Student Honor Council, which could result in an XF for the course, suspension, or expulsion from the University.

    NOTE SPECIFICALLY that projects are to be done INDIVIDUALLY. For academic honesty purposes, projects are to be considered comparable to an extended take-home exam. That is, any cooperation or exchange of ideas which would be prohibited on an exam is also prohibited on a project assignment. Working IN ANY WAY with another student will be considered a violation and WILL BE REPORTED to the Honor Council. Students may not discuss pseudocode, design of a program or of individual functions, coding of individual functions, or any high-level code with anyone except the instructors and teaching assistants. Should you have difficulty with a programming assignment you should see your instructor or the teaching assistants in office hours, NOT solicit help from anyone else in violation of these rules. Students are welcome to study together or to receive help in learning the course concepts from any others, but exams and projects are to be solely and entirely each student's own work.


    1. failing to do all or any of the work on a project by yourself, other than assistance from the instructional staff.
    2. using any ideas or any part of another student's project, or copying any other individual's work in any way.
    3. giving any parts or ideas from your project, including test data, to another student.
    4. having programs on an open account or on a PC that other students can access.
    5. transferring any part of a project to or from another student or individual by any means, electronic or otherwise.
    6. publishing any of your code publicly (e.g., via a webpage) which other students can access, even if the project has already been completed.


    Course Topics (SUBJECT TO CHANGE)

    This list may vary according to the pace of lecture topics.

    Week Topics
    1 Introduction, Review, Dynamic memory allocation, linked lists
    2 Linked lists, templates
      Project #1 assigned
    3 Templates (continued)
    4 Recursion, Trees
      Project #1 due, Project #2 assigned
    5 Trees (continued)
    6 Trees (continued), Inheritance
      Project #2 due, Project #3 assigned
      Exam #1
    7 Inheritance (continued)
    8 Spring Break
    9 Inheritance (continued)
    10 Inheritance (continued), Graphs
      Project #3 due, Project #4 assigned
      Exam #2
    11 Graphs (continued), STL
    12 Graphs and STL (continued), Hashing
      Project #4 due, Project #5 assigned
    13 Heaps (continued)
    14 STL (continued), Exceptions
      Exam #3
    15 Exceptions (continued), Other topics
    16 Other topics