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 |