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! ***