Programming, software development, and computer science: slides, videos, code samples

This page contains links for most of Dave's videos, slides, and examples developed for a mix of undergraduate Computer Science courses.

It currently includes all the slides, videos, and sample code for my courses on programming in general, programming with C++, lisp, and bash in particular, plus overall approaches to program design and development, introductions to version control (using git), effective use of genAI, debugging tools and approaches, software testing, automated compilation (using make), and introductions to linux.

There are invariably glitches, gaps and weaknesses: please fire me any feedback, corrections, or suggestions (email to David.Wessels@viu.ca).

All works here copyright © David Wessels, 2000-2024.

Jump to C++ topic:

Jump to programming topic:

Topics Resource links
Intro to programming
Intro to the software development process youtube, slides
Intro to languages, syntax, semantics youtube, slides
Intro to the edit/compile/execute cycle
(and command lines vs IDEs)
youtube, slides
First intro to documentation, style, and standards youtube, slides
Effective and ethical use of genAI in computer science slides
programming tips youtube, slides
Software life cycles and design
Introductory program design and implementation youtube
Overview: requirements, design, test youtube, slides
Intro to SDLCs, waterfall model youtube, slides
Spiral and agile models youtube, slides
Requirements and specifications youtube, slides
Modularity and top down design youtube slides
Design and implementation challenges at larger scales youtube, slides
Modularity and abstraction youtube, slides
Design concepts and issues youtube, slides
General safety principles youtube, slides
Localization, internationalization, unicode youtube, slides
Human computer interaction and design youtube, slides
Early intro to design patterns youtube, slides
Service-oriented design models youtube, slides
Product deployment youtube, slides
Maintenance and support youtube, slides
Refactoring youtube, slides
Time estimates and tracking youtube, slides
Debugging and debuggers
intro to debugging, debuggers, and code tracing youtube slides
Debuggers and debugging youtube, slides
gdb and C youtube, slides
valgrind for debugging youtube, slides
language-specific debugging youtube, slides
Bug reports, reporting, tracking youtube, slides
Code inspections and testing
Code/document standards youtube, slides, Google's C++ style guide
Code and document inspections youtube, slides
intro to testing youtube slides
Intro to software testing youtube, slides
unit testing, stubs and drivers youtube, slides
test suite development youtube, slides
test automation youtube, slides
Test driven development youtube, slides
C++ basics
Intro to C++ syntax/layout youtube, slides
Constants, variables, data types, and computation youtube, slides
Output/input with printf/scanf youtube, slides
Output/input with cout/cin youtube slides
Error checking input (scanf, cin) youtube slides
intro to C++ style file I/O youtube, slides
intro to C-style file I/O youtube, slides
Standard I/O streams (stdin, stdout, stderr, cin, cout, cerr) youtube, slides
Functions and parameters
Libraries, using functions and parameters youtube slides
Function/library examples youtube
Creating our own functions youtube slides
Intro to scopes (local/global) youtube slides
Pass-by-reference parameters youtube slides
parameter default values, function overloading youtube, slides
intro to recursion youtube slides
variadic functions in C/C++: (revisited) youtube, slides sample code: C, C++
Higher order functions using function pointers slides, C++ example, youtube
Control (selection and iteration)
If/else, switch, bool youtube slides
loops: while, do while, for, scope youtube slides
break, continue, nested loops, errors youtube slides
Arrays
intro to arrays youtube slides
arrays as parameters youtube slides
two dimensional arrays youtube, slides
Searching, sorting, algorithms
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
Text (char[] and strings)
null terminated character arrays, cstring library youtube, slides
using the C++ string class youtube, slides
conversion to/from text arrays youtube, slides
String streams youtube, slides
structs (structures or records)
intro to structs youtube, slides
more about structs youtube , slides, sample code
array of structs example youtube , sample code
Pointers and dynamic memory allocation
intro to pointers and their applications youtube, slides
dynamic memory allocation (new, delete), and pointer bugs youtube, slides
practice: resizable circular buffers youtube, slides, C++ files and makefile
Intro to smart pointers slides, youtube
Intro to C++ smart pointers slides, C++ example, youtube
Dynamic data structures
pointers to structs, dynamic data structures youtube, slides
linked list implementation using structs youtube, slides
Doubly linked lists slides, sample code, video coming soon
Abstract Data Types
intro to information hiding and abstract data types (ADTs) youtube, slides
Stack ADT and implementations slides,video coming soon
Stack example: bracket matching slides,video coming soon
Queue ADT and implementations slides,video coming soon
Trees, Binary search trees slides, sample code, video coming soon
Object Oriented Programming
intro to classes and object oriented programming youtube, slides
example: linked lists as a class 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
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
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)
C++ STL stack, list, queue, and iterators youtube, slides
stacks example youtube
group design exercise draft attempt
Misc. other topics
Types: references, enums, typedefs, and auto youtube, slides
command line arguments (argc, argv) youtube, slides
intro to namespaces youtube, slides
random number generators youtube slides
Exception handling: try, throw, catch slides, video,
sample code: building a heirarchy, deriving from std::exception, new/bad_alloc,
Regular expressions sample code
Macros using #define and templates slides, sample code, youtube
Graphical interfaces using gtk youtube, slides
Compilation and makefiles
Hardware, software, and languages youtube, slides
Intro to compilation, linking, and loading youtube, slides
Intro to make and makefiles youtube, slides
Compiling C/C++ with gcc/g++ (options, #includes, guards) youtube, slides
Automated compilation, makefiles and make youtube, slides
Testing makefiles youtube
Version control and git
Early git intro for our labs youtube, slides, short guide to csci git project/lab submission
Version control youtube, slides
git fundamentals youtube, slides
git branch, merge youtube, slides
git remotes, pull and push youtube, slides
Using git in teams youtube coming soon, slides,
Code profiling
Profilers and profiling youtube, slides
gprof youtube, slides
valgrind youtube, slides
Basic linux
linux absolute and relative paths youtube, slides
linux command history and options youtube, slides
io redirection youtube, slides
linux file permissions youtube, slides
common environment variables and customizing your bash setup youtube, slides
linux process control youtube, slides
misc. useful commands/tools youtube, slides
Shells, scripting languages and bash youtube, slides
basic intro to vim youtube, quick ref