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
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)
Lecture Example Code
Wed Jan 29 2025

Lec 09
Scope on the Call Stack: Introducing Raw Pointers

(C++ MM)
Lab2A due



Watch Pointers + Free Store (27:59)
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)
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
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
w3s: References
[Top]
Mon Feb 10 2025

Lec 14
Object-Oriented Programming: Encapsulating State

(C++ MM OOP)
Lab2C due
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)
Lab3A assigned
cpp4py: 6.1 - 6.7

cppme: File I/O

w3s: Files
Fri Feb 14 2025

Lec 16
Stream Formatting & Data Validation

(C++ DE OOP)
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)
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)
Lab3A due
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)
FP Proposal assigned
Wed Feb 26 2025

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

(C++ DE MM OOP)
Lab3B due
Fri Feb 28 2025

Lec 21
The Effects of const

(C++ DE MM OOP)
Quiz 3: Streams & STL Collections
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)
FP Proposal due at midnight

Lab4A assigned
cpp4py: 4.2

cppme: Function Pointers

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


[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
w3s: Inheritance

cppme: Inheritance

cppme: Inheritance II

cppme: Object Lifetime

cppme: Inheritance
Fri Mar 14 2025

Lec 27
Libraries & SFML

(CLI DE OOP)
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)
Lab4B due
cppme: Multiple Inheritance

w3s: Polymorphism
Wed Mar 26 2025

Lec 29
Inheritance: Runtime Polymorphism

(C++ DE MM OOP)
Lab5A assigned
Fri Mar 28 2025

Lec 30
Inheritance: Abstract Classes & Interfaces

SOLID Principles I

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

Lec 31
SOLID Principles II: Designing with Abstraction

(C++ DE MM OOP)
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)
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
Lab6A assigned
[Top]
Mon Apr 07 2025

Lec 34
Collections: Linked List

(ADS C++ DE MM)
cppme: Structures

cppme: Singly Linked Lists
Wed Apr 09 2025

Lec 35
Exception Handling

(C++ DE)
Quiz 5: Inheritance & SOLID Design
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)
Lab6B assigned
Wed Apr 16 2025

Lec 37
Recursion

(DE MM)
cppme: Recursion

w3s: Recursion
Tue Apr 17 2025 A5 due
Fri Apr 18 2025

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

Iteration v Recursion

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

Lec 39
Collections: 2D Lists

Breadth-First Search v Depth-First Search

(ADS C++ DE MM)
Lab6A due
Lab6C assigned

A6 assigned


(For Fun Watch: Micromouse Competition)
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
Resource Acquisition Is Initialization (RAII): Smart Pointers and The Rule of 5

(C++ DE MM OOP)
[Top]
Mon Apr 28 2025

Lec 42
Collections: Trees & Graphs

(ADS C++ DE MM)
Lab6B due
Quiz 6: Lists
AXC assigned
cppme: Binary Trees
Wed Apr 30 2025

Lec 43
Final Exam Review

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

Exam 1 LOs
Full Course LOs



Thu May 01 2025 LAST DAY TO SUBMIT ASSIGNMENTS FOR CREDIT
A6 due
FP due
AXC due
[Top]
? May ?? 2025 Final Cumulative Exam
Time: TBA

Rooms:
Section A (Romig 9am) - TBA
Section B (Paone 10am) - TBA
Section C (Scholten 10am) - TBA
Section D (Scholten 11am) - TBA
Section E (Romig 12pm) - TBA

[Top]