Course Outline

 

CS 163 Data Structures

Spring 2009

 

(the following outline is subject to change!)

 

 

Programming and Software Engineering

 

Reading Assignment: Chapters 1 and 2

 

Week #1- Topic #1                                                                                 **Login to Blackboard

Introduction, Programming Paradigms                                              

• Introduction: Syllabus, Objectives for the Course, Instructor Biography, Class Introduction, and Review Outline.

• Overview of what to expect for homework, projects, and examinations.

 

Topic #2

• Chapter 1 - Principles of Programming and Software Engineering

• Review: Chapter 2 Recursion

 

• Review: Data Abstraction through Classes

• Discuss Abstract data types, Classes in C++, Class scope, and Information hiding

 

Data Abstraction

 

Reading Assignment: Chapter 3

 

Week #2- Topic #3

 

Data Abstraction

Homework #1 due 4/9

• Chapter 3 - Data Abstraction -- The Walls

 

• Step through an example of an abstract data type using classes, constructors, member functions.

 

• Quickly review the concepts of pointers, dereferencing, and allocating/deallocating memory

 

• Introduce new concepts of: reference types,  pointer arithmetic, class destructors and copy constructors

 

 

Reading Assignment: Chapters 4 and 5

 

Linked Lists

 

• Chapter 4 - Linked Lists

 

• Chapter 5 - Recursion as a problem solving technique

 

• Algorithms for Simple Linked Lists: list traversal, insertion, deletion

 

• Discuss array implementations versus linked list implementations of an ordered list

 

 

 

 

 

 

Reading Assignment: Chapters 6 and 7

 

 

Week #3- Topic #4

Program #1 due 4/16

Stacks and Abstract Data Types

 

• Chapter 6 - Stacks

 

• The stack as an example of an Abstract Data Type in Program Development

 

• ADT Stack Operations

 

• Implementing Stacks using arrays

 

• Implementing Stacks using dynamic memory

 

 

 

Queues and Abstract Data Types

 

• Chapter 7 - Queues

 

• The Abstract Data Type Queue

 

• Implementations of the ADT Queue

 

 

 

 

 

 

Algorithm Analysis and Searching Strategies

 

Reading Assignment: Chapter 9

 

Week #4-Topic #6

 

Topic #5 Additional Linked List Implementations

Homework #2 due 4/23

• Variations of the Linked List

 

• Doubly linked lists

 

 

Hashing

 

• Chapter 12 Hashing

 

• Chapter 2 Searching for Things

 

•  Searching: Introduction and notation,

 

• Hash functions, resolving collisions, table traversal

 

• What constitutes a good hash function

 

•  Chaining versus Linear Probing

 

 

 

Topic #7 Algorithm Efficiency  

 

 

 

• Chapter 9 Algorithm Efficiency

 

• Measuring efficiency of algorithms: order of magnitude analysis, Big O notation

 

• Evaluating the efficiency of the algorithms

 

Review for the Midterm

 

 

 

 

Week #5

 

Midterm  on 4/28

 

 

*** Program #2 Due 4/30***

 

 

 

 

 

 

 

Tree Structures

 

Reading Assignment: Chapter 10

 

Week #5 and 6-Topic #8

 

Tree Structures

 

• Chapter 10 Definitions, Tree search

 

•  Traversal of binary trees, Treesort, Building a binary search tree

 

•  Binary Tree: insertion and deletion examples

 

 

 

Reading Assignment: Chapters 11 and 12

11

Week #7-Topic #9 Tree Structures

Program #3 Due 5/14

•  Height balance, contiguous representation of binary trees: heaps

 

• 2-3 Trees, 2-3-4 trees, red-black trees

 

• AVL Trees

 

• The efficiency of searching algorithms, using trees

 

 

 

 

Graphs

 

Reading Assignment: Chapter 13 and 14

 

Week #8-Topic #11

 

Graphs

 Homework #3 Due 5/21

 

• Orchards, trees, and binary trees

 

• Lexicographic search trees

 

• Graphs in general

 

 

Sorting Strategies

 

Reading Assignment: Chapter 9

 

Week #9-Topic #12

Program #4 Due 5/28

 

 

Sorting strategies

 

• Chapter 9: Sorting: Introduction and notation, selection sort, bubble sort

 

• Also, demonstrate the insertion sort

 

 

 

 

 

• Mergesort for linked lists

 

 

 

Topic #13

 

• Quicksort for contiguous lists

 

• Shell sort

 

• Efficiency of Sorting Algorithms

 

 

 

 

 

Week #10-Review and Final Exam

• Question and Answer Session 

 

Program #5 Due 6/11

 

 

 

 

 

 

 

                Tuesday June 9th 10:15am-12:05                                    Comprehensive Final Exam