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