Assignments | Course Home | Documentation | Lab Hours/Tutoring | Schedule | Submit

Saint Louis University

Computer Science 2100
Data Structures

Michael Goldwasser

Fall 2015

Dept. of Math & Computer Science


Please note that the schedule for future classes is tentative.

Also note: For each lecture, we denote both a topic as well as the associated reading in the textbook. The live link on the 'topic' leads to a page of my personal notes for that lecture. Those personal notes are not nearly as complete or polished as the associated readings from the text. In truth, they exist mostly to provide a brief outline of the day's lecture. Students are expected to read the associated sections of the text. In cases where my notes include material which is not explicitly in the text, I will add the word "notes" to the explicit reading list.

Week Day Topic Reading
Aug 24-Aug 28 Mon Introduction, Course Overview, Pep Talk syllabus
Wed Transition to C++
first glance, declarations
Guide: §1, §2, §3
Text: Ch. 1.1.1
Thu Lab 00: A First Glance at C++ Guide: §1, §2, §3
Text: Ch. 1.1.1
Fri Transition to C++
Data types, operators, control structures, I/O streams
Guide: §4, §5
Text: Ch. 1.1.2, 1.2, 1.3
Aug 31-Sep 4 Mon Transition to C++
Class Definitions, Operator Overloading
Guide: §7
Text: 1.5.1, 1.5.2, 1.6
Wed Transition to C++
Class Definitions (continued), Operator Overloading, I/O streams,
Managing Large Projects (scope resolution, #include, namespaces)
Guide: §6, §12.1-12.4
Text: Ch. 1.6
Thu Lab 01: Copier Reduction
Fri C++ Object Model;
value vs reference variables, parameter/return passing, const control
Guide: §4.2, 8.1, 8.2
Text: Ch. 1.4.1
Sep 7-Sep 11 Mon No Class: Labor Day
Wed Pointers, dynamic memory allocation, treatment of arrays Guide: §8.3, 8.4, 8.5
Text: Ch. 1.1.3
Thu Lab 02: Speed Limit
Fri Lifespan of objects
Dynamic Memory Management
Ch. 1.1.3
Sep 14-Sep 18 Mon Stack ADT
ArrayStack implementation
Ch. 5.1.1-5.1.4
(ArrayStack code)
Wed Housekeeping Functions Guide: §8.6
Text: Ch. 1.5.2-1.5.3
Thu Lab 03: Doubles
Fri (Assignment Operators)
Templated Classes
(templated ArrayStack code)
Guide: §9, Text: Ch. 2.3
Sep 21-Sep 25 Mon Intro to Queue ADT
Queue with "circular" array
Text: Ch. 5.2.1-5.2.4
Wed ArrayQueue implementaiton
Introduction to Analysis of Algorithms
(ArrayQueue code)
Ch. 4.2
Thu Review for upcoming test; work on program 2
Fri Analysis of Algorithms, Asymptotics
Case Study: lab03 efficiency
Ch. 4
Handouts: asymp.pdf, asympLog.pdf
Code: asymp.cpp
Sep 28-Oct 2 Mon Introduction to Singly-Linked Lists Ch. 3.2
Wed LinkedStack implementation
LinkedStack housekeeping functions
Ch. 5.1.5
(LinkedStack code)
Thu First Exam (includes material through Sep 25 - info )
Fri more about LinkedStack housekeeping functions
Preview of "SmartStack" assignment
Oct 5-Oct 9 Mon Circularly Linked List
LinkedQueue implementation
Ch. 3.4, 5.2.5
(LinkedQueue code)
Wed Double-Ended Queue Abstraction
Doubly-Linked Lists, Sentinels
Ch. 3.3, 5.3
(LinkedDeque code)
Thu Lab 04: Tanning Salon
Fri Introduction to C++ vector class Ch. 6.1
(ArrayVector code)
Oct 12-Oct 16 Mon Extendable Arrays
Amortized Analysis
Ch. 6.1
Wed Introdution to STL list class, iterators. Ch. 6.2.1, 6.2.2, 6.2.4
Thu Lab 05: Symmetric Order
Fri Implementing a NodeList class Ch. 6.2.3
(NodeList code)
Oct 19-Oct 23 Mon No Class: Fall Break
Wed Sorting Algorithms: Insertion, Selection, Bubble Ch. 3.1.2, 6.4
(my code)
Thu Lab 06: Overflowing Bookshelf
Fri Sorting Algorithms: Mergesort and Quicksort Ch. 11.1, 11.2
Oct 26-Oct 30 Mon Problem Solving with Recursion parts of Ch. 3.5
Wed Problem Solving with Recursion
Binary Search
rest of Ch. 3.5; Ch.  4.2.6
Ch. 9.3.1, demo
Thu Lab 07: Anagrams by Stack
Fri Examples of recursive implementations my code
Nov 2-Nov 6 Mon Introduction to Trees Ch. 7.1
Wed Basic Algorithms on Trees Ch. 7.1, 7.2
Thu Second Exam (includes material through Oct 30 - info )
Fri Tree Traversals Ch. 7.2.2, 7.2.3
Nov 9-Nov 13 Mon Data Structures for Binary Trees
Housekeeping functions
Ch. 7.3.4
(LinkedBinaryTree code)
Wed Introduction to Priority Queues
Priority Queue with Binary Heap
Ch. 8.1, 8.2, 8.3
demo of Heap operations
Thu Lab 08: Tree Grafting (Part 1)
Fri Array representation of Binary Heaps
Bottom-up Heap Construction
Ch. 7.3.5, 8.3.5, 8.3.6
demo of bottom-up Heap construction
Nov 16-Nov 20 Mon Huffman Encoding
Introduction to prog06 and prog07
Ch. 12.4
Wed Introduction to Sets/Maps/Multisets/Multimaps.
Introduction to Hashing
STL containers documentation
Ch. 9.1, 9.2
Thu Lab 09: Tree Grafting (Part 2)
Fri Hashing, Collision Handling Ch. 9.2
Nov 23-Nov 27 Mon Ordered Maps and Binary Search Trees Ch. 9.3, 10.1
Wed No Class: Thanksgiving
Nov 30-Dec 4 Mon AVL Trees
(definition, insertions)
Ch. 10.2
Wed AVL Trees
Some general discussion of search tree implementations and iterators
Ch. 10.2
Thu A brief tour of the C++ <algorithms> library
Fri A brief tour of C++11 features Top 10 features
Discussion of Smart Pointers
Dec 7 Mon

Dec 14 Mon Final Exam (12:00-1:50) ( info )

Michael Goldwasser
CSCI 2100, Fall 2015
Last modified: Thursday, 03 December 2015
Assignments | Course Home | Documentation | Lab Hours/Tutoring | Schedule | Submit