Techniques and principles of algorithms design including divide-and-conquer and greedy algorithms. Complexity (worst and average case) analysis and their associated asymptotic notations (Theta, Big O, Omega). Iterative sorting algorithms: Bubble sort, insertion sort. Recursive sorting: merge sort, quick sort, heap sort. Sorting in linear time: counting/radix sort. Decision tree analysis: N*logN bound on comparison based sorting. Algorithms for graph problems: Shortest path (Dijkstra), minimum spanning trees (MST algorithms: Kruskal, Prim). Hashing. Discussion on NP-class problems (e.g. Travelling Salesman Problem).

Course Type | Major |
---|---|

Credit Hour | 4 |

Lecture Hour | 60 |

- Students will learn methods for designing efficient algorithms, evaluating their performance, and ways of establishing precise limits on the possible effectiveness of classes of algorithms
- They will learn standard algorithms for fundamental problems.

Biweekly Quiz, Biweekly Programming Assignment, One Midterm Exam, One Final Exam

Letter Grade | Marks | Grade Point |
---|---|---|

A | 90 - 100 | 4.00 |

A- | 85 - 89 | 3.70 |

B+ | 80 - 84 | 3.30 |

B | 75 - 79 | 3.00 |

B- | 70 - 74 | 2.70 |

C+ | 65 - 69 | 2.30 |

C | 60 - 64 | 2.00 |

C- | 55 - 59 | 1.70 |

D+ | 50 - 54 | 1.30 |

D | 45 - 49 | 1.00 |

F | 00 - 44 | 0.00 |