Beruflich Dokumente
Kultur Dokumente
CSH2G3
Description
Introduction to the mathematical analysis of correctness & complexity of algorithms to solve a
particular problem using an appropriate algorithm’s strategy.
Objectives
[1] To introduce students to the tool and technique for analyzing and designing an algorithm.
[2] To provide students knowledge of designing, analyzing and proving the correctness of an
algorithm.
[3] To be capable of determining the appropriate algorithmic strategy for a particular problem.
Prerequisite
1. Basic programming
a. Loops
b. Pointers
c. recursion
2. Discrete Mathematic
a. Induction
b. Permutation
c. Sets
d. Probability
3. Calculus
a. Logarithms
b. Integration
c. Differentiation
4. Data Structure
a. Stack
b. List
c. Queue
d. Heaps
e. trees
Credit
Grading policy
Activities Percentages
Quizzes/homework/assignments 10%
Project 20%
Midterm exam 30%
Final exam 40%
Course syllabus
1. Introduction to software engineering concepts
1.1. Top-down & bottom-up programming
1.2. Correctness proofs by induction
1.3. Transforming & optimizing programs
2. Basic algorithmic analysis
2.1. Asymptotic analysis of upper and average complexity bounds
2.2. Identifying differences among best, average, and worst case behaviors
2.3. Big "O," little "o," omega, and theta notation
2.4. Standard complexity classes
2.5. Time and space tradeoffs in algorithms
2.6. Using recurrence relations, characteristic equation, and master theorem to analyze
recursive algorithms
3. Algorithmic strategies
3.1. Brute-force algorithms
3.2. Greedy algorithms
3.3. Divide-and-conquer
3.4. Backtracking
3.5. Branch-and-bound
3.6. Heuristics
3.7. Pattern matching and string/text algorithms
3.8. Numerical approximation algorithms
4. Fundamental computing algorithms
4.1. Sequential and binary search algorithms
4.2. Quadratic sorting algorithm (selection, insertion, bubble)
4.3. O(N log N) sorting algorithms (quicksort, mergesort)
4.4. Depth and breadth first traversal
4.5. Shortest path algorithm
4.6. Minimum spanning tree (Prim’s and Kruskal’s algorithm)
5. Advanced algorithmic analysis
5.1. Dynamic Programming
TUGAS BESAR
Menyelesaikan suatu permasalahan dengan menerapkan salah satu strategi algoritma yang telah
dipelajari, kemudian menuliskan ide penyelesaian tersebut dalam bentuk makalah dan
dipresentasikan di akhir perkuliahan.