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 |