Course Outline
CS 163: Data Structures
Summer 2013
(the following outline is subject
to change!)
Programming and Software Engineering
Reading Assignment: Chapters 1 and 2
June 27th
- Topic #1 |
Introduction,
Programming Paradigms |
Introduction: Syllabus, Objectives for
the Course, Instructor Biography, Class Introduction, and Review Outline. |
Overview of what to expect for bookend homework (all online), programs,
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 |
|
Reading Assignment: Chapter 3, 4, 5
Watch
Videos for Topic #3 |
***No Class on July 4th *** |
Data
Abstraction |
|
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 |
|
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 |
|
Data
Abstraction
Reading Assignment: Chapters 6, 7, and 9
July 11th
Topic #4 |
Prog #1
is Due July 9th |
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 |
|
|
|
Topic
#5 Additional Linked List Implementations |
|
Variations of the Linked List |
|
Doubly linked lists |
|
|
|
Tree
Structures
Reading Assignment: Chapter 10
July 18th
Topic #6 and 8 |
Program #2 is Due on July 19th |
|
|
Topic #6 Hashing |
|
Chapter 12 Hashing (page 592) |
|
Chapter 2 Searching for Things (page 81) |
|
Searching: Introduction and notation,
|
|
Hash functions, resolving collisions,
table traversal |
|
What constitutes a good hash function |
|
Topic #8 Tree Structures |
|
Chapter 10 Definitions, Tree search |
|
Traversal of binary trees, Treesort,
Building a binary search tree Prepare
for the Midterm |
|
|
Reading Assignment: Chapters 11, 12, 13,
14
July 25th
- Topic #9 Tree Structures |
Prog #3 is Due on July 30th |
|
Height balance, contiguous
representation of binary trees: heaps |
|
|
2-3 Trees, 2-3-4 trees, red-black trees |
|
|
AVL Trees |
|
|
MIDTERM |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Efficiency
and Sorting
Reading Assignment: Chapter 13 and 14
August
1st -Topic #11 |
|
Graphs |
|
Orchards, trees, and binary trees |
|
Lexicographic search trees |
|
Chapter 9 Algorithm Efficiency |
|
Measuring efficiency of algorithms:
order of magnitude analysis, Big O notation |
|
Evaluating the efficiency of the algorithms |
|
Sorting
Strategies
Reading Assignment: Chapter 9
August 8th
- Topic #12 |
Prog #4
is Due August 9th |
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 |
|
Prepare
for the Final Exam! |
|
August 15th-
Final Exam *** NO PROGRAMS WILL BE ACCEPTED AFTER
8/16*** |
Program
#5 Due August 16th ***This
cannot be turned in late! *** |