CSCI 200 - Spring 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 Jan 06 2025

Lec 00
Python vs. C++

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

A0 assigned
Wed Jan 08 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) Complete Lecture 01 Post Class Survey

cpp4py: 1.1 - 1.8

cppme: Basics of C++
Thu Jan 09 2025 A0 due
Fri Jan 10 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 Jan 13 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
Complete Random Number Quiz

Wed Jan 15 2025

Lec 04
Structured Programming: Conditionals & Scope

(C++ DE MM)
Random Number Quiz Due

Lab1A due

Watch if-else (6:06)

Watch switch (6:48)
Handout (.pdf)

Slides (.pdf)

Lecture Example Code
Lab1B assigned

A1 assigned
cpp4py: 3.1

cppme: if

cppme: switch

Comparing floats
Fri Jan 17 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
[Top]
Mon Jan 20 2025 --- NO CLASS --- MARTIN LUTHER KING JR DAY ---
Wed Jan 22 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 Jan 23 2025 A1 due
Fri Jan 24 2025

Lec 07
Procedural Programming: Functions by Value

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


Watch Functions (7:30)
Quiz 1: Imperative & Structured Programming


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

cppme: Functions
[Top]
Mon Jan 27 2025

Lec 08
Abstraction & Reuseability: Multifile Programs & Makefiles II

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

Lecture Example Code
Completed Lecture Example Code (.zip)
Wed Jan 29 2025

Lec 09
Scope on the Call Stack: Introducing Raw Pointers

(C++ MM)
Lab2A due



Watch Pointers + Free Store (27:59)
Slides (.pdf)

Lecture Example Code
Lab2B assigned
cpp4py: 2.5

cppme: Pointers
Fri Jan 31 2025

Lec 10
Procedural Programming: Functions by Pointer

(C++ DE MM)

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

A2 assigned
[Top]
Mon Feb 03 2025

Lec 11
Exam I Review

(C++ CLI DE MM)
Exam 1 LOs


Exam 1 Extra Credit Questions
Quiz 2: Procedural Programming


Slides (.pdf)
Wed Feb 05 2025

Lec 12
Exam I

(C++ CLI DE MM)
Structured & Procedural Programming Exam
Fri Feb 07 2025

Lec 13
Reference v Pointing

(C++ MM OOP)
Lab2B due
Slides (.pdf) w3s: References
[Top]
Mon Feb 10 2025

Lec 14
Object-Oriented Programming: Encapsulating State

(C++ MM OOP)
Lab2C due
Slides (.pdf) w3s: OOP

w3s: Classes/Objects

w3s: Methods
Tue Feb 11 2025 A2 due
Wed Feb 12 2025

Lec 15
File Input & Output

(C++ DE OOP)

Watch Using Objects (2:55)

Watch File Input (5:07)

Watch File Output (3:06)
Slides (.pdf)

Lecture Example Code
Lab3A assigned

Completed Lecture Example Code (.zip)
cpp4py: 6.1 - 6.7

cppme: File I/O

w3s: Files
Fri Feb 14 2025

Lec 16
Stream Formatting & Data Validation

(C++ DE OOP)

Watch Output Formatting (5:12)
Slides (.pdf)

Lecture Example Code
cppme: iomanip
[Top]
Mon Feb 17 2025 --- NO CLASS --- PRESIDENT'S DAY ---
Wed Feb 19 2025

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

(ADS C++ DE MM OOP)

Watch STL Vector (3:48)

Watch STL String (3:22)
Slides (.pdf) Complete Lecture 17 Post Class Quiz

Lab3B assigned
cpp4py: 5.3 - 5.4

C++ Reference: string

C++ Reference: vector

w3s: Strings

w3s: Vectors
Fri Feb 21 2025

Lec 18
Object-Oriented Programming: Constructors & Access Modifiers

(C++ DE MM OOP)
Lecture 17 Post Class Quiz Due

Lab3A due
Slides (.pdf)

Lecture Example Code
A3 assigned
w3s: Constructors

w3s: Access Modifiers

w3s: Encapsulation
[Top]
Mon Feb 24 2025

Lec 19
Object-Oriented Programming: Working with Objects

(C++ DE MM OOP)
Slides (.pdf)

Lecture Example Code
Complete Lecture 19 Post Class Survey

FP Proposal assigned
Wed Feb 26 2025

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

(C++ DE MM OOP)
Lecture 19 Post Class Survey Due

Lab3B due
Slides (.pdf)
Fri Feb 28 2025

Lec 21
The Effects of const

(C++ DE MM OOP)
Quiz 3: Streams & STL Collections


Slides (.pdf)
Read: Pointers and const
cppme: const
[Top]
Mon Mar 03 2025

Lec 22
Object-Oriented Programming: The Big 3

Shallow Copy v Deep Copy

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

Lab4A assigned
cpp4py: 4.2

cppme: Functors

cppme: Operator Overloading
Tue Mar 04 2025 A3 due
Wed Mar 05 2025

