CSCI 200 - Fall 2025
Foundational Programming Concepts & Design

Schedule

Go To Today

Modules

  • ADS: Algorithms and Data Structures
  • C++: C++ Programming
  • CLI: Command Line Interface
  • DE: Design Elements
  • MM: Memory Management
  • OOP: Object-Oriented Programming
Date Topic Before Class In Class After Class Resources
[Top]
Mon Aug 25 2025

Lec 00
Python vs. C++

(C++)
Slides (.pdf) Lab0 assigned

A0 assigned
Wed Aug 27 2025

Lec 01
Imperative Programming: Compiling Hello World

(C++ CLI)
Lab0 due

Watch C++ Language & Syntax (7:37)

Watch Standard Output (4:02)
Slides (.pdf)

Lecture Example Code
Complete Lecture 01 Post Class Survey

cpp4py: 1.1 - 1.8

cppme: Basics of C++
Thu Aug 28 2025 A0 due
Fri Aug 29 2025

Lec 02
Imperative Programming: Variables, Memory

(C++ MM)
Lecture 01 Post Class Survey Due


Watch Data Types (10:13)

Watch Standard Input (3:32)

Watch Style Guide - Variable Naming (4:51)
Handout (.pdf)

Slides (.pdf)
Lab1A assigned
cpp4py: 2.1 - 2.4

cppme: Modulus

A Tutorial On Two's Complement

cppme: Typecasting
[Top]
Mon Sep 01 2025 --- NO CLASS --- LABOR DAY ---
Wed Sep 03 2025

Lec 03
Random Values
&
The Command Line Interface and Makefiles I: Compiler Directives & Targets

(CLI)
First read cppme: Random Values

Then watch rand() Considered Harmful

Watch C++11 Random Number Generation (2:16)
CLI Cheat Sheet (.pdf)

Makefile Cheat Sheet


Slides (.pdf)

Lecture Example Code
Fri Sep 05 2025

Lec 04
Structured Programming: Conditionals & Scope

(C++ DE MM)
Lab1A due

Watch if-else (6:06)

Watch switch (6:48)

Watch Short Circuit (4:34)
Random Numbers Quiz


Handout (.pdf)

Slides (.pdf)

Lecture Example Code
Lab1B assigned

A1 assigned
cpp4py: 3.1

cppme: if

cppme: switch

Comparing floats
[Top]
Mon Sep 08 2025

Lec 05
Structured Programming: Loops & Scope

(C++ DE MM)

Watch Loops (while, do-while, for) (6:25)

Watch Loop Flow (break, continue) (3:38)
Handout (.pdf)

Slides (.pdf)

Lecture Example Code
cpp4py: 3.2 - 3.7

cppme: Loops
Wed Sep 10 2025

Lec 06
Debugging: Print Lines v The Debugger

(C++ CLI)
Lab1B due
Debugger Cheat Sheet (.pdf)


Slides (.pdf)

Lecture Example Code
Complete Lecture 06 Post Class Survey

Thu Sep 11 2025 A1 due
Fri Sep 12 2025

Lec 07
Procedural Programming: Functions by Value

(C++ DE MM)
Lecture 06 Post Class Survey Due


Watch Functions (7:30)
Structured Programming Quiz


Slides (.pdf)
Lab2A assigned
cpp4py: 4.1, 4.4

cppme: Functions
[Top]
Mon Sep 15 2025

Lec 08
Abstraction & Reuseability: Multifile Programs & Makefiles II

(C++ CLI DE)
Slides (.pdf)

Lecture Example Code
Wed Sep 17 2025

Lec 09
Scope on the Call Stack: Introducing Raw Pointers

(C++ MM)


Watch Pointers + Free Store (27:59)
Lecture Example Code Lab2B assigned
cpp4py: 2.5

cppme: Pointers
Fri Sep 19 2025

Lec 10
Procedural Programming: Functions by Pointer

(C++ DE MM)
Lab2A due

Watch Pointers + Free Store (27:59)
Lab2C assigned

A2 assigned
[Top]
Mon Sep 22 2025

Lec 11
Exam I Review

(C++ CLI DE MM)
Exam 1 LOs


Exam 1 Extra Credit Questions
Procedural Programming Quiz
Wed Sep 24 2025

Lec 12
Exam I

(C++ CLI DE MM)
Structured & Procedural Programming Exam
Fri Sep 26 2025

Lec 13
Reference v Pointing

(C++ MM OOP)
Lab2B due
w3s: References
[Top]
Mon Sep 29 2025

Lec 14
Object-Oriented Programming: Encapsulating State

(C++ MM OOP)
Lab2C due
w3s: OOP

w3s: Classes/Objects

w3s: Methods
Tue Sep 30 2025 A2 due
Wed Oct 01 2025

Lec 15
File Input & Output

(C++ DE OOP)

Watch Using Objects (2:55)

Watch File Input (5:07)

Watch File Output (3:06)
Lab3A assigned
cpp4py: 6.1 - 6.7

cppme: File I/O

w3s: Files
Fri Oct 03 2025

Lec 16
Stream Formatting & Data Validation

(C++ DE OOP)

Watch Output Formatting (5:12)
cppme: iomanip
[Top]
Mon Oct 06 2025

Lec 17
STL Collections & Big-O Notation: std::vector & std::string

(ADS C++ DE MM OOP)
Lab3A due

Watch STL Vector (3:48)

Watch STL String (3:22)
Lab3B assigned
cpp4py: 5.3 - 5.4

C++ Reference: string

C++ Reference: vector

