Spring 2026

CC BY-NC 4.0 Course materials licensed under CC BY-NC 4.0

The course reviews object-oriented design and discusses algorithm complexity, Big-O notation, and tractable and intractable algorithms. The course introduces concepts of abstract data types, basic data structures (i.e., lists, stacks, queues, and trees), and advanced data structures (i.e., graphs, sets, and heap). It also presents fundamental computing algorithms, including sorting, searching, and graph algorithms.

Lecture Progress

Week Plan Notes
Week 1
(12 - 16 Jan)
*12 Jan: Classes Begin. 16 Jan: End of Add/Drop
Lecture 1: Introduction. Course Organization.

Lecture 2: Arrays and LinkedLists. Analysis of Algorithms 1.

Java Rev.
Week 2
(19 – 23 Jan)
Lecture 3: Analysis of Algorithms 2. The big- Oh Notation, Complexity analysis examples.
Lecture 4: Analysis of Algorithms 3. Analysis examples (Fib iterative vs recursive).
 
Week 3
(26 – 30 Jan)
Lecture 5: Analysis of Algorithms 4. Analysis Examples (Binary Search). Time vs Space trade-off
Lecture 6: Complexity and Intractability 1. NP, NP-Hard, NP-Complete.
 
Week 4
(2 – 6 Feb)
Lecture 7: Complexity and Intractability 2. Turing Machine. Polynomial Reduction.
Lecture 8: Unsorted Lists.
 
Week 5
(9 – 13 Feb)
Lecture 9: Sorted Lists.
(Quiz 1 – Thursday 12 Feb).
 
Week 6
(16 – 20 Feb)
Lecture 10: Stack ADT.
Lecture 11: Queue ADT.

 
Week 7
(23 – 27 Feb)
Lecture 12: Sorting I. Selection, Bubble, Radix.
Lecture 13: Sorting II. Quick Sort, Merge Sort.
 
Week 8
(2 – 6 Mar)
Lecture 14: Sorting III. Heap ADT, Heap Sort, Insertion Sort.
Lecture 15: Binary Search Trees I.
Lec. 15 notes
2 Weeks
(9 - 19 Mar)
Spring Break + Eid Al Fitr  
Week 9
(23 - 27 Mar)
Lecture 16: Binary Search Trees II. Red Black Trees. Insert Operation.
Lecture 17: Binary Search Trees III. Red Black Trees. Delete Operation.

 
Week 10
(30 Mar - 3 April)
Lecture 18: Map ADT. Hash tables.
Lecture 19: Set ADT. Map Sets, Bit Vector Sets, Bloom Filters.

 
Week 11
(6-10 April)
Lecture 20: Graph Priliminaries; Disjoint Sets

(Quiz 2 – Thursday 9 Apr). Lecture 8 - 14.
Project Issue – Thursday 6 April
 
Week 12 Lecture 21: Priority Queue ADT and KD-Trees.

(Quiz 3 – Thursday 16 Apr). Lecture 15 - 19.
 
Week 13
(20 – 24 Apr)
Lecture 22: Graph Search. Depth-First, Breadth-First, Uniform Cost Search.

Lecture 23: Graph Algorithms. Dijkstra; Minimum Spanning Tree Algorithms.


Project Deadline: Thu 24 Apr at 11:59 PM
 
Week 14

1 May - Last Day of Classes

4-14 May – Final Exams

*19 May - Grades Publish Day
Lecture 24: Tries and Text Compression.

Lecture 25: Filling the gaps (Optional Lecture)
 

Lab

Week Plan Notes
Week 1 No Lab  
Week 2 Java Revsiion:Dynamic Memory Allocation  
Week 3 Analysis of Algorithm Complexity (Part 1): Test different algorithms and measure the time complexity effects in practice.  
Week 4 Analysis of Algorithm Complexity (Part 2): Link the Algorithm complexity concepts from theory to practice.  
Week 5 UnsortedList & SortedList (Array and LinkedList)

(Quiz 1: Analysis of Algorithm complexity I & II)
 
Week 6 Stack ADT  
Week 7 Midterm Week  
Week 8 Queue ADT
 
Week 9 Performance Sorting Algorithms I (Selection & Short-Bubble Sort)

(Quiz 2: Unsorted & Sorted List, Stack & Queue)
 
  Spring Break  
Week 10 Performance Sorting Algorithms II (Quick Sort & Heap Sort)  
Week 11 Binary Search Tree (BST)

(Quiz 3: Sorting Algorithms)
 
Week 12 Hash Maps & Sets  
Week 13 Lab 11