Data Structures and Algorithms

December 16th, 2019


Core Lecture: Data Structures and Algorithms 



The course consists of oral lectures, 2*90 minutes per week, as well as exercises that will be supervised in discussion groups (60 minutes/week).

Males: Lectures will be held Sundays, and Tuesdays 12:30–14:00, in K512 .  
Females: Lectures will be held Sundays, and Tuesdays 14:00–15:30, in L303

Tutorials will be supervised by Abdallah Al-Azzami, and Abeer Al-Aydi

Males: Discussion sessions will be held Mondays 8:00–9:00, in K104.  
Females: Discussion sessions will be held Mondays 10:00-11:00 in ?? 


I will make lecture slides and material available for download here, i.e., on this web page.



This course explores key concepts of Data Structures and Algorithms, including Designing algorithms, Analyzing algorithms, Asymptotic notation, Fundamental data structures, Graphs, Trees, Sorting, Searching, and others. in conjunction with learning how to code and use them in Java. 



Exercises will involve applying the introduced concepts and algorithms to examples and writing simple programs. Solutions must be submitted individually by every enrolled student. Passing exercises with an average score 60% is necessary to pass the course.

Assignment 1     Due: 17.9.2019

Assignment 2     Due: 24.9.2019

Assignment 3     Due: 1.10.2019

Assignment 4     Due: 8.10.2019

Assignment 5     Due: 15.10.2019

Assignment 6     Due: 22.10.2019

Assignment 7     Due: 29.10.2019

– – – – – – – – – – – – – – – – – – – – – –

Assignment 8     Due: 24.11.2019

Assignment 9     Due: 1.12.2019

Assignment 10    Due: 8.12.2019

Assignment 11     Due: 15.12.2019

Assignment 12     will be Due: 22.12.2019

Assignment 13     will be Due: 24.12.2019


Exams and final grade

There will be a written final exam at the end of the course, a midterm exam, written assignments, coding assignments, and discussion sessions. The final grade will be determined based on the performance in all 5 of them.

Tutors Abdallah and Abeer can also give bonuses for outstanding performance, or deduct points from those who make trouble.


Course Material

lecture topic will be noted in the table below at least one day before the lecture sessions on each chapter, slides will be available directly after we finish a chapter.

Most of the course follows the standard Data Structures and Algorithms in Java textbook by Goodrich, Tamassia, and Goldwasser [G]. HOWEVER, in some chapters, we will NOT follow that book one-to-one.

Next to the main book, we will make use of  some knowledge from: 

  • Introduction to Algorithms by Cormen, Leiserson, Rivest, and Stein [C]
  • Algorithm Design by Kleinberg, and Tardos [K]
  • Introduction to the Design and Analysis of Algorithms by Anany Levitin [L] 



Course Overview. The provisional outline of the course is specified in the following table:





Sunday, 8-Sep

Introduction, Algorithm Design Example   DSaA_L0  

Tuesday, 10-Sep

Pseudocode, More Algorithm Design DSaA_L1 ClosingtheLoop

Sunday, 15-Sep

Fundamental Data Structures DSaA_L2 Code from textbook

Tuesday, 17-Sep

Algorithm Analysis & Asymptotic Notations DSaA_L3  

Sunday, 22-Sep

Algorithm Analysis & Asymptotic Notations 2   course part1

Tuesday, 24-Sep

Recursion DSaA_L4  

Sunday, 29-Sep

Recursion 2 & intro to Algorithm Design    

Tuesday, 1-Oct

Brute Force and Exhaustive Search DSaA_L5  

Sunday, 6-Oct

Decrease and Conquer DSaA_L6  

Tuesday, 8-Oct

Divide and Conquer DSaA_L7 demo

Sunday, 13-Oct

Sorting DSaA_L8 printable_L8

Tuesday, 15-Oct

More about Sorting   course part 2

Sunday, 20-Oct

Stacks, Queues, and Deques DSaA_L9 course part 3

Tuesday, 22-Oct

List and Iterator ADTs DSaA_L10  

Sunday, 27-Oct


Tuesday, 29-Oct

Review Midterm-Results  

Sunday, 3-Nov

Midterm Exams Week    

Tuesday, 5-Nov

Midterm Exams Week    

Sunday, 10-Nov

 – – –     

Tuesday, 12-Nov

 – – –    

Sunday, 17-Nov

Trees DSaA_L11  

Tuesday, 19-Nov


Sunday, 24-Nov

Priority Queues & Heaps DSaA_L12 course part 4

Tuesday, 26-Nov

Maps, Hash Tables, and Skip Lists DSaA_L13  

Sunday, 1-Dec

Maps, Hash Tables, and Skip Lists   course part 5

Tuesday, 3-Dec

Search Trees DSaA_L14  

Sunday, 8-Dec

Search Trees   course part 6

Tuesday, 10-Dec

Graphs DSaA_L15  

Sunday, 15-Dec

Graph Algorithms   course part 7

Tuesday, 17-Dec

Graph Algorithms    

Sunday, 22-Dec

Graph Algorithms DSaA_L16 course part 8

Tuesday, 24-Dec

Graph Algorithms    



Saturday, 11-Jan

Final Exam    

This is one of the most important (and fun) courses you will take.

تمنياتي لكم بالتوفيق