Weekly outline

  • Week 0

    Course Rules:


    • When you sign up, please use the same name you have in your AASTMT records, and include your AASTMT ID. This how I can migrate your grades to the AASTMT system.
    • Login often to follow up with assignment deadlines and announcements. Its your responsibility to keep up with the course. Failure to receive emails or notifications is no excuse. Everything is announced in class and then published in moodle.

    Academic Honesty:

    • Please confirm with the AASTMT policies regarding plagiarism and cheating. A zero grade for the violating submission will be given the first time, then reported to the department for further action.
    • Please ask questions in the online forum to allow everyone to join and benefit from the discussions, and avoid private emails to the lecturers and TAs. Contact the teachers privately only about your personal grades or circumstances, not about the course content.

    How to score A+ in this course?

    • Please do all practicals and assignments and study regularly. In case of problems, please ask questions. Accumulating problems will make things worse as the semester goes by.

    Course Description:

    The course tackles the difference between static data type and dynamic data types. The concept of pointers & dynamic memory allocation is discussed allowing students to experience practical programming using dynamic structures. 

    Learning Outcomes:

    The student will be able to:

    • Understand the data types and static data structures pointers, dynamic data structures: stack queues linked lists, trees and graphs. 
    • Define the difference between static data type and dynamic data types and introduce the concept of pointers & dynamic memory allocation.
    • Acquire programming experiences using dynamic structures.

    Course Topics:

    • Introduction to static Vs dynamic data structures
    • Stack data type
    • Implementation of stack in different applications
    • Queue data type
    • Introduction to dynamic programming using pointers
    • Linked lists
    • Double & circular linked lists
    • Introduction to tree structures
    • Tree traversals
    • Threaded tree
    • Graphs representation and traversals
    • Graphs minimum spanning tree & shortest path 


    Mark Weiss and Benjamen Cummings, “Data structures and algorithm analysis”. 


    Grading Scheme:

    Week 7
    Quizes 5%
    Lab Submissions 2.5%
    Assignments 2.5%
    Midterm 1 20%
    Week 12
    Quizes 5%
    Lab Submissions 2.5%
    Assignments 2.5%
    Midterm 2 10%
    Project 10%
    Final Exam


  • 20 September - 26 September

    Week 1:

    Chapter 1: Programming

    Chapter 2: Algorithm Analysis

    Learning Objectives

    • Introduction to Algorithms Correctness, Performance and Data Structures
    • Concrete Vs. Abstract Data Types
    • Static Vs. Dynamic Data Structures
  • 27 September - 3 October

    Week 2: Pointers (review and examples)

    Learning Objectives:

    • Revise pointers and memory allocations
    • Arrays and Structures.
  • 4 October - 10 October

    Eid Al- Adha Holidays

  • 11 October - 17 October

    Week 3: Chapter 3: Linked Lists:

    Learning Objectives:

    • Show how to efficiently perform operations on lists
    • Understand how linked lists perform vs. Array Based list implementation 
  • 18 October - 24 October

    Week 4: Stack Data Type (Chapter 3)

    Learning Objectives:

    1. Define stacks as abstract data type.
    2. Demonstrate how to implement stacks as arrays and linked data structures.
    3. Explain, with code examples, the algorithms for initializing, pushing, popping, and checking for a full/empty stack.
  • 25 October - 31 October

    Week 5: Queue Data Type (Chapter 3)

    Learning Objectives: 

    1. Define and contrast queues as abstract data types.
    2. Demonstrate how to implement queues as arrays and linked data structures.
    3. Explain, with code examples, the algorithms for initializing, enqueueing, dequeuing, and checking for a full/empty queue.
  • 1 November - 7 November

    Week 6: Stack Applications

  • 8 November - 14 November

    Week 7 Midterm

  • 15 November - 21 November

    Week 8: Tree Data Structures

    Learning Objectives:

    • Study Tree Data Structures and operations and processing complexity.
  • 22 November - 28 November

    Week 9: Tree Traversals

    Learning Objectives:

    • Understand, Implement, trace and apply the different tree traversal methods
  • 29 November - 5 December

    Week 10: Balanced Binary Trees

    Learning Objectives:

    • Study a balanced Binary Tree ADT such as AVL Trees
  • 6 December - 12 December

    Week 11: Hashing

    Learning Objectives:

    1. Understand Hash Tables ADT and processing complexity
    2. Hash Function Design
    3. Collision Resolution Techniques Pros and Cons.
  • 13 December - 19 December

    Week 12: Midterm 2

  • 20 December - 26 December

    Week 13: Graph ADT

  • 27 December - 2 January

    Week 14: Graph Traversals

  • 3 January - 9 January

    Week 15: Happy New Year and Merry Christmas, Find Final Exam Review Questions Below, Good Luck