Saint Louis University |
Computer Science 2100
|
Dept. of Math & Computer Science |
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 |
|
|
Thu | Lab 00: A First Glance at C++ |
|
|
Fri |
Transition to C++
Data types, operators, control structures, I/O streams |
|
|
Aug 31-Sep 4 | Mon |
Transition to C++
Class Definitions, Operator Overloading |
|
Wed |
Transition to C++
Class Definitions (continued), Operator Overloading, I/O streams, Managing Large Projects (scope resolution, #include, namespaces) |
|
|
Thu | Lab 01: Copier Reduction | ||
Fri |
C++ Object Model;
value vs reference variables, parameter/return passing, const control |
|
|
Sep 7-Sep 11 | Mon | No Class: Labor Day | |
Wed | Pointers, dynamic memory allocation, treatment of arrays |
|
|
Thu | Lab 02: Speed Limit | ||
Fri |
Lifespan of objects
Dynamic Memory Management |
objectdemo
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
demo |
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 |
prog03 | |
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
(experiment) |
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
slides |
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
Heapsort 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
demo |
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 | ||
Thu | |||
Fri | |||
Nov 30-Dec 4 | Mon |
AVL Trees
(definition, insertions) |
Ch. 10.2 |
Wed |
AVL Trees
(deletions) 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 ) |