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