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 2008

Class Time:
    Class meets Monday, Wednesday and Friday 9:00-9:50 in Hawkins 231.  Lab meets every Thursday from 2:00 -- 4:50 in Hawkins 053B.

Required Texts:
    Modern Software Development using Java by Tyman and Schneider, Second Edition, Thomson, 2008.

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 selected classes in the 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.  Learn and put into practice the techniques of software engineering.

Course Content:

Software development cycle

Object oriented design principles
    Object, classes, inheritance
    UML
        class diagrams
        sequence diagrams

Java features
    State, Behaviors, Identity
    Inheritance
        Abstract classes
        Interfaces
        Polymorphism
        Object class
    Generics

Analysis of Algorithms
    Big Oh notation and related relations
    Average case, worst case
    Code analysis
    analysis of recursive algorithms

Linear data structures
    arrays, linked
    Lists
    Stacks
    Queues

Hierarchical data structures
    Binary trees
    Search trees
    Balanced trees

Sets and Maps

Java Collections Framework
    Iterators
    Natural ordering  
        Sorting
               quick sort
                merge sort
                Insertion sort            

Labs:

The lab sessions are from 2:00 to 4:50 every ThursdayLab assignments will be posted on the course web page.  You will probably not finish assignments during the 3 hour lab sessions.  It is expected that you will finish the labs on your own and submit them by the beginning of the next lab.  It is also expected that you will not leave a lab session early (unless you have completed the assignment).  I expect that you will talk with me and other students as you work out solutions to the labs.  It is particularly important that you seek assistance resolving syntax error messages that you do not understand.  My experience is that most students wait too long before asking for assistance.  If you find yourself thinking, "I don't know where to begin", that's a fine question to ask.  This said, I do expect that the work you submit is your own.  It must have your name on it as the author.  This means it has been typed (by you) into an editor, debugged, and tested  by you.  Work that is derived from an electronic copy of someone else's work is not acceptable.  Most of the programs you write will implement designs developed in class.  You will submit your work using version control system called subversion, svn.

Exams:

There will be a final exam.

Quizzes: There will be a quiz each week on Monday 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: 

It is expected that all students enrolled in this
class support the letter and the spirit of the
Academic Honesty Policy as stated
 in the college catalog.
 

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           50%
    Final exam 20%
    Quizzes     30%
To receive a C or better in the class your lab average must be at least 75%.
 

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