Lec 23
Object-Oriented Programming: Templates

(C++ DE OOP)
Quiz 4: OOP & Pointers


Slides (.pdf)
Lab4B assigned
cppme: Templates

cppme: Templated Functions
Fri Mar 07 2025

Lec 24
Exam II Review

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


Exam 2 Extra Credit Questions
Slides (.pdf)
[Top]
Mon Mar 10 2025

Lec 25
Exam II

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

Lec 26
Object-Oriented Programming: Inheritance

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

cppme: Inheritance

cppme: Inheritance II

cppme: Object Lifetime

cppme: Inheritance
Fri Mar 14 2025

Lec 27
Libraries & SFML

(CLI DE OOP)
Slides (.pdf) Lab4C assigned

A4 assigned
SFML
[Top]
Mon Mar 17 2025 --- NO CLASS --- SPRING BREAK ---
Wed Mar 19 2025 --- NO CLASS --- SPRING BREAK ---
Fri Mar 21 2025 --- NO CLASS --- SPRING BREAK ---
[Top]
Mon Mar 24 2025

Lec 28
Inheritance: Compile Time Polymorphism

(C++ DE MM OOP)

Watch Function Pointers (8:17)
Slides (.pdf) cppme: Multiple Inheritance

w3s: Polymorphism

cppme: Function Pointers
Wed Mar 26 2025

Lec 29
Inheritance: Runtime Polymorphism

(C++ DE MM OOP)
Lab4B due
Slides (.pdf)

Lecture Example Code
Lab5A assigned
Fri Mar 28 2025

Lec 30
Inheritance: Abstract Classes & Interfaces

SOLID Principles I

(C++ DE MM OOP)
Lab4C due
Slides (.pdf) A5 assigned
[Top]
Mon Mar 31 2025

Lec 31
SOLID Principles II: Designing with Abstraction

(C++ DE MM OOP)
Slides (.pdf) cppme: Class Design
Tue Apr 01 2025 A4 due
Wed Apr 02 2025

Lec 32
Collections: Static Arrays & Big-O Analysis

(ADS C++ DE MM)
Handout (.pdf)

Slides (.pdf)
cpp4py: 4.3, 5.1 - 5.2, 6.8

cppme: Arrays

cppme: C-Strings

cppme: string

cppme: Command Line Arguments
Fri Apr 04 2025

Lec 33
Collections: Abstract List Operations & Dynamic Arrays

(ADS C++ DE MM)
Lab5A due
Slides (.pdf) Lab6A assigned
[Top]
Mon Apr 07 2025

Lec 34
Collections: Linked List

(ADS C++ DE MM)
Slides (.pdf) cppme: Structures

cppme: Singly Linked Lists
Wed Apr 09 2025

Lec 35
Exception Handling

(C++ DE)
Quiz 5: Inheritance & SOLID Design


Slides (.pdf)
cpp4py: 7.1

cppme: Exceptions

w3s: Exceptions
Fri Apr 11 2025 --- NO CLASS --- E-DAYS ---
[Top]
Mon Apr 14 2025

Lec 36
Collections: Sorting a List

Selection / Insertion / Bubble / Merge Sort

(ADS C++ DE MM)
Slides (.pdf) Lab6B assigned
Wed Apr 16 2025

Lec 37
Recursion

(DE MM)
Slides (.pdf) cppme: Recursion

w3s: Recursion
Fri Apr 18 2025

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

Iteration v Recursion

(ADS C++ DE MM)
Slides (.pdf)
[Top]
Mon Apr 21 2025

Lec 39
Collections: 2D Lists

Breadth-First Search v Depth-First Search

(ADS C++ DE MM)
Lab6A due
Slides (.pdf) Lab6C assigned

A6 assigned


(For Fun Watch: Micromouse Competition)
A5 due
Wed Apr 23 2025

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

(ADS C++ DE MM)
Fri Apr 25 2025

Lec 41
Collections: Trees & Graphs

(ADS C++ DE MM)
AXC assigned
cppme: Binary Trees
[Top]
Mon Apr 28 2025

Lec 42
Resource Acquisition Is Initialization (RAII): The Rule Of The Big 5 and Smart Pointers

(C++ DE MM OOP)
Lab6B due
Quiz 6: Lists
The Rule Of The Big Five
Wed Apr 30 2025

Lec 43
Final Exam Review

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

Exam 1 LOs
Exam 2 LOs
Exam 1 & 2 LOs
Full Course LOs



Final Exam Extra Credit Review Questions
Thu May 01 2025 LAST DAY TO SUBMIT ASSIGNMENTS FOR CREDIT
A6 due
FP due
AXC due
[Top]
Mon May 05 2025 Final Cumulative Exam
Time: 08:00 AM - 10:00 AM

Rooms:
Section A (Romig 9am) - CTLM 102
Section B (Paone 10am) - BB W210
Section C (Scholten 10am) - BB W280
Section D (Scholten 11am) - BB W280
Section E (Romig 12pm) - CTLM 102

[Top]