The Final Exam happens on Monday 11 December 2017, from 8AM till 10AM,
in BSB 337.
Course Content
This is a second programming course.
Although prior experience with C++ helps,
familiarity with coding algorithms in any
other programming language will work just as well.
We will start from scratch with C++,
the textbook has a C++ Primer as Chapter P.
The emphasis is on problem solving and software design with the
study of data structures.
The text book for this course is
Objects, Abstraction, Data Structures,
and Design using C++
by Elliot B. Koffman and Paul A.T. Wolfgang,
John Wiley and Sons, 2006.
We cover Chapters P to 13.
To save space, slides of the lectures and C++ code are gradually removed.
1. A C++ Primer
L-1 Mon 28 Aug 2017: welcome to mcs 360
L-2 Wed 30 Aug 2017: Elements of C in C++
L-3 Fri 1 Sep 2017: Arrays, Strings, and Files
2. Introduction to Software Design
L-4 Wed 6 Sep 2017:
software design and abstract data types
L-5 Fri 8 Sep 2017:
unified modeling language and a case study
3. Program Correctness and Efficiency
L-6 Mon 11 Sep 2017: Bugs, Exceptions, and Testing
L-7 Wed 13 Sep 2017: assertions and efficiency
4. Inheritance and Class Hierarchies
L-8 Fri 15 Sep 2017: inheritance and polymorphism
L-9 Mon 18 Sep 2017: namespaces and class hierarchies
5. Sequential Containers
L-10 Wed 20 Sep 2017: templates and vectors
L-11 Fri 22 Sep 2017: single linked lists
L-12 Mon 25 Sep 2017: double linked lists and iterators
6. Stacks
L-13 Wed 27 Sep 2017: the stack ADT as STL vector and list
L-14 Fri 29 Sep 2017: stack implementations
L-15 Mon 2 Oct 2017: stack applications
7. Queues
L-16 Wed 4 Oct 2017: the queue
L-17 Fri 6 Oct 2017: queue implementations
L-18 Mon 9 Oct 2017: simulations
L-19 Wed 11 Oct 2017: review of lectures 1 to 18 for the first midterm exam
L-20 Fri 13 Oct 2017: first midterm exam,
questions for version (a)
with answers, and
questions for version (b)
with answers.
8. Recursion
L-21 Mon 16 Oct 2017: recursive definitions
L-22 Wed 18 Oct 2017: binary search
L-23 Fri 20 Oct 2017: enumeration and backtracking
9. Trees
L-24 Mon 23 Oct 2017: binary search trees
L-25 Wed 25 Oct 2017: expression trees and the heap
L-26 Fri 27 Oct 2017: priority queues and Huffman trees
10. Sets and Maps
L-27 Mon 30 Oct 2017: pairs, sets, and maps
L-28 Wed 1 Nov 2017: hashing
L-29 Fri 3 Nov 2017: applications of maps
11. Sorting
L-30 Mon 6 Nov 2017: quadratic sorting algorithms
L-31 Wed 8 Nov 2017: better sorting algorithms: Shell sort,
merge sort, heap sort
L-32 Fri 10 Nov 2017: quicksort
12. Balancing Binary Search Trees
L-33 Mon 13 Nov 2017: balancing search trees
L-34 Wed 15 Nov 2017: red black trees
L-35 Fri 17 Nov 2017: B-Trees
L-36 Mon 20 Nov 2017:
review questions for the second midterm exam
Some answers are
in the review lecture slides.
C++ code
charcount.cpp,
chebyshev.cpp, and
weather.cpp.
L-37 Wed 22 Nov 2017: second midterm exam,
questions for version (a)
with answers, and
questions for version (b)
with answers.
13. Graphs
L-38 Mon 27 Nov 2017: graphs
C++ code
adjacency_matrix.cpp and
adjacency_list.cpp.
L-39 Wed 29 Nov 2017: graph traversals
C++ code
graph_traversals.cpp and
mazepath.cpp.
L-40 Fri 1 Dec 2017:
greedy algorithms
C++ code
shortest_paths.cpp and
minimum_spanning_tree.cpp.
Review
L-41 Mon 4 Dec 2017:
review questions for the first 18 lectures
Some answers are
in the review lecture slides.
L-42 Wed 6 Dec 2017:
review questions for lectures 21-26, 30-32
Some answers are
in the review lecture slides.
L-43 Fri 8 Dec 2017:
review questions for lectures 27-29, 33-35, 38-40
Some answers are
in the review lecture slides.
The Final Exam happens on Monday 11 December 2017, from 8AM till 10AM,
in BSB 337.