STATE UNIVERSITY OF NEW YORK AT OSWEGO
                 Computer Science Department


     I.  COURSE NUMBER AND CREDIT:

         CSC 241 - 3 S.H.

    II.  COURSE TITLE:

         Abstract Data Types and Programming Methodology

   III.  COURSE DESCRIPTION:

         Modular design of programs and abstract data types
         are emphasized.  Different implementations of
         abstract data types are analyzed, compared, and
         contrasted.  0(n 1n n) sorting algorithms are
         studied.

    IV.  PREREQUISITES:

         CSC 212 - Principles of Computing
         CSC 221 - Foundations of Computer Science

     V.  JUSTIFICATION:

       This course is the first course that formally
       discusses abstract data types and modular design.
       The programming techniques and the data abstraction
       concepts learned here are crucial for the rest of the
       core. One section of this course with a maximum of
       thirty two students will be offered every semester.
       This course is required for CS majors.


    VI.  COURSE OBJECTIVES:

         As a result of this course, students will be able
         to:
         1.  Write programs in a high level programming
             language that supports modular design.
         2   Define and implement abstract data types.
         3   Use abstract data types in application
             programs.
         4   Develop efficient internal sort Algorithms.

    VII.  COURSE OUTLINE:

          A.  Revisit structured types.
              allow for combination of arrays and records.

          B.  Programming Methodology.
              1.  Analysis and specification.
              2.  Data structure selection and algorithm
                  development.
              3.  Modular program development and modular
                  testing.
              4.  Integration and testing.

          C   Recursion.
              Tower of honoi, parsing, etc.

          D.  Abstract data types
             1.  Definition and implementation modules
             2.  Stack type and Queue type
                 a.  Basic concepts
                 b.  Dynamic and static representation
                 c.  Definition and implementation of
                     operations
                 d.  Use as an ADT
                 e.  Efficiency of algorithms
             3.  List type
                 a.  Basic concepts
                 b.  Dynamic and static representation
                 c.  Definition and implementation of
                     operations.
                 d.  Use as an ADT
                 e.  Efficiency of algorithms
                 f.  Ordered list, rings, etc.
                 g.  Implementation of other ADTs such as
                     strings and sets using lists.
             4.  Binary tree
                 a.  Basic concepts
                 b.  Dynamic and static representation
                 c.  Definition and implementation of
                     operations.
                 d.  Use as an ADT
                 e.  Efficiency of algorithms

          E.  o(n 1n n) sorting techniques and their
              efficiency
              1.  Quick sort
              2.  Radix sort
              3.  Heap sort

VIII.  METHODS OF INSTRUCTION:

       1.  Lectures
       2.  Discussion

  IX.  COURSE REQUIREMENTS:

       1.  Readings from the textbook
       2.  Design and implementation of programs

   X.  MEANS OF EVALUATION:

       1.  Individual programming projects
       2.  Examinations

  XI.  RESOURCES:

       No additional resources are required.

 XII.  BIBLIOGRAPHY:

       Gonnet, G. (1991). Hand book of Algorithms and
       Data Structures: In Pascal and C, 2nd Ed. Reading,
       MA, Addison-Wesely.

       Korfhage R. & Gibbs, N. (1987). Principles of Data
       Structures and Algorithms with Pascal.  Clifton
       Park, NY, WCB.

       Kruse, R. (1991). Data Structures and Program
       Design in C., Englewood Cliffs, NJ,
       Prentice-Hall.

       Kruse, R. (1988). Data Structures and Program
       Design. 2nd Edition. Englewood Cliffs, NJ,
       Prentice-Hall.

       Nance, D. & Naps, T. (1989). Introduction to
       Computer Science - Programming, Problem
       Solving, and Data Structures. St. Paul, MN,
       West.

       Van Wyk, C. (1990). Data Structures and C Programs,
       Reading, MA, Addison-Wesely.

       Weiss, M. (1994). Data Structures and Algorithm
       Analysis, Redwood, CA, Benjamin/Cummings.
 Last Updated: 7/9/07