CSCI 200 - Fall 2024
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
[Top]
Mon Aug 19 2024

Lec 00
Python vs. C++

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

A0 assigned
Wed Aug 21 2024

Lec 01
Imperative Programming: Compiling Hello World

(C++ CLI)
Lab0 due

Read cpp4py: 1.1 - 1.8

Read cppme: Basics of C++
Slides (.pdf) Complete Lecture 01 Post Class Survey

Thu Aug 22 2024 A0 due
Fri Aug 23 2024

Lec 02
Imperative Programming: Variables, Memory, and Random Values

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

Read cpp4py: 2.1 - 2.4

Read cppme: Modulus

Read A Tutorial On Two's Complement

Read cppme: Typecasting
Handout (.pdf)

Slides (.pdf)
Lab1A assigned
[Top]
Mon Aug 26 2024

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

(CLI)
First read cppme: Random Values

Then watch rand() Considered Harmful

Last, take the Random Number Quiz
CLI Cheat Sheet (.pdf)

Makefile Cheat Sheet


Slides (.pdf)

Lecture Example Code
Wed Aug 28 2024

Lec 04
Structured Programming: Conditionals & Scope

(C++ DE MM)
Lab1A due

cpp4py: 3.1

cppme: if

cppme: switch

Comparing floats
Handout (.pdf)

Slides (.pdf)

Lecture Example Code
Lab1B assigned

A1 assigned
Fri Aug 30 2024

Lec 05
Structured Programming: Loops & Scope

(C++ DE MM)
cpp4py: 3.2 - 3.7

cppme: Loops
Handout (.pdf)

Slides (.pdf)

Lecture Example Code
[Top]
Mon Sep 02 2024 --- NO CLASS --- LABOR DAY ---
Wed Sep 04 2024

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 05 2024 A1 due
Fri Sep 06 2024

Lec 07
Procedural Programming: Functions by Value

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

cpp4py: 4.1, 4.4

cppme: Functions
Quiz 1: Imperative & Structured Programming


Slides (.pdf)
Lab2A assigned
[Top]
Mon Sep 09 2024

Lec 08
Abstraction & Reuseability: Multifile Programs & Makefiles II

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

Lecture Example Code
Completed Lecture Code
Wed Sep 11 2024

Lec 09
Scope on the Call Stack: Introducing Pointers

(C++ MM)
Lab2A due

Pointers Video (27:58)

Pointers Slides (.pdf)

cpp4py: 2.5

cppme: Pointers
Slides (.pdf)

Lecture Example Code
Lab2B assigned
Fri Sep 13 2024

Lec 10
Procedural Programming: Functions by Pointer

(C++ DE MM)
Slides (.pdf) Lab2C assigned

A2 assigned
[Top]
Mon Sep 16 2024

Lec 11
Exam I Review

(C++ CLI DE MM)
Exam 1 LOs


Exam 1 Extra Credit Questions
Quiz 2: Procedural Programming


Slides (.pdf)
Wed Sep 18 2024

Lec 12
Exam I

(C++ CLI DE MM)
Structured & Procedural Programming Exam
Fri Sep 20 2024

Lec 13
Reference v Pointing

(C++ MM OOP)
Lab2B due

w3s: References
Slides (.pdf)
[Top]
Mon Sep 23 2024

Lec 14
Object-Oriented Programming: Encapsulating State

(C++ MM OOP)
Lab2C due

w3s: OOP

w3s: Classes/Objects

w3s: Methods
Slides (.pdf)
Tue Sep 24 2024 A2 due
Wed Sep 25 2024

Lec 15
File Input & Output

(C++ DE OOP)
cpp4py: 6.1 - 6.7

cppme: File I/O

w3s: Files
Slides (.pdf)

Lecture Example Code
Lab3A assigned
Fri Sep 27 2024

Lec 16
Stream Formatting & Data Validation

(C++ DE OOP)
cppme: iomanip
Slides (.pdf)
[Top]
Mon Sep 30 2024

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

(ADS C++ DE MM OOP)
cpp4py: 5.3 - 5.4

C++ Reference: string

C++ Reference: vector

w3s: Strings

w3s: Vectors
Slides (.pdf) Complete Lecture 17 Post Class Quiz

Lab3B assigned
Wed Oct 02 2024

Lec 18
Object-Oriented Programming: Constructors & Access Modifiers

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

Lab3A due

w3s: Constructors

w3s: Access Modifiers

w3s: Encapsulation
Slides (.pdf)

Lecture Example Code
Complete Lecture 18 Post Class Survey

A3 assigned
Fri Oct 04 2024

Lec 19
Object-Oriented Programming: Working with Objects

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

In Class Activity


Slides (.pdf)

Lecture Example Code
FP Proposal assigned
[Top]
Mon Oct 07 2024

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

(C++ DE MM OOP)
Lab3B due
Slides (.pdf)
Wed Oct 09 2024

Lec 21
The Effects of const

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


Slides (.pdf)
Read: Pointers and const
Fri Oct 11 2024

Lec 22
Object-Oriented Programming: The Big 3

Shallow Copy v Deep Copy

(C++ DE MM OOP)
cpp4py: 4.2

cppme: Function Pointers

cppme: Functors

cppme: Operator Overloading
Slides (.pdf) A3 due at midnight

FP Proposal due at midnight

Lab4A assigned
[Top]
Mon Oct 14 2024 --- NO CLASS --- FALL BREAK ---
Tue Oct 15 2024 --- FALL BREAK ---
Wed Oct 16 2024

Lec 23
Object-Oriented Programming: Templates

(C++ DE OOP)
cppme: Templates

cppme: Templated Functions
Quiz 4: OOP & Pointers


Slides (.pdf)
Lab4B assigned
Fri Oct 18 2024

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 Oct 21 2024

Lec 25
Exam II

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

Lec 26
Object-Oriented Programming: Inheritance

(C++ DE MM OOP)
Lab4A due

w3s: Inheritance

cppme: Inheritance

cppme: Inheritance II

cppme: Object Lifetime

cppme: Inheritance
Slides (.pdf)
Fri Oct 25 2024

Lec 27
Libraries & SFML

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

A4 assigned
[Top]
Mon Oct 28 2024

Lec 28
Inheritance: Compile Time Polymorphism

(C++ DE MM OOP)
Lab4B due

cppme: Multiple Inheritance

w3s: Polymorphism
Slides (.pdf)
Wed Oct 30 2024

Lec 29
Inheritance: Runtime Polymorphism

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

Lecture Example Code
Lab5A assigned
Fri Nov 01 2024

Lec 30
Inheritance: Abstract Classes & Interfaces

SOLID Principles I

(C++ DE MM OOP)
Lab4C due
Slides (.pdf) A5 assigned
[Top]
Mon Nov 04 2024

Lec 31
SOLID Principles II: Designing with Abstraction

(C++ DE MM OOP)
cppme: Class Design
Slides (.pdf)
Tue Nov 05 2024 A4 due
Wed Nov 06 2024

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
Handout (.pdf)

Slides (.pdf)
Fri Nov 08 2024

Lec 33
Collections: Abstract List Operations & Dynamic Arrays

(ADS C++ DE MM)
Lab5A due
Slides (.pdf) Lab6A assigned
[Top]
Mon Nov 11 2024

Lec 34
Collections: Linked List

(ADS C++ DE MM)
cppme: Structures

cppme: Singly Linked Lists
Slides (.pdf)
Wed Nov 13 2024

Lec 35
Exception Handling

(C++ DE)
cpp4py: 7.1

cppme: Exceptions

w3s: Exceptions
Quiz 5: Inheritance & SOLID Design


Slides (.pdf)
Fri Nov 15 2024

Lec 36
Collections: Sorting a List

Selection / Insertion / Bubble / Merge Sort

(ADS C++ DE MM)
Slides (.pdf) Lab6B assigned
[Top]
Mon Nov 18 2024

Lec 37
Recursion

(DE MM)
cppme: Recursion

w3s: Recursion
Slides (.pdf)
Tue Nov 19 2024 A5 due
Wed Nov 20 2024

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

Iteration v Recursion

(ADS C++ DE MM)
Slides (.pdf)
Fri Nov 22 2024

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)
[Top]
Mon Nov 25 2024

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

(ADS C++ DE MM)
Slides (.pdf)
Wed Nov 27 2024 --- NO CLASS --- THANKSGIVING BREAK ---
Thu Nov 28 2024 --- THANKSGIVING BREAK ---
Fri Nov 29 2024 --- NO CLASS --- THANKSGIVING BREAK ---
[Top]
Mon Dec 02 2024

Lec 41
Collections: Trees & Graphs

(ADS C++ DE MM)
Lab6B due

cppme: Binary Trees
Quiz 6: Lists


Slides (.pdf)
AXC assigned
Wed Dec 04 2024

Lec 42
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
Slides (.pdf)
Thu Dec 05 2024 LAST DAY TO SUBMIT ASSIGNMENTS FOR CREDIT
A6 due
FP due
AXC due
[Top]
Mon Dec 09 2024 Final Cumulative Exam
Time: 8:00 AM - 10:00 AM

Rooms:
Section C (Scholten) - CTLM 102
Section D (Paone) - MZ 126
Section E (Wang) - MZ 326
Section F (Paone) - MZ 126
Section G (Scholten) - CTLM 102

[Top]