CIS 2168
Data Structures
Course Syllabus

Spring 2014
Paul LaFollette, Jr.
Office: Wachman Hall 307
Telephone 215 204 6822 (1-6822 from on campus)
paul.lafollette@temple.edu
Office hours: Tuesday 3:30-4:30 and Thursday 1:30-2:30
or by appointment

Required Textbook
Objects, Abstraction, Data Structures and Design Using Java Version 5.0, Elliot B. Koffman, Temple University, Paul A. T. Wolfgang, Temple University, ISBN: 0-471-69264-6, ©2005

  1. Prerequisite Skills:
    1. A grade of C or better in CIS 1166 and 1068.
    2. Beyond these formal pre-requisites, I shall assume you have the following skills:
    3. Introductory knowledge of the Java programming language.
    4. Working knowledge of the basic ideas of procedural abstraction and elementary data abstraction and how to put these ideas to work in solving problems of moderate complexity.
    5. Ability to write small program components using decision and loop structures and nested structures.
    6. In-depth understanding of argument passing mechanisms.
    7. Ability to design and implement systems of small programs using collections of short functions having clean and concise interfaces.
    8. Considerable skill in the manipulation of arrays including elementary searching and sorting.
    9. An understanding of the basic elements of Java input and output including the use of external files.
    10. Awareness of the importance of component reuse and of the contents of the Java libraries available on your computer system.
    The bottom line here is that you should be able to design, for instance, a program using multiple
    subprograms (functions) that
    1) Prompts the user for a names, ages, and weights over and over until the name FINISHED is entered.
    2) Prints the name, age, and weight of each person entered in order from lightest to heaviest person.
    3) Over and over asks for a name and prints out the corresponding age and weight (if the name exists in the
         data) or prints NOT FOUND (if the name does not exist in the entered data.)

    I shall begin the course making the assumption that everybody has the skills necessary to complete such a
    task.
     
     

  2. Catalog Description

  3. A continuation of CIS 0067. Program style organization and design with continued emphasis on the object-oriented design paradigm. Understanding and use of data abstraction through Java classes and class libraries. Understanding and use of the following Abstract Data Types: strings, stacks, queues, linked lists and binary trees. Introduction to expression evaluation and other applications. Introduction to recursion and comparative analysis of searching and sorting algorithms and data structures. Sorting algorithms include insertion sort, mergesort, heapsort,and quicksort. Searching algorithms include binary search and hashing.
     

  4. Course Objectives:

  5. In this course we examine a number of data structures and associated algorithms that are fundamental to the study of computer science. The analysis of the efficiency of algorithms is also discussed. Algorithm and data structure choices will be discussed and there will be a heavy emphasis on program modularization and the use of abstract data types and object-oriented design in writing good programs. Students will study examples of programs developed using abstract data types and the object-oriented approach, and will be expected to develop their own small to medium size programs as well.
     

  6. Grading Policy

  7. There will be two mid-term examinations and a final examination.  The midterm examinations will be open book. The Final will be a common final with the other sections of the course. There will be a series of laboratory exercises, roughly one per week. These will generally be due one week after the laboratory period in which they are first assigned. The grade for each assignment will be lowered if it is turned in late. These are a required part of the course. You should not expect that you will be able to complete these assignments during the scheduled laboratory periods, it will be necessary for you to work on them outside of scheduled lab time as well. Roughly one hour of class time per week will be allocated to recitation. During this time you are expected to be prepared to discuss and answer questions about course material, discuss and perhaps present your lab assignments, and solve problems. Performance during recitation will also be graded. Clearly attendance is important. There will be weekly in class quizzes. Your final grade will be determined by a combination of your performance on the mid-terms, the final, your lab projects, weekly quiz scores, and my impression of your in-class performance, weighted roughly equally.

    Cheating and plagiarism will not be tolerated.  The following web page discusses the University policy on plagairism and a number of other responsibilties of undergraduate students. It is worth visiting. Undergraduate Responsibilities.    The grade of I (Incomplete) will be given only under exceptional circumstances.

    I would like to point out that completing the laboratory assignments is of particular importance for several reasons.  First of all, it contributes directly to your final grade. Secondly, it contributes indirectly to your final grade, because doing programming exercises is the best, perhaps the only way to master this material.  If you don't do the labs,  you will not do as well on the exams.

Disability Disclosure Statement

Any student who has a need for accommodation based on the impact of a disability should contact me privately to discuss the specific situation as soon as possible. Contact Disability Resources and Services at 215-204-1280 in 100 Ritter Annex to coordinate reasonable accommodations for students with documented disabilities.

Student and Faculty Academic Rights and Responsibilities

Freedom to teach and freedom to learn are inseparable facets of academic freedom. The University has a policy on Student and Faculty and Academic Rights and Responsibilities (Policy #03.70.02) which can be accessed through the following link