Course Outline

 

CS 163: Data Structures

Summer 2012

 

Supplemental lecture videos will be required and assigned during the term on a weekly basis. These videos will be announced and posted on the D2L Course Content

 (the following outline is subject to change!)

 

 

 

 

WEEK #1: Programming and Software Engineering

 

Date:               Topic:                                                                         

6/26-7/2         Watch Topics #1 and 2 Videos                      

 

Reading:  Chapters 1-3

             

 

6/29  -  Lecture on Topic #1

Introduction, Programming Paradigms

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

• Overview of what to expect for:

 assignments, attendance, discussions, inclass lab activities and examinations.

 

 

*** Make sure to practice Linear Linked Lists and recursion from CS162 ***

 

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

 

 

6/29  - Lecture – Preview of Topic #3

 

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

 


WEEK #2: Data Abstraction

 

Date:               Topic:                                                                         

7/2-7/6           Watch Topic #3 and 4 Videos                       

 

Reading:  Chapters 3-7

 

 

7/6 – Review 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

 

             

7/6 - Required Lab Time ***BRING a LAPTOP, NETBOOK, or Tablet. If you do not have access to your own device, then make arrangements with your instructor so that one will be provided during this lab session. 24 hour advanced notice is required.

·         Review from required videos on Data Abstraction

·         Demonstration: Creating classes as ADTs

·         Practicing Data structures (LLL)

 

 

7/6 –Introduce Stack and Queues

 

 

 

Topic #4 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

 

 

 

7/6 – Preview of Topic #5 Additional Linked List Implementations

 

• Variations of the Linked List

 

• Doubly linked lists

 

 

 

 

 

WEEK #3: Table Abstractions: Hash Tables

 

Date:   Topic:                                                                         

7/9-7/13         Watch Topic #5 and 6 Videos                       

             

Reading:  Chapter 10

 

7/10                Assignment #1 Due (Homework & Program)    - Submit to the D2L Dropbox

 

 

7/13 -  Lecture Introducing Hashing  

 

 

 

 

Topic #6 Hashing

 

•  Searching: Introduction and notation,

 

• Hash functions, resolving collisions, table traversal

 

• What constitutes a good hash function

 

 

 

 

7/13 - Required Lab Time ***BRING a LAPTOP, NETBOOK, or Tablet. If you do not have access to your own device, then make arrangements with your instructor so that one will be provided during this lab session. 24 hour advanced notice is required.

o    Review from required videos on Variations of Data Structures and Tables

o    Demonstration: Building a Hash table

o    Introduce Variations of Data structures (CLL and DLL)

o    Practice Recursion

 

 

7/13 - Prepare for the Midterm

 


WEEK #4: Table Abstractions: Tree Introduction and Midterm

 

Reading:  Chapter 10

 

7/20    Assignment #2 Due (Homework & Program)    - Submit to the D2L Dropbox

 

 

7/20    Midterm Exam           ***Coding Proficiency Demonstration Must be completed

 

7/20 – Preview:  Introduction to Trees

 

 Topic #8 Tree Structures

 

 

• Chapter 10 Definitions, Tree search

 

•  Removal Algorithm of a Binary Search Tree

•  Height balance, contiguous representation of binary trees: heaps

 

 

 

 

 

WEEKS #5: Table Abstractions:  Trees

 

Date:   Topic:                                                                         

7/20-7/27       Watch Topics #8 and 9 Videos          

             

Reading:  Chapter  12

 

 

7/27 - Required Lab Time ***BRING a LAPTOP, NETBOOK, or Tablet. If you do not have access to your own device, then make arrangements with your instructor so that one will be provided during this lab session. 24 hour advanced notice is required.

o    Review from required videos on Trees

o    Demonstration: Building a Binary Search Tree

o    Write algorithms (and code) for tree traversal, height calculation, etc.

o    Practice Recursion

 

 

7/27   - Lecture -  Topic #9 on Advanced Trees   

 

 

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

 

• AVL Trees

 

          Preview of  Topic #10 Advanced Trees   

 

 

• B-Trees Trees

• Heaps

 

 


 

WEEK #6: Table Abstractions:  Advanced Trees and Graphs

 

Date:   Topic:                                                                         

7/30-8/3         Watch Topics #10 and 11 Videos      

 

Reading:  Chapters 13 and 14

 

7/31    Assignment #3 Due (Homework & Program)    - Submit to the D2L Dropbox

 

8/3 - Required Lab Time ***BRING a LAPTOP, NETBOOK, or Tablet. If you do not have access to your own device, then make arrangements with your instructor so that one will be provided during this lab session. 24 hour advanced notice is required.

o    Review from required videos on Advanced Trees

o    Demonstration: Creating Advanced Trees

o    Write recursive algorithms for advanced trees

o    Practice Recursion

 

 

 

8/3  -  Lecture on Topic #11

 

Graphs

 

• Orchards, trees, and binary trees

 

• Lexicographic search trees

 

          Preview of Efficiency

 

• Chapter 9 Algorithm Efficiency

 

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

 

• Evaluating the efficiency of algorithms

 

 


WEEK #7: Sorting Strategies

 

Date:   Topic:                                                                         

8/6 – 8/10       Watch Topics #12 and 13 Videos      

 

Reading:  Chapter 9

 

8/7      Assignment #4 Due (Homework & Program)    - Submit to the D2L Dropbox

 

8/10  -   Lecture on Topic #12

 

 

Sorting strategies

 

 

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

 

• Shell sort

 

 

 

          Lecture on Topic #13

 

• Mergesort

 

• Quicksort for contiguous lists

 

• Efficiency of Sorting Algorithms

 

 

 

 

 

Prepare for the Final Exam

 

8/16    Assignment #5 Due    - Submit to the D2L Dropbox  ***NO LATE HOMEWORK #5’s

 

 

 

            Final Exam Time:

Comprehensive Final Exam               Friday August 17th at 9:15-11:05

 

Coding  Proficiency Demonstrations must be completed by 5pm August 17th