Algorithms
Algorithms
Course Objectives
This course introduces foundational theories and methods for analyzing and designing efficient algorithms. It
emphasizes the significance of algorithmic thinking in practical computing and system design.
Course Description
This course explores fundamental concepts and techniques in algorithm design and analysis. Students will
examine various computational methods including numerical algorithms, sorting and searching techniques,
recursive problem-solving, and data organization through structures like linked lists and graphs.
Theoretical underpinnings such as correctness proofs, invariants, and time/space complexity analysis will be
covered. Students will also gain exposure to encryption techniques and grammar-based algorithms. A unique
component of this course is the exploration of traditional African computing through the Oware board as a
model of algorithmic reasoning.
Course Outline
1. Introduction to Computational Models: The African Calculating Instrument (Oware)
• Explore Oware as an indigenous algorithmic tool.
• Analyze its computational logic and relevance to modern problem solving.
2. Algorithm Complexity: Time and Space Analysis
• Learn to express algorithm efficiency using Big-O notation.
• Study best, worst, and average case performance.
3. Theory of Correctness and Algorithmic Invariants
• Develop formal proofs for algorithm correctness.
• Understand preconditions, postconditions, and loop invariants.
4. Numerical Algorithms and Recursion Techniques
• Explore recursive and iterative methods for common problems.
• Implement algorithms for numerical computations.
5. Searching Techniques and Performance Comparison
• Study linear, binary, and hash-based searching.
• Evaluate time complexity and performance in different contexts.
6. Sorting Algorithms: Stability, Complexity, and Applications
• Learn and compare sorting techniques like merge sort, quicksort.
• Understand sorting algorithm stability and use cases.
7. Introduction to Data Structures: Arrays, Linked Lists, Trees
• Understand how data is organized and accessed efficiently.
• Explore fundamental structures and their operations.
8. Machines and Formal Languages
• Introduction to finite automata and formal grammars.
• Understand the role of abstract machines in computation.
9. Graph Algorithms and Representation
• Study graph traversal algorithms such as BFS and DFS.
• Learn two fundamental graph representations: adjacency lists and adjacency matrices.
• Explore use cases such as shortest path and connectivity.
10. Introduction to Encryption and Cryptographic Algorithms
• Study basic encryption concepts and simple ciphers.
• Understand their importance in data security.
Assessment
Quiz 1 20%
Quiz 2 20%
Exams 60%
Note: Students are encouraged to read beyond the listed materials and participate actively in discussions and
problem-solving sessions.
Reading List
Barne, G., & Del Tongo, L. (2008). Dsa.
Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2009). Introduction to algorithms third edition. MIT Press. ISBN
0-262-03384-4. Section, 23 , 631–638.
Deconinck, S. (2011). The algorithm design manual.
Goodrich, M. T., & Tamassia, R. (2008). Data structures and algorithms in java. John Wiley & Sons.