COP 3503C

COP 3503C

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