The emphasis of this course is on the design, analysis, and evaluation of efficient algorithms for a wide variety of computing problems.
Assignments:
- Project 01 Combinations by Brute Force
- Project 02 Hamiltonian Circuit by Brute Force
- Project 03 The 0-1 Knapsack Problem by Brute Force
- Project 04 Sums to n Problem by Brute Force
- Project 05 Working with the Definitions
- Project 06 Solving a Reduce and Conquer Recurrence Relation
- Project 07 Solving a Divide and Conquer Recurrence Relation
- Project 08 Average Case Analysis of Quicksort
- Project 09 Karatsuba’s Method for Multiplying Integers
- Project 10 Deriving and Demonstrating Strassen’s Algorithm
- Project 11 The Integers Mod N
- Project 12 Exploring FFT
- Project 13 Computing the Inverse of a Fourier Coefficient Matrix
- Project 14 Efficient Modular Exponentiation by Hand
- Project 15 Performing Extended Euclidean Algorithm by Hand
- Project 16 The Entire RSA Process
- Project 17 Breaking RSA
- Project 18 Computing mP efficiently
- Project 19 Breaking Tiny ECC
- Project 20 Breaking ECC by Social Hacking
- Project 21 Change-Making
- Project 22 The Rocks Game
- Project 23 0-1 Knapsack by Dynamic Programming
- Project 24 Implementing Floyd’s Algorithm
- Project 25 Designing an Algorithm by Dynamic Programming
- Project 26 Solving TSP by Dynamic Programming
- Project 27 The Sequence Alignment Problem
- Project 28 Smallest Difference Problem
- Project 29 Instant Insanity
- Project 30 Brute Force Method for LP
- Project 31 Solving Some LP Instances
- Project 32 Solving Continuous Collision Detection by LP
- Project 33 The Transportation Problem
- Project 34 Another Transportation Problem Instance
- Project 35 Branch and Bound for 0-1 Knapsack
- Project 36 Implementing 0-1 Knapsack Branch and Bound
- Project 37 Modeling ETSP by LP
- Project 38 Solving ETSP by Branch and Bound