COMP-4370 Details
COMP 4370 Algorithmic Problem Solving
Course description
Algorithmic problem solving is a programming-first class focused on teaching students about common algorithms used to find solutions. Students are taught how to analyze and solve problems in C++ using data structures and algorithms. Specific course topics are:
- Introduction to software testing (unit testing) using googletest
- Test driven development
- Identifying and using common data structures to solve problems
- Generating good random numbers
- Refactoring code safely and correctly using a test driven approach
- Version control with git
- Dynamic programming to solve problems
- Constraint solving and backtracking search
- Cryptographic/hashing libraries and usage in C++
- Hashing functions used for passwords, password hash storage, password cracking programs
- Concurrency, threads, incorporating threads to speed up CPU bound problems
- Shared queue; thread pools for multi-threaded programs
Course learning objectives
- Learn common data structures used to solve problems
- Understand how to write unit tests for programs
- Become familiar with various approaches to tackle problems with code
- Learn about cryptographic hashing functions and their purpose and security
- Be able to utilize threading libraries to parallelize CPU bound programs
- Introduction to mutexes and locks