State University of New York at Oswego

  1. COURSE NUMBER AND CREDIT
  2. Csc 241 - 3 Semester Hours

  3. COURSE TITLE
  4. Abstract Data Types and Programming Methodology

  5. COURSE DESCRIPTION
  6. Modular design of programs and abstract data types are emphasized. Different implementations of abstract data types are analyzed, compared, and contrasted. O(n ln n) sorting algorithms are studied.

  7. PREREQUISITES
  8. Csc212 - Principles of Computing

  9. COURSE JUSTIFICATION
  10. 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.

  11. COURSE OBJECTIVES
  12. Upon successful completion 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.

  13. COURSE OUTLINE
    1. Revisit structured types. allow for combination of arrays and records.
    2. Programming Methodology.
      1. Analysis and specification.
      2. Data structure selection and algorithm development.
      3. Modular program development and modular testing.
      4. Integration and testing.
    3. Recursion. Tower of honoi, parsing, etc.
    4. Abstract data types
      1. Definition and implementation modules
      2. Stack type and Queue type
        1. Basic concepts
        2. Dynamic and static representation
        3. Definition and implementation of operations
        4. Use as an ADT
        5. Efficiency of algorithms
      3. List type
        1. Basic concepts
        2. Dynamic and static representation
        3. Definition and implementation of operations.
        4. Use as an ADT
        5. Efficiency of algorithms
        6. Ordered list, rings, etc.
        7. Implementation of other ADTs such as strings and sets using lists.
      4. Binary tree
        1. Basic concepts
        2. Dynamic and static representation
        3. Definition and implementation of operations.
        4. Use as an ADT
        5. Efficiency of algorithms
    5. O(n ln n) sorting techniques and their efficiency
      1. Quick sort
      2. Radix sort
      3. Heap sort

  14. METHODS OF INSTRUCTION
    1. Lectures
    2. Discussion

  15. COURSE REQUIREMENTS
    1. Reading from the textbook.
    2. Design and implementation of programs.

  16. MEANS OF EVALUATION
    1. Individual programming projects.
    2. Examinations.

  17. RESOURCES
  18. No additional resources are required.

  19. BIBLIOGRAPHY
  20. 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.