| Week | Topics | Resource links |
| Jan 5-9 | Week 1: software life cycles, tools of the trade | |
| Course intro, administrivia | outline | |
| Intro to software life cycles: requirements, design, test | youtube, slides | |
| Intro to git for version control and lab use | youtube, slides, short guide to csci git project/lab submission | |
| Core of git in the labs | general summary for CSCI courses , youtube | |
| Intro to compilation, linking, loading | youtube, slides | |
| Intro to make and makefiles | youtube, slides | |
| Jan 12-16 | Week 2: tools continued, review part I | |
| Intro to debugging and gdb | youtube slides | |
| Intro to testing your programs | youtube slides | |
| Review: modularity and abstraction | youtube, slides | |
| Review: code standards | youtube, course standards | |
| Review: pointers and memory | youtube, slides | |
| Jan 19-23 | Week 3: review II, new data types, namespaces | |
| Review: dynamic memory handling (new, delete) | youtube, slides | |
| Practice: resizable circular buffers
(in lecture we did the resizing, not the circular) | youtube, slides, C++ files and makefile | |
| Review: function overloading and optional parameters | youtube, slides | |
| New data types: references, enums, typedefs, and auto | youtube, slides | |
| Intro to namespaces | youtube, slides | |
| Jan 26-30 | Week 4: searching and sorting | |
| Review: basic searching and sorting | youtube, slides | |
| Simple sorting: 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 | |
| Feb 2-6 | Week 5: misc. C/C++ features, structs | |
| 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 | |
| Review: structs I | youtube, slides | |
| Review: structs II | youtube , slides | |
| array of structs example | youtube , sample code | |
| review: pointers to structs | youtube, slides | |
| Feb 9-13 | Week 6: dynamic data structures, linked lists, ADTs | |
| Basic LL implementation | youtube, slides | |
| Doubly linked lists | slides, sample code, video coming soon | |
| Abstract data types (ADTs) | youtube, slides | |
| Feb 16-20 | Study break: no lectures or labs
- enjoy a break! | |
| Feb 23-27 | Week 7: Objects, classes, linked lists, queues | Friday lab: review/prep for midterm |
| OO: objects, classes, fields, methods, inheritance | youtube, slides | |
| example: linked lists as a class | slides, sample code, video coming soon | |
| Queue ADT and implementations | slides,video coming soon | |
| Mar 2-6 | Week 8: Midterm, stacks | |
| Midterm in lecture Mon. Mar. 2 | ||
| Stack ADT and implementations | slides,video coming soon | |
| Stack example: bracket matching | slides,video coming soon | |
| Mar 9-13 | Week 9: trees, binary search trees, more on classes | |
| Trees, Binary search trees | slides, sample code, video coming soon | |
| More class/header notations | slides,video coming soon, sample code | |
| Copy/move constructors | slides,video coming soon, sample code | |
| Mar 16-20 | Week 10: friends, overloading, inheritance | |
| Friend functions and classes | slides,video coming soon, sample code | |
| Operator overloading, assignment operators | slides,video coming soon, sample code | |
| 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 | |
| Mar 23-27 | Week 11: dynamic binding, code reuse, templates | |
| 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 | |
| Mar 30-Apr 3 | Week 12: standard template library, exception handling | No lab April 3 (Good Friday, VIU closed) |
| The C++ STL (standard template library) | video, slides, stacks example (video) | |
| Exception handling: try, throw, catch |
slides,
video,
sample code: building a heirarchy, deriving from std::exception, new/bad_alloc, | |
| Apr 6-10 | Week 13: extra topics (time permitting), course wrapup | Friday lab: review/prep for final |
| String streams | youtube, slides | |
| Multi-dimensional arrays (and pointers and structs) | youtube, slides | |
| Course review/exam prep (done in lab) | slides, practice final | |
| Apr 13-22 | Exam period: exam date/location t.b.a. | |
| Extras | (won't be on the final exam) | |
| Hardware, software, and languages | youtube, slides | |
| Random number generators | youtube slides | |