Xi Li (李溪)

Assistant Professor, Ph.D.

TrustBrew Lab

Department of Computer Science

University of Alabama - Birmingham

CS300/500 Advanced Object-Oriented Programming in C++

Course Overview

This course introduces object-oriented programming and modern C++ for building modular and reliable software. Students learn core object-oriented concepts, including classes, inheritance, polymorphism, and operator overloading; generic programming with templates and the Standard Template Library (STL); and safe resource management using RAII, smart pointers, and move semantics. These concepts are applied through the incremental development of a multilayer perceptron (MLP), with hands-on practice in compilation, debugging, testing, and version control.

Course Objectives
Topics
Schedule
Date Topics Code Demo Due
08/25 (T)Course IntroductionSyllabusLab 1
08/27 (Th)Varialbes, Functions, and Control Flows  
09/01 (T)Operators, and OverloadingOverloading + and <<Lab 2
09/03 (Th)Pointers, References, andconst KeywordPass by Value vs. Reference 
09/08 (T)Array and StringC Strings vs. std::stringLab 3
09/10 (Th)Stack vs. Heap memory, new and deleteLinked List 
09/15 (T)Class BasicsMember Operator OverloadingLab 4
09/17 (Th)Shallow Copy vs. Deep CopyMatrix Deep Copy 
09/22 (T)Demo: a Matrix ClassMatrix + and *Lab 5
09/24 (Th)Demo: a MLP ClassLinear/ReLU, Forward Pass 
09/29 (T)Review for Mid-term Exam  
10/01 (Th)Mid-term Exam  
10/06 (T)Class Inheritence Lab 6
10/08 (Th)Class Polymorphism  
10/13 (T)Demo: MLP.v2 Lab 7
10/15 (Th)Templates  
10/20 (T)STL containers Lab 8
10/22 (Th)STL containers  
10/27 (T)Demo: MLP.v3 Project 1
10/29 (Th)Smart Pointer  
11/03 (T)RAII, Move Semantics  
11/05 (Th)Demo: MLP.v4  
11/10 (T)Review for Mid-term Exam  
11/12 (Th)Mid-term Exam 2  
11/17 (T)File I/O and Exceptions  
11/19 (Th)Demo: MLP for Image Classification  
11/24 (T)Thanksgiving Break, No Class Project 2
11/26 (Th)   
12/01 (T)Hands-on Project Development, No Class  
12/03 (Th)   
12/08 (T)Exam Week, No Class  
12/10 (Th)   
Grading Policy