Course Title: Algorithms
Course Code: UU-COM-3005
Programme: Bachelor of Science (BSc) in Computer Science - MW - BL
Objectives of the Course:
o Provide understanding how to evaluate the efficiency of an algorithm
o Present a variety of techniques for designing algorithms
o Provide a wide variety of data structures and should be able to use them appropriately to solveproblems
o Build a foundation of fundamental algorithms
1. Explain the use of big O, omega, and theta notation to describe the amount of work done by analgorithm.
2. Discuss factors other than computational efficiency that influence the choice of algorithms, such as programming time, maintainability, and the use of application-specific patterns in the input data.
3. Use big O, omega, and theta notation to give asymptotic upper, lower, and tight bounds on time and space complexity of algorithms.
4. Determine the time and space complexity of simple algorithms.
5. Implement the most common quadratic and O(NlogN) sorting algorithms.
6. Design and implement an appropriate hashing function for an application.
7. Design and implement a collision-resolution algorithm for a hash table.
8. Discuss the computational efficiency of the principal algorithms for sorting, searching, and hashing.
9. Solve problems using the fundamental graph algorithms, including depth-first and breadth-first search, single-source and all-pairs shortest paths, transitive closure, topological sort, and spanning tree algorithm.
10. Demonstrate the following capabilities: to evaluate algorithms, to select from a range of possible options, to provide justification for that selection, and to implement the algorithm in programming context.
Prerequisites: UU-ACG-1000, UU-MKT-2000, UU-MAN-2010, UU-BBA-2000, UU-ENG-1000, UU-ENG-1001, UU-ENG-1005, UU-COM-1000, UU-MTH-1000, UU-MTH-1005, UU-MTH-2000, UU-MTH-3000, UU-COM-1100, UU-COM-2000, UU-COM-2001, UU-COM-2002, UU-COM-2003, UU-COM-3000, UU-COM-3003, UU-BA-IND100, UU-FNT-103, UU-BBA-2010-BCS