Matakuliah ini membahas mengenai cara mendesain dan menganalisis algoritma. Analisis dilihat dari sisi efisiensi memori dan kompleksitas waktu. Perhitungan kompleksitas waktu terbagi menjadi tiga yaitu Big Oh, Big Theta, dab Big Omega. Algoritma yang dibahas dan dianalisa meliputi algoritma pengurutan (insertion sort, selection sort, buble sort, shell sort, merge sort, quick sort) dan algoritma pencarian (sequential search, interpolation search, binary search, Depth First Search, dan Breadth First Search). Dibahas pula beberapa kasus yang membutuhkan penyelesaian algoritma yang termasuk dalam Non Polynomial Completeness (NPC) yaitu Minimum Spanning Tree, Travelling Salesman Problem, Sudoku dan Penjadwalan. Algoritma yang termasuk dalam NPC diantaranya adalah Greedy Algorithm, Dynamic Algorithm, Genetic Algorithm, dsb