CS-2852 Data Structures
Spring 2011
Dr. Mark L. Hornick


Description     Schedule     Policies     Quizzes/Homework     Grading


Revision History

This is where you check for news and information regarding recent additions (assignments, announcements, etc) to this site. The latest revision will be put at the bottom of the list.

 3/30/2011 added link to Dr. Taylor's LinkedList wiki

3/8/2011 updates to syllabus for first 2 weeks
3/6/2011 Initial version

This page was last updated on 05/16/2011.

Class Schedule

Lecture sessions meet Monday, Wednesday, and Friday in S362 from 10:00am to 10:50am.

Lab sessions are on Tuesday in S362 from 9:00am to 10:50am.

As stated in my general course policies, attendance is mandatory for all lectures and labs. Email me when you foresee yourself to be absent.  You'll get a grade of 0 for your assignment for an unexcused absence from lab. Be sure to read the entire document for all relevant policies that apply to this course.

Course Description

This course covers the organization of data and the algorithms that act upon them. The topics of stacks, queues, trees and sets are introduced. Fundamentals of algorithm performance are also introduced, with an emphasis placed on time complexity analysis. Applications to data structure searching and sorting, memory allocation and file management are included. Laboratory activities include the application of data structures from standard libraries.

Please consult the official course description for detailed objectives.

Textbook

Data Structures, 2nd Ed. Kaufman & Wolfgang, Wiley, 2010

Syllabus

Week Day Topics Reading Lab (Tuesday)
1
 
M
Course Intro

Review of JCF classes ArrayList, LinkedList(performance characteristics)

Java Collections Framework:
Collections Classes

1, 2.1, Collections

Homework 1 due Tuesday 8am

Lab 1:
Benchmarking Collection Classes

W Arrays and Collections:

Array-based primitive & object management

2.2-2.3, A.8, A, B, C

ArrayLists primer

Sample Code:
arraywrapper.zip

F Generics in Java

ArrayWrapper exercise

 
2
 
M Algorithm Analysis - introduction

2.4

Homework 2

Quiz 1 - JCF basics, benchmarking

Lab 2: Connect the Dots

W

Linked lists

2.5-2.6

Sample Code:
DoublyLinkedList.java

F Linked lists continued

Implementing Generic classes

2.7

Dr. Taylor's LinkedList
in pictures and song
3
 
M

The Iterable and Iterator interfaces

for-each revisited

2.8

 

Quiz 2 - ArrayList implementation, JCF interfaces

Lab 3: Connect the Dots - revisited

W

Algorithm Analysis - again

LinkedList exercise

Homework 3
F Linked lists continued
Java Collections Framework
2.9-2.11
4
 
M Review Study Guide for Exam 1

Lab 4: Dictionary
due Monday 4/4 3:30pm

W Exam 1  
F

Stacks

3.1-3.4
5 M Queues 4.1-4.3, 4.5 Lab 5: Guitar Synthesizer
due Monday 4/11 Noon
(assignment and demonstration)
W Recursion 5.1-5.2

Sample Code:
BoundaryFiller.java

F Recursion exercise 5.3, 5.5
6
 
M Binary Trees Sample Code:
Sorter.java

6.1-6.2

Quiz 3: Recursion

Lab 6: Recursive Word Search
due Monday 4/18 Noon
 

W

Binary Search Trees

Implementing the Comparable Interface

Sample Code:
binarytree.zip
F Binary Search Trees
Recursive operations

Searching and Adding using recursion

6.3-6.4
7
 
M Removing elements

Review

 

Lab 7: Morse Encoder
due Tuesday 5/3 Noon

W Exam 2
Bring a calculator
Study Guide
F Spring Break  
Spring Break
8
 
M Hashing and Hashmaps

Homework 6
(due 5/10 on BB)

7.1-7.2

Sample Code:
HashingDemoApp.zip

Quiz 4

Lab 8: Morse Decoder
W Collision handling in Hashmaps 7.3-7.4
F TreeMaps
TreeSets
7.5-7.6
9 M HashSet Dictionary exercise SampleCode:
HashExercise.java
Quiz 5

Lab 9: Thesaurus Hash Table
due Tuesday 5/17 Noon
W Rotations and Balanced Trees Sample Code:
MapDemoApp.zip9.1
F Red/Black Balancing 9.2, 9.3
10
 
M Cloning Sample Code:
CloningDemo.zip
Quiz 6

Wordsearch revisited exercise

W How to pick a Data Structure
Algorithm Analysis Revisited
 
 
F Final Review

Course/Instructor Evaluation

 
11
 
Common Final Exam
Tuesday 5/24 11am-1pm

S362

Course policies

My general course policies apply to this course.

Quizzes & Homework

Quizzes or Homework will be given or assigned each week.

You are encouraged to work with your classmates on homework, so that you can more fully understand the problem and discuss approaches to solution. However, you should work out the solutions to problems individually. Homework problems will be kept short, and will be due the next class period after which they are assigned unless stated otherwise in the homework description.

Quizzes, when given instead of homework, will be given at the beginning of the Lab session. No quiz will be given the week of the Exams. No make-up quizzes will be given.

Grading algorithm

Note that this algorithm indicates how a grade will be determined for students who have successfully demonstrated mastery of the course objectives. An acceptable level of success in meeting all course objectives is a prerequisite for a passing grade in the course.

Criterion Weight
Labs 30%
Quizzes 25%
Hour Exams 25%
Final Exam 20%

Java Development Tools

Follow this link for more information on the tools we use for this course.

Documentation Standard

All source code submitted must use JavaDoc commenting conventions and meet the minimum documentation standards outlined below.

.