Bill Teter
Office:          149 Redcay
Telephone:    2782
Office Hours:  Tuesday, Thursday 9:00-12:00

email:  william.teter@plattsburgh.edu

       

 

COMPUTER SCIENCE 223
Introduction to Data Structures and Algorithms 
Spring 2006

Required Texts:
     Data Structures and Problem Solving using Java by Mark Allen Weiss, published by Addison Wesley, 3'rd edition, 2006.

Prerequisite:
    CSC221 - Introduction to Computer Science (with a grade of at least C)
    CSC217 - Discrete Mathematics.

Objectives:
    In this course students will:

1. Continue to develop programming skills in Java.

2.  Apply big Oh notation to analysis of algorithm.

3.  Extend understanding of principles of object oriented design.

4.  Understand pieces of Java API and learn to use fundamental data structures and related algorithms.  These data structures are arrays, stacks, queues, lists, sets, and maps.  

5.  Apply these data structures appropriately in Java programs.

6.  Create full implementation of a data structure.

Course Content:

1.  Review of the basic statements and primitives of Java.

2.  Reference types
        Strings
        Arrays
     Exception handling and i/o

3.  Objects and classes
        constructors, fields, methods
        static fields and methods

4.  Inheritance
        polymorphism
        inheritance hierarchy
        super
        abstract methods and classes
        interface and multiple inheritance problem
        generic components with Object class
        genericity using interface types
        inner classes
        Generic components in Java 1.5

5.  Algorithm Analysis with big Oh, big Omega, big Theta, and little oh notations

6.  Collections API
        iterator pattern, enhanced for loop
        Comparable and Comparator interfaces
        list, stacks, queues, sets, maps--specification and implementation details for lists, stacks, queues (both linked and array based)

7.  Recursion

8.  Sorting
        insertion, Shellsort, mergesort, quicksort
Labs:

The lab sessions are from 2:00 to 5:00 every Thursday.  The lab sessions will alternate each week between practice programming sessions and programming exams.  The practice programming assignments will be graded and will provide the experience necessary for you to do well on the following programming exam.  The practice exams must be submitted prior to the next programming exam.  In the practice programming labs you may work with each other and ask me and lab aids for assistance.    During the lab exams you may ask me and only me for help on understanding syntax error messages or for clarification of program specifications.  The lab exams must be submitted by 5:00 of the day of the exam.  Each program (practice and exam) will be graded.  The grading code is:
    4 -- Program works and is well designed.
    3 -- Program partially works and or has design flaws.
    2 -- Program has some correct features.
    1 -- Program does not work.
Students may use texts, notes, and on-line resources during exams but must not communicate with anyone in any way.  In order to receive a C or better grade in this course the average grade on the programming exams must be at least 3.0.

The lab assignment will be posted on the web page for the course just prior to lab exams and early in the week for practice exams.  Programs will be submitted using the electronic submit script.

Exams:

There will be a final exam.

Quizzes: There will be a quiz each week on Tuesdays covering current material, typically the topics of the previous week of lectures and lab. The lowest quiz score will be dropped when computing the final grade. If you must miss a quiz for an acceptable reason see me before the quiz. In this case the next quiz will be counted twice. Otherwise there will be no make-ups. 

Policy: Students taking this course for the third, fourth, etc. time (excluding withdrawals) need special permission from the department chair. Under normal circumstances withdrawals will not be permitted after the end of advising.

Honesty:

Cheating on exams (in the lab or class) or plagiarizing others' work will not be tolerated. The first instance will result in a zero on the exam or assignment. If a second instance occurs you will be dropped from the class.

Grades: Your final grade should reflect your knowledge of the subject. It will be computed as follows:
    Lab exams 35%
    Final exam 20%
    Quizzes 30%
    Practice programs  15%

I may override this formula if in my opinion the formula results in a grade that does not measure the student's knowledge of the subject.

Attendance Policy: Students are responsible for all material and information presented in class.