w3s: Strings

w3s: Vectors
Wed Oct 08 2025

Lec 18
Object-Oriented Programming: Constructors & Access Modifiers

(C++ DE MM OOP)
A3 assigned
w3s: Constructors

w3s: Access Modifiers

w3s: Encapsulation
Fri Oct 10 2025

Lec 19
Object-Oriented Programming: Working with Objects

(C++ DE MM OOP)
Lab3B due
FP Proposal assigned
[Top]
Mon Oct 13 2025

Lec 20
Procedural + Object-Oriented Programming: Objects and Functions

(C++ DE MM OOP)
Wed Oct 15 2025

Lec 21
The Effects of const

(C++ DE MM OOP)
Read: Pointers and const
cppme: const
Fri Oct 17 2025

Lec 22
Object-Oriented Programming: The Big 3

Shallow Copy v Deep Copy

(C++ DE MM OOP)
FP Proposal due at midnight

Lab4A assigned
cpp4py: 4.2

cppme: Functors

cppme: Operator Overloading
[Top]
Mon Oct 20 2025 --- NO CLASS --- FALL BREAK ---
Tue Oct 21 2025 --- FALL BREAK ---
Wed Oct 22 2025

Lec 23
Object-Oriented Programming: Templates

(C++ DE OOP)
Lab4B assigned
cppme: Templates

cppme: Templated Functions
Thu Oct 23 2025 A3 due
Fri Oct 24 2025

Lec 24
Exam II Review

(ADS C++ CLI DE MM OOP)
Exam 1 LOs


[Top]
Mon Oct 27 2025

Lec 25
Exam II

(ADS C++ CLI DE MM OOP)
Object-Oriented Programming Exam
Wed Oct 29 2025

Lec 26
Object-Oriented Programming: Inheritance

(C++ DE MM OOP)
Lab4A due
w3s: Inheritance

cppme: Inheritance

cppme: Inheritance II

cppme: Object Lifetime

cppme: Inheritance
Fri Oct 31 2025

Lec 27
Libraries & SFML

(CLI DE OOP)
Lab4B due
Lab4C assigned

A4 assigned
SFML
[Top]
Mon Nov 03 2025

Lec 28
Inheritance: Compile Time Polymorphism

(C++ DE MM OOP)

Watch Function Pointers (8:17)
cppme: Multiple Inheritance

w3s: Polymorphism

cppme: Function Pointers
Wed Nov 05 2025

Lec 29
Inheritance: Runtime Polymorphism

(C++ DE MM OOP)
Lab5A assigned
Fri Nov 07 2025

Lec 30
Inheritance: Abstract Classes & Interfaces

SOLID Principles I

(C++ DE MM OOP)
Lab4C due
A5 assigned
[Top]
Mon Nov 10 2025

Lec 31
SOLID Principles II: Designing with Abstraction

(C++ DE MM OOP)
cppme: Class Design
Tue Nov 11 2025 A4 due
Wed Nov 12 2025

Lec 32
Collections: Static Arrays & Big-O Analysis

(ADS C++ DE MM)
cpp4py: 4.3, 5.1 - 5.2, 6.8

cppme: Arrays

cppme: C-Strings

cppme: string

cppme: Command Line Arguments
Fri Nov 14 2025

Lec 33
Collections: Abstract List Operations & Dynamic Arrays

(ADS C++ DE MM)
Lab5A due
Lab6A assigned
[Top]
Mon Nov 17 2025

Lec 34
Collections: Linked List

(ADS C++ DE MM)
cppme: Structures

cppme: Singly Linked Lists
Wed Nov 19 2025

Lec 35
Exception Handling

(C++ DE)
cpp4py: 7.1

cppme: Exceptions

w3s: Exceptions
Fri Nov 21 2025

Lec 36
Collections: Sorting a List

Selection / Insertion / Bubble / Merge Sort

(ADS C++ DE MM)
Lab6B assigned
[Top]
Mon Nov 24 2025

Lec 37
Recursion

(DE MM)
Lab6A due
cppme: Recursion

w3s: Recursion
Tue Nov 25 2025 A5 due
Wed Nov 26 2025 --- NO CLASS --- THANKSGIVING BREAK ---
Thu Nov 27 2025 --- THANKSGIVING BREAK ---
Fri Nov 28 2025 --- NO CLASS --- THANKSGIVING BREAK ---
[Top]
Mon Dec 01 2025

Lec 38
Collections: Searching a List via Linear / Binary Search

Iteration v Recursion

(ADS C++ DE MM)
Wed Dec 03 2025

Lec 39
Collections: 2D Lists

Breadth-First Search v Depth-First Search

(ADS C++ DE MM)
Lab6C assigned

A6 assigned


(For Fun Watch: Micromouse Competition)
Fri Dec 05 2025

Lec 40
Collections: C++ STL - std::vector, std::list, std::stack, std::queue

(ADS C++ DE MM)
[Top]
Mon Dec 08 2025

Lec 41
Collections: Trees & Graphs

(ADS C++ DE MM)
Lab6B due
AXC assigned
cppme: Binary Trees
Wed Dec 10 2025

Lec 42
Final Exam Review

(ADS C++ CLI DE MM OOP)
Lab6C due

Exam 1 LOs



Thu Dec 11 2025 LAST DAY TO SUBMIT ASSIGNMENTS FOR CREDIT
A6 due
FP due
AXC due
[Top]
Mon Dec 15 2025 Final Cumulative Exam
Time: 08:00 AM - 10:00 AM

Rooms:
TBA

[Top]