Programming Fundamentals II
This course is taught using the C++ language. It does not focus on the syntax, but rather systems-related, memory, and other advanced topics in computing.
Abstractions
Encapsulation
Enumeration
Value vs. Reference
Data Streams (file, console)
File IO (text, binary)Abstractions
Object-Oriented Programming
Methods & Attributes – Reiteration
Objects & Classes– Reiteration
Inheritance
Polymorphism
Abstract Classes
Interfaces
Base Classes
Generic Programming
Multiple Inheritance
Diamond Problem
Functional Programming / Lambdas
Memory
Bitwise Operations
Pointers
Dynamic Allocation
Pointer Arithmetic
C++ Style References
Explicit Deallocation (vs Garbage Collection)
Heap / Stack
“Big 3” (Constructor / Copy Constructor / Destructor)
Computational Theory
Induction
Recursion – Reiteration
Binary & Linear Search
Sorting Algorithms (bubble, selection, insertion, merge, quick)
Abstract Data Types: Lists, Maps, Sets
Loop / class invariants (possibly with assertions)
Data Structures
Generics: Objects / Primitives
Generics: Values / References / Pointers
Linked List & Array List Implementations
STL queue / stack / deque classes ß Students will have experience with Python list()
STL map classes (map / unordered map) ß Students will have experience with Python dict()
STL set classes (set / unordered set)
STL Iterators
Software Engineering
Global Scope
Libraries & Linking (Dynamic / Static)
Command Line Interface / Parameters – Reiteration
CLI Basics (building – direct / Makefile, piping & redirecting)
Include Guards (“#pragma once”, “#define”)
Unit Tests / Assertions / Test-Driven Development – Reiteration
Version Control – Reiteration
Coding Conventions – Reiteration