Department of Computer Science   

   CSCI 220

Data Structures


Catalog Description: A continuation of Computer Science 150 and 150L, topics include analysis of algorithms, with emphasis on computational complexity and advanced algorithms including self adjusting trees, hashing, graphs, sorting, searching, hashing methods, and greedy algorithms.


CSCI 220 Syllabus
CSCI 220 Project Guidelines
Code Conventions for the JavaTM Programming Language
Review Material For Exam 1
Walk-thru Document
Trees
Review Material For Exam 2
Graphs (rtf)
Graphs (html)
Long Guide (doc, 62pp)
Short Guide (rtf, draft of prev exam)

QuickTopic free message boards
Discuss Java
Discuss CSCI 220 Data Structures

Notes

Big Oh
Big Oh Analysis of Heapify
Review Material For Exam 1
Review Material For Exam I1

Graphical Test Code

Graphical test programs that can help you identify problems in your container classes.

I will post more information as I am able. The test suite is version 1 and some updates are already planned. To use simply unzip the rar files. Drop the .class files with your class files and the .java with your source. Note that I did not provide source for the class files and I may not have provided class files for the sourde. While you should not need source files for the class files some students had problems with this llast year. We were able to compile from the command line and then everything worked. I haven't completed testing out side my environment so please be patient, more instructions will follow ASAP.
Folder View of Files

Project 1    Array Operations, Vector ADT, Visitor Design Pattern

due Wednesday, August 29

Implement ArrayOperations and Vector classes. You'll need the Visitor interface to test your code. The Sample_Visitor class provides an example of implementing a visitor interface and using a visitor object.

Updates:

Notes:

No constructor needs to be explicitly provided for the array operations class but to use it you will have to call a default constructor and create an object. You can argue (perhaps correctly) that these methods really ought be static, but interfaces do not allow static methods and I wanted you to implement an interface. Thus you will have to create an object to call these methods in your test code.


Folder View of Files

Project 2    Linked List

due Friday, August 31

Implement a Linked List class. You'll need the Visitor interface (from Project 1) to test your code. The Sample_Visitor class provides an example of implementing a visitor interface and using a visitor object.


Folder View of Files

Project 3    Stack And Queue

due Monday, Sept. 10

Implement the Stack and Queue Interfaces. You'll also need all of the interfaces from Projects 1 and 2 as well as completed code from project 1 and 2 to test your code. Your Stack and Queue classes must use the Vector and Linked List classes from Project 1 & 2. Meet all of the following criteria:

  1. one class (Stack or Queue) uses "is a" design pattern (inheritance)
    the other class uses "has a" design pattern (attribute)
  2. one class (Stack or Queue) using your vector
    the other class uses your linked list

Folder View of Files

Project 4    Simple Sorts

due Friday, Sept. 14

Implement the CS220_SimpleSortingAlgorithms_Interface. This will require that you implements the following sorting algorithms:

  1. bubbleSort
  2. insertionSort
  3. selectionSort
  4. rankSort

As usual you may introduce additional methods as you see fit. Here a simple yet viable testing strategy might create an array or sorted data, scramble it or reverse it in a clone, call the sort routing using the clone, then verify that the result matches the original sorted data.


Folder View of Files

Project 5    Fast Sorts

due Friday, Sept. 21

Implement the CS220_FastSortingAlgorithms_Interface. This will require that you implements the following sorting algorithms:

  1. quickSort
  2. mergeSort
  3. heapSort
  4. bitSort

As usual you may introduce additional methods as you see fit. Here a simple yet viable testing strategy might create an array or sorted data, scramble it or reverse it in a clone, call the sort routing using the clone, then verify that the result matches the original sorted data.


Folder View of Files

Project CheckPoint    Projects 1-5

due Friday, Sept. 28

Portfolio of projects 1-5 due. Must include testing code etc. This will be assigned 5 grades. This will also be the day of our exam 1.

Project 6 - 10    Binary Search Tree

4 Binary Search Tree Designs (ppt)
4 Binary Search Tree Designs (html)

Implement the CS220_BinarySearchTree_Interface.

As usual you may introduce additional classes and methods as you see fit.

Folder View of Files

Projects 11 - 13    Graphs -- The Final 3 Projects

Graphs (rtf)
Graphs (html)

Implement appropriate Graph representations and algorithms as described below.

As usual you may introduce additional classes and methods as you see fit.

No interface will be provided. Your design will be part of your grade.

Write a program that creates random weighted connected graphs then use this to implement and tests:

Your program should produce output representing the graph and the solution.
A path can be presented as (1-5-4-17-.....)
A weighted path can be presented as
(1,5,20), (5,4,14),
but any clear representation will suffice.
You may have a representation for each problem
or you can reuse your representation if appropriate.


Homework Assignments

Homework 1 Big Oh due Wednesday, August 29
Homework 2 Big Oh due Monday, September 23

Find the asymptotic complexities of the Fast Sorting Algorithms (see project 5). Give proofs that justify your conclusions.


Homework 3-4-5-6 Big Oh due Wednesday, October 10

Participate in 4 Walk-thrus. 3 as reviewer and 1 as the coder. Submit a copies of your reports. Your Walk throu reports must also appear at the end of the year in your updated portfolios.


Links of Interest