Course Scope

The purpose of the course is two-fold. We will continue the study of data structures from CS 211 and we will learn how to approach larger and more challenging programming projects than those you did in CS 211. Programming is a significant part of this course and you should expect to spend a good deal of time on the course projects.

Prerequisites

The prerequisite for this course is C or better in CS 211.

I will assume that you have developed a significant degree of skill in programming (program organization, coding, documenting, testing and debugging) -- you will develop yet more this semester. I will also assume that you are acquainted with basic complexity analysis ("big O") and are able to build abstract data types using Java classes.

Required Textbook

The text is Mark Allen Weiss, Data Structures and Algorithm Analysis in Java, 2nd ed., Addison Wesley, 2007.

Grading

Grades will computed from a weighted average computed with the following weights:

  • programs assignments: 35%
  • midterm exam: 30%
  • final exam: 35%

Important Dates

  • Midterm Exam (Oct 29)
  • Final Exam (Dec 17)
  • Thanksgiving (Nov 26)

List of Topics

Topics to be covered include:

  • Generic types
  • Linked lists
  • Stacks and queues
  • Binary trees
  • Balanced binary trees
  • Multi-way trees
  • B-trees and B+-trees
  • File organization
  • Searching and sorting
  • Set representations
  • Hashing
  • Graph

This list is subject to change as interest evolves.

Course outcome

The students will:

  • Reinforce what they have learned about elementary data structures from CS 211
  • Extend their knowledge of data structures to more sophisticated data structures. This includes balanced binary search trees, B-trees and B+-trees, hashing, and basic graphs.
  • Use generic types in their data structures.
  • Do more demanding programming than they had in CS 211. All programming is done in Java. This involves more program design and debugging techniques.

Policies

There will be several programming assignments. Programming assignments will be posted on the course website.

You may discuss the programming projects with other students (this is encouraged) but you must do and submit your own work. No joint work will be accepted. I will use software to detect plagiarism in programming assignments.

You can only turn in a program once. No revisions or additions can be made to your program after it has been submitted. Late programs will be accepted with a 10 points per day late penalty. You are responsible for keeping backups of your work ("my disk crashed" and "my roommate ate my program" are not reasons for late submissions).

There will be a midterm exam and a final. There will be no makeups on exams except under exceptional circumstances (as judged by me), and any such makeup must be arranged in advanced.

Read the CS Department honor code: http://cs.gmu.edu/wiki/pmwiki.php/HonorCode/CSHonorCodePolicies and the University honor code: http://honorcode.gmu.edu. You are bound by these honor codes. Any submitted work which shows too much commonality with others' work to be completely original, or any plagiarized work, will receive a grade of 0. Any code which is presented in class or provided to you as part of the project may be included in your programs.

Disability Statement

If you have a learning or physical difference that may affect your academic work, you will need to furnish appropriate documentation to the Disability Resource Center. If you qualify for accommodation, the DRC staff will give you a form detailing appropriate accommodations for your instructor.

In addition to providing your professors with the appropriate form, please take the initiative to discuss accommodation with them at the beginning of the semester and as needed during the term. Because of the range of learning differences, faculty members need to learn from you the most effective ways to assist you. If you have contacted the Disability Resource Center and are waiting to hear from a counselor, please tell me.