| Week | Topics | Resource links |
| May 1-5 | Week 1: hardware, tools of the trade | |
| Course intro, administrivia | outline | |
| Requirements, design, test | youtube, slides | |
| Git for version control and lab use | youtube, slides, short guide to csci git project/lab submission | |
| May 8-12 | Week 2: tools continued, requirements, design | |
| Git in the labs | general summary for CSCI courses , youtube | |
| Compilation, linking, loading | youtube, slides | |
| Make and makefiles | youtube, slides | |
| Debugging and gdb | youtube slides | |
| Testing your programs | youtube slides | |
| May 15-19 | Week 3: reviews/refreshers | quiz 1 May 17, lab 1 due May 21 |
| Modularity and abstraction | youtube, slides | |
| Code standards (discuss in lab) | youtube, course standards | |
| review: pointers and memory | youtube, slides | |
| review: dynamic memory handling (new, delete) | youtube, slides | |
| May 22-26 | Week 4: a fast tour of misc useful C++ | |
| practice: resizable circular buffers
(in lecture we did the resizing, not the circular) | youtube, slides, C++ files and makefile | |
| Types: references, enums, typedefs, and auto | youtube, slides | |
| Namespaces | youtube, slides | |
| Function overloading and optional parameters | youtube, slides | |
| May 29-June 2 | Week 5: Sorting and efficiency | quiz 2 May 31, lab 2 due June 4 |
| review: basic searching and sorting | youtube, slides | |
| Simple sorting II: selection, and insertion sorts | youtube, slides, sample code from video | |
| Mergesort | youtube, slides, sample code from video | |
| Quicksort | youtube, slides, old sample code example | |
| Evaluating efficiency | slides, video coming soon | |
| Command line arguments (lab discussion: argc, argv) | youtube, slides | |
| Standard i/o streams (lab discussion: stdin, stdout, stderr, cin, cout, cerr) | youtube, slides | |
| File I/O (lab discussion with streams) | youtube, slides | |
| June 5-9 | Week 6: Structs | |
| review of structs | youtube, slides | |
| more about structs | youtube , slides | |
| June 12-16 | Week 7: Dynamic data structures: linked lists | quiz 2 June 14 |
| array of structs example | youtube , sample code | |
| review: pointers to structs | youtube, slides | |
| Basic LL implementation | youtube, slides | |
| Doubly linked lists | slides, sample code, video coming soon | |
| June 19-23 | Week 8: OO search trees and algorithms | project discussion in labs, lab3 due June 25 |
| Abstract data types (ADTs) | youtube, slides | |
| OO: objects, classes, fields, methods, inheritance | youtube, slides | |
| example: linked lists as a class | slides, sample code, video coming soon | |
| project intro/overview | web page | |
| Queue ADT and implementations | slides,video coming soon | |
| June 26-30 | Week 9: practice with classes and ADTs | |
| Stack ADT and implementations | slides,video coming soon | |
| Stack example: bracket matching | slides,video coming soon | |
| Trees, Binary search trees | slides, sample code, video coming soon | |
| July 3-7 | Week 10: more class features | quiz 3 July 5, lab4 due July 9 |
| More class/header notations | slides,video coming soon, sample code | |
| Copy/move constructors | slides,video coming soon, sample code | |
| Friend functions and classes | slides,video coming soon, sample code | |
| Operator overloading, assignment operators | slides,video coming soon, sample code | |
| July 10-14 | Week 11: inheritance | |
| Simple inheritance | slides,video coming soon | |
| Static binding, hiding, override, virtual (and pure virtual), final | slides,video coming soon, sample code | |
| Multiple inheritance, name resolution | slides, video coming soon, static base code, virtual base code | |
| July 17-21 | Week 12: dynamic binding, code reuse, templates | quiz 4 July 19, lab5 due July 23 |
| in-class example with "diamond" inheritance and initializer lists: diamondshapes.cpp | ||
| Dynamic binding, virtual functions, abstract base classes | slides, sample code, video coming soon | |
| Code re-use | video, slides | |
| Templated functions and classes | video, slides | |
| The C++ STL (standard template library) | video, slides, stacks example (video) | |
| July 24-28 | Week 13: exception handling, course wrapup | project due July 30 |
| Exception handling: try, throw, catch |
slides,
video,
sample code: building a heirarchy, deriving from std::exception, new/bad_alloc, | |
| Course review/exam prep | slides, practice final | |
| July 31-Aug 4 | Exam week | lab exam Aug 2, final exam Aug 3 |
| The lecture session 11:30-1 Aug 2 will just be an open session for last minute questions on the lab exam (Aug 2 3:30-5:30) and the final exam (Aug 3 11:30-1). | ||
| Extras | Useful, I wish we had time to spend on these (won't be on the final exam) | |
| Hardware, software, and languages | youtube, slides | |
| Random number generators | youtube slides | |
| String streams | youtube, slides | |
| Multi-dimensional arrays (and pointers and structs) | youtube, slides | |