BACK TO CS401 MAIN PAGE

CS401: Introduction to Advanced Studies I

 

CS401 Course Syllabus

 

Overview

 

This course presents a number of essential data structures and related algorithms used in computer science. Performance analysis, in the way of asymptotic upper bound estimates, is applied to the algorithms used in specific data structures. Emphasis is placed on object oriented design and data abstraction in the creation and application of data structures.

 

General Information

 

 

Required Text:              C++  Plus Data Structures  by Nell Dale, Jones and Bartlett publisher, 3rd edition.

 

                                    A laboratory Course in C++ Data Structures by James Roberge, Stefan Brandle, David Whittington, Jones and Bartlett publisher, 2nd edition.

 

References:                   Introduction to Algorithms, by Cormen, T. C. Leiserson, D. Rivest, MIT Press publisher, 2nd edition.

 

                                    C++ How to Program by Deitel and Deitel, Prentice Hall publisher, 3rd edition.

 

 

 

Course Goals:

 

Students should be able to:

 

                                    Explain, implement the following data structures:

·      Lists (unordered and ordered)

·      Stacks

·      Queues

Analyze time and space complexity of algorithms using asymptotic upper bounds (big-O notation).

Explain and use pointers, dynamic memory allocation, and linked structures for the above listed data structures.

Outline basic object-oriented design concepts:

·        Composition

·        Inheritance

·        Polymorphism

·        Dynamic Method Binding

Write and test recursive procedures with linked structures, and explain the run time stack concept.

Explain, implement and apply the following hierarchical data structures:

·        Expression trees

·        Binary search trees

·        Heaps

Analyze sorting and searching algorithms, and explain their relationship to data structures.

Choose and implement appropriate data structures to solve an application problem.

 

 

 

Topics:

 

The following is a list of major topics that will be covered in the course:

 

  1. Review of primitive types, Arrays, Records, Strings, and string processing.
  2. Abstract Data Types (ADTs), implementing ADTs using classes.
  3. List ADT, array implementation.
  4. The concept and properties of algorithms: correctness and performance.
  5. Sorted List ADT, binary search, and performance evaluation.
  6. Constructors, destructors, overloading operators.
  7. Pointers and references.
  8. Dynamic memory allocation.
  9. Stack ADT, array and linked list implementations.
  10. Queue ADT, array and linked list implementations.
  11. Unsorted list ADT, singly linked list implementations.
  12. Sorted, circular, and doubly linked lists.
  13. Copying structures.
  14. Composition, Inheritance, Polymorphism and Dynamic Method Binding.
  15. Testing, empirical measurements of performance.
  16. Programming with recursion, runtime stack.
  17. Divide and conquer example-quicksort.

18.  Trees, Expression Tree ADT, Binary Search Trees.

19.  Heaps, Priority Queue ADT, Heapsort.