Prerequisites: CS 301

Syllabus

CS 302: Advanced Data Structures

Winter 2008

Meeting Times

Lect: 9:00 - 9:50 MWF, HB 106

Labs: 9:00 - 9:50 Tu, HB 209

Instructor

Dr. Razvan Andonie, HB 219-B, Office hours

TA Lukas Magill, MagillL@gwmail.cwu.edu

Text

William J. Collins Data Structures and The Java Collections Framework, McGraw Hill, 2005.

Learning Outcomes and Course Objectives

This course continues the exploration of data structures, algorithms for manipulating them, and the practical problems of implementing those structures in real programming languages and environments. Attention is paid to the analysis of algorithms to characterize their worst and average case requirements for running time and memory.

Perhaps more than any other courses, CS 301 and 302 should expand the students tool box of basic techniques for manipulating data at both the conceptual and the concrete level. At the conceptual level, the student will see a broad selection of standard practices and approaches used in program design. At the concrete level, the student will begin what should be a career-long practice of accumulating useful, reusable code units.

The basic organization of this course will proceed through the classic data structures and Java-based containers, exploring the use and implementation of each in turn. Motivating problems will be drawn from a variety of application areas.  Specifically:

bullet The student will be able to demonstrate the use of basic complexity measures.  The student will be able to apply these measures to basic algorithms.  The student will be able to give a general description of how these complexity measures are obtained.
bullet The student will be able to demonstrate a basic understanding of an abstract data type.  The student will be able to demonstrate the association between ADT concepts and basic Java constructs.
bullet The student will be able to demonstrate the correct use and application of trees, binary trees, search trees, and balanced trees.
bullet The student will be able to demonstrate the correct use and application of 2-3 trees, and B-trees.
bullet The student will be able to demonstrate the correct use and application of heaps and priority queues.
bullet The student will be able to demonstrate the correct use and application of hashing.
bullet The student will be able to demonstrate the correct use and application of maps and sets.
bullet The student will be able to demonstrate the correct use and application of matrices.
bullet The student will be able to demonstrate the correct use and application of graphs.

Grading

Exams (2 - 25% each)

50%

Lab Projects

50%

Grade Distribution

95 - 100   A

90 - 94     A-

87 - 89     B+

83 - 86     B

80 - 82     B-

77 - 79     C+

73 - 76     C

70 - 72     C-

67 - 69     D+

63 - 66     D

60 - 62     D-

0  - 59      F

 

If you must miss an exam, contact your instructor prior to the exam to schedule a time to make it up. Late submission of assignments is generally not accepted. No partial credit for late assignments will be offered.

Lectures & Projects

The slides for lectures can be found in the shared directory on Neve. Be prepared to spend 10 hours for each project.

Resources

1.   Additional reading: NetBeans IDE Field Guide, by Patrick Keegan et al., second edition, Prentice Hall, 2006.

2.   Book Resources from the author. This includes access to: Applets for projects that have a strong visual component,  source code from the text., Errata, and several proposed lab experiments.

3.   The Source for Java Technology:

jGuru

Code Conventions for the JavaTM Programming Language

Training and Tutorials

4.   Available in Hebeler Labs are  J2SE Development Kit (JDK) and NetBeans IDE from Sun Microsystems.

5.    NetBeans IDE Quick Start Guide and Using NetBeans IDE

6.    Java’s Collections

Using the Java software at home: Download the JDK with Netbeans  (Java SE Development Kit and NetBeans IDE Cobundle for Windows).

Course Schedule

Date

Topic

Readings

 

Introduction & Binary Trees - review

Syllabus, Ch. 9

 

Binary Search Trees Ch. 10

 

Binary Search Trees Ch. 10

 

Binary Search Trees Ch. 10

 

Insertion Sort, Selection Sort, Bubble Sort Ch. 11

 

Decision trees Ch. 11

 

Mergesort Ch. 11

 

No School, M. L. King

 
  Quicksort Ch. 11
 

Red-Black Trees

Ch. 12
 

Tree Maps and Tree Sort

Ch. 12
 

Tree Sets

Ch. 12
  Review  
  Exam 1  
  Priority Queues Ch. 13
  Heap Class and Heap Sort Ch. 13
  Heap Class and Heap Sort Ch. 13
  Huffman Codes Ch. 13
 

Hashing

Ch. 14
 

Hashing

Ch. 14
 

No School, Presidents Day

 
 

Hashing

Ch. 14
 

Graphs & Networks

Ch. 15
 

Graphs & Networks

Ch. 15
 

Graphs & Networks

Ch. 15
 

Graphs & Networks

Ch. 15
  Java Collections Framework  
  Java Collections Framework  
  Review  
 

Final Exam: 08:00 - 10:00

 

Laboratory Schedule

Date

Topic

Item Due

 

Introduction to NetBeans

 

  Introduce Project 1  
  Introduce Project 2 Project 1, due
  Project 2  
  Introduce Project 3 Project 2, due
  Project 3  
  Introduce Project 4 Project 3, due
  Project 4  
  Final discussion on assignments Project 4, due

Honor Code

All work turned in for credit, including exams and all components of the project, are to be the work of the student whose name is on the exam or project. For all project components, the student can receive assistance from individuals other than the instructor only to ascertain the cause of errors. Thus you can get help if you need it to figure out why something doesn't work. You just can't get help from anyone, other than the instructor or TA, to figure out how to make something work. All solutions turned in for credit are to be your individual work and should demonstrate your problem solving skills, not someone else's. The following text should appear on all assignments: " I pledge that I have neither given nor received help from anyone other than the instructor for all program components included here."

Help each other with the lab assignments. You may work together, but do the work on separate computers. The point is to understand the material enough so that you to go on and complete that week's programming assignment on your own.

Help each other understand and debug the programming assignments. However, you should write the code for your programs yourself. Writing it yourself is the only way you will learn. Do not work together to solve the programming assignments to the extent that two programs are essentially the same solution.

All program solutions turned in for credit are to be your individual work and should demonstrate your problem solving skills, not someone else's. Since everyone is writing their own code, no two programs should be the same or so similar that I could convert one to the other by a simple mechanical transformation (e.g. changing variable names and comments). I consider this plagiarism and a violation of academic code. First violation: Students must meet with the instructor. In most cases, the grade will be split between the authors of the copied programs. Second violation: Students will receive no credit for the assignment. An incident letter will be placed on file in the Computer Science Department and the matter referred to the Computer Science Department Chair.

Class Attendance

Class attendance is expected and recorded.

ADA Statement

Students with disabilities who wish to set up academic adjustment in this class should give me a copy of their "Confirmation of Eligibility for Academic Adjustment" from the Disability Support Services Office as soon as possible so we can discuss how the approved adjustment will be implemented in this class. Students without this form should contact the Disability Support Services Office, Buillon 205 or dssrecept@cwu.edu or 963-2171.

Caveat

The schedule and procedures for this course are subject to change. It is the student's responsibility to learn of and adjust to changes.