Updated: 10 June 2003
| CSC 260 Data Structures and
Algorithms |
4 cr. |
Basic data structures such as stacks, queues, linked lists, and trees
are studied and applied to problems in data storage and manipulation.
Applications include basic searching and sorting algorithms. Design, analysis
and implementation techniques are discussed. Three lecture hours and three hours of
scheduled laboratory per week, plus extensive programming work outside of class.
Prerequisite: CSC 202J with grade of C+ or higher;
CSC 200 or CSC 200A.
Goals:
The purpose of this course is to develop students' knowledge and appreciation
of organization and retrieval techniques and to familiarize students with the basic concepts
of order-of-magnitude analysis. The goals of this course are:
- CG1: to develop an appreciation for the process of data abstraction and its usefulness
in software development;
- CG2: to develop the skills and knowledge necessary to perform basic analysis of algorithms;
- CG3: to present a selection of the most common data structures and their standard
implementations and uses;
- CG4: to present a selection of the most common algorithms for searching and sorting.
Objectives:
Upon successful completion of this course a student will have:
- CO1: applied data abstraction techniques;
- CO2: implemented several classic data structures "from scratch";
- CO3: demonstrated knowledge and use of ADTs available in one or more language libraries;
- CO4: recognized the factors required to perform analysis of algorithms and
performed order-of-magnitude analysis;
- CO5: chosen, with justification, an appropriate structure to match the requirements
of a given problem, implemented the structure if necessary, and used it in an
appropriate way to solve the problem;
- CO6: utilized standard techniques for program validation;
- CO7: demonmstrated the ability to use the UML modeling language;
- CO8: produced documentation for at least one major completed project, including
formal class diagrams and rigorous test set specification and results;
- CO9: participated in at least one group project involving problem analysis and
design specification and selection.
Topics:
- review of design concepts
- recursion (review and new examples)
- the hierarchy of data types and the concept of abstract data type (ADT)
- the three levels of data structuring
- the application level (recognizing the behaviors and features needed to solve
the problem at hand)
- the abstract level (selecting or defining an appropriate abstraction that
models these behaviors)
- the implementation level (realizing the abstraction using standard programming
language features)
- abstract data types
- stacks
- queues
- priority queues
- ordered lists
- access tables
- links
- trees
- heaps
- graphs
- data structures and their algorithms
- linear linked structures: singly linked lists, bidirectional
linked lists, multi-list structures
- non-linear linked structures
- hierarchical: binary trees, AVL trees, B-trees
- network: graphs, digraphs, weighted graphs
- direct access structures: hash tables (direct and indirect)
- ADTs and object-oriented design
- other algorithms:
- linear search, binary search (review)
- insertion sort, selection sort (review)
- quicksort
- heapsort
- elementary algorithm analysis (efficiency, speed)
- implementing ADTs and data structures:
- static memory allocation (arrays) vs. dynamic memory allocation
vs. files
- pointers and dynamic memory allocation
- use of software libraries
This course revolves around the notions of data abstraction and the
structuring of data, using the concept of abstract data type (ADT).
The most common and most useful data structures are defined and
classified, and the appropriate manipulation algorithms are presented
in general form (in pseudocode). At least one concrete realization for
each structure is then discussed.
Five or six programming assignments are given, emphasizing the choice and/or
implementation of a specified structure, such as a stack, queue,
binary search tree, or hash table. The final assignment requires the
student to make the choice of an appropriate data structure or combination
of structures to best solve a specified problem.
All programs must conform to departmental guidelines for algorithm
design and implementation. Laboratory reports must conform to the
written guidelines supplied by the instructor. Regardless of numeric
average or individual grades on assignments or examinations, a student
will not be eligible for a passing grade in the course unless he or
she has submitted a lab report for every programming assignment,
within the time frame specified by the instructor.
Bibliography:
- Budd, Timothy. Classic Data Structures in Java.
Addison Wesley, 2001.
- Carrano, Frank M.; Prichard, Janet J. Data Abstraction and
Problem Solving with Java. Walls and Mirrors. McGraw-Hill, 2001.
- Collins, William J. Data Structures and the Java Collections Framework.
McGraw-Hill, 2002.
- Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.
Introduction to Algorithms. Second Edition.
The MIT Press, 2001.
- Dale, Nell; Walker, Henry M. Abstract Data Types. Specifications,
Implementations, and Applications. D. C. Heath, 1996
- Knuth, Donald E. The Art of Computer Programming, Volume 1 (Third
Edition, 1997) and Volume 3 (Second Edition, 1998) Addison-Wesley.
- Preiss, Bruno R. Data Structures and Algorithms with Object-Oriented
Design Patterns in Java. John Wiley & Sons, 2000.
- Shaffer, Clifford A. A Practical Introduction to Data Structures and
Algorithm Analysis. Java Edition. Prentice Hall, 1998.
- Weiss, Mark Allen. Data Structures and Problem Solving using Java.
Second Edition. Addison Wesley, 2002.
Salem State Home •
Computer Science Home •
Faculty •
Computer Studies Major •
Flow Sheet
Computer Studies Minor •
Courses •
Course Sequence Diagram •
Computer Laboratories
|