Computer Science 483 Department of Computer Science
Data Structures and Analysis of Algorithms George Mason University
R. Paul Wiegand Fall, 2002

[syllabus]  [course schedule]  [assignments]

Download some review information for exam III.
Everyone who turned in project 2 should have gotten them back via email. If you haven't, please contact me ASAP.

Course Syllabus

Please read and familiarize yourself with the following.
There is an errata page for the Cormen text!

Course Details

CourseCS 483 - Data Structures and Analysis of Algorithms
Course TextIntroduction to Algorithms, Second Edition. T. Cormen et al., MIT Press, 2001.
Class RoomRobinson A, room 248
Class Time7:20pm - 10:00pm
InstructorR. Paul Wiegand
OfficeRoom 212, Krasnow Institute
Office Phone703.993.4380
Office HoursTuesdays, 2pm - 4pm (room 422, Science & Tech II)**
TA Office HoursMonday & Thursday, 5pm - 7pm (room 435, Science & Tech II)

** You may also meet with me by appointment.


Students must have completed the following courses with a grade of C or better. You are also required to have completed the prerequisites of these courses.

CS 310Computer Science III
CS 330Formal Methods and Models
Math 114Analytic Geometry and Calculus III

Upon start of term, students are expected to be have mastery of the fundamental concepts of these, and other courses. These include basic mathematical ideas such as limits, mathematical series, inductive proofs, logarithmic functions, etc., as well as basic Computer Science concepts such as abstraction and generalization of algorithms, and a detailed knowledge of at least one programming language.

Course Description

Catalog Description

Analysis of the computational resources required for important problem types by alternative algorithms and their associated data structures, using mathematically rigorous techniques. Specific algorithms are analyzed and improved.

Instructor's Comments

Developing computer software is an engineering discipline that requires insight, skill, and forethought. Every development project, regardless of how large or small, is essentially a problem (or set of problems) to be solved. In order to construct any computational solution to any problem, engineers must not only be aware of what tools are available to them, but they must also have the critical thinking and analytical skills to know how to best employ such tools.

This course seeks to meet two high-level goals. First, it seeks to introduce students to a wide and diverse variety of algorithms and data structures in order that they might have the opportunity to begin building their knowledge of the types of tools available to them, as engineers. Second, it seeks to help students develop the analytical skills needed to solve computational problems in a competent and efficient fashion, by introducing them to the ideas of data structure and algorithm analysis.


The course is divided into five parts (see course schedule). Student grades will be assessed from three exams and three (corrected from "five") projects. The following table describes the grading policy for these items. Additionally, homework will be assigned periodically during the semester. Students are expected to complete the homework, but it will not be considered part of the grade. Despite this, do not consider homework optional.

Exams Exam I (Parts I & II) 25% or 20%**
Exam II (Parts III & IV) 25% or 20%**
Exam III (Part V) 25% or 20%**


Small projects Project I 7%
Project II 10%
Project III 13%


** Your lowest exam grade will count 20% and the two higher grades will count 25%.

Since the grading system is relative, it may help some students to see some statistical results of the current grades, in order to gain some context. The following are some plots in PDF format of the grades so far in the course:


Students will be given roughly two weeks to complete each project. Most projects will have a large programming component; however, all projects will have a written component. The details of the requirements for the projects will be provided with the assignment itself. Most (perhaps all) projects will be individual projects. As such, students will not in any way discuss the project guidelines, the project itself, or potential solutions to projects (see the honor policies section, below).

Any source code required by a project should follow (at least) the following guidelines.

Projects will loose 1 point from their project grade for every day late. Saturday and Sunday count as a single day (note that this means that projects more than one week late are worth nothing). The written portion of a project is due in class on its assigned due date. Any electronic versions (such as source code) are due before midnight on their assigned due dates. If you have any confusion about this policy, please consult me and I will resolve it.

Projects will be posted on the assignment web page.

Hand in projects in hard copy form during class. If you cannot hand it in during class, you may drop it in my box (room CS 435, ST II). You may also make an appointment with me to hand it off. If you need to do so, email me a soft copy of the document, rather than incurr a greater late penalty. However, if you do so, send the document in some portable format (i.e., not MS Word) such as PDF, PostScript, HTML, etc.

Honor policies

Students are referred to George Mason's honor policy for review. In addition, students should review the Computer Science department's honor policy for programming projects. Read these, know them, and abide by them. I will not tolerate ANY cheating. If I catch you, I will recommend an F in the course to the honor committee, whether it is on a project, or on an exam. I will not be lenient, so do not ask.

The best (and the smartest) way to avoid any trouble is simply not to cheat. There are no "gray areas" with respect to cheating. If you are concerned that some choice you may make could be construed as unethical, you are free to consult me. I will clarify any sticky areas.

Additionally, please take note of the following disclaimer:

   As graders, we reserve the right to compare programming code
   submitted by students to any other code (either students' or
   otherwise) by any means necessary (automated or non-automated).