CSCI 161 Computer Science II: Summer 2023
Supporting Resources (videos, slides, notes, examples)

This page contains links for most of the supporting videos, slides, examples, and notes for Dave's 2023 summer offering of CSCI 161.

I've listed the topics in roughly the order I hope to cover them, and roughly grouped them by week. Some weeks there's a little extra material, some weeks a little less, and the timeline is likely to evolve/change as the semester progresses.

While I do plan on keeping the lectures/labs in synch with the slide/video material as much as possible, there will certainly be significant content differences between the posted content and the actual live lectures. This material is not intended to replace in-class attendance, but rather to act as extra aids/study/support material, especially for any students who might find it necessary to isolate at home at some point in the semester.

If you need a refresher on any CSCI 159 material (structs, arrays, etc) you can find my 159 lecture resources here
(My old 161 web notes and examples for past versions of 161 are also still available.)

Some items I particularly recommend reviewing up on are:

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 4Exam 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

Back to the main course page