Course Outline: Data Structures and Algorithms 1
Lecturer
Name Email Phone
Agblewornu Veronica vagblewornu@[Link] 0243039054
Office Hours: Thursdays 3:00 pm - 5:00pm
Fridays 3: 00 pm - 5:00pm
Course Code: CSSD 201
Course Title: Data Structures1
Course Objective:
Equip students with skills to analyze and design fundamental data structures, enabling them to
use these structures as tools to algorithmically create efficient computer programs that address
complex, real-world problems.
Learning Outcomes
By the end of the course, students should be able to:
Understand and differentiate between data types, data structures, and algorithms.
Define abstract data types (ADTs) and their implementation.
Design and implement basic data structures such as arrays, linked lists, stacks, queues,
trees, and graphs.
Use data structures to solve problems efficiently.
Analyze the time and space complexity of algorithms.
Apply appropriate searching and sorting algorithms in practical scenarios.
Course Content
Week 1: Introduction to Data Structures
Topic: Overview of data structures and algorithms
o Definitions: Data type, data structure, algorithm
o Role of data structures in programming
o Understanding abstraction and abstract data types (ADTs)
o Mathematical models of data (sets, lists, graphs)
o Difference between ADTs and their implementations
Week 2: Arrays
Topic: Introduction to Arrays
o Definition and characteristics
o Memory representation and access
o Operations: Insert, delete, access, and traverse
o Multidimensional arrays
Week 3: Linked Lists
Topic: Introduction to Linked Lists
o Singly linked lists, doubly linked lists, and circular linked lists
o Operations: Insert, delete, search, and traverse
o Memory management and dynamic allocation
Week 4: Stacks and Queues
Topic: Introduction to Stacks and Queues
o Stack data structure and applications (e.g., expression evaluation, recursion)
o Queue data structure and applications (e.g., scheduling, buffering)
o Circular queues and double-ended queues (Deque)
o Implementation using arrays and linked lists
Week 5: Priority Queues and Heaps
Topic: Priority Queues and Heaps
o Introduction to priority queues and their applications
o Implementing priority queues with heaps (min-heap, max-heap)
o Heapsort algorithm
o Heap operations (insert, extract min/max)
Week 6: Hash Tables
Topic: Hashing and Hash Tables
o Introduction to hash functions and collision resolution
o Hashing techniques: Separate chaining, open addressing
o Hash table operations: Insert, delete, search
o Applications of hash tables
Week 7: Trees
Topic: Binary Trees and Binary Search Trees (BST)
o Definition and properties of trees
o Binary trees and their traversal methods (in-order, pre-order, post-order)
o Introduction to binary search trees (BST) and their properties
o Operations on BST: Insert, delete, search
Week 8: Advanced Tree Structures
Topic: AVL Trees and Red-Black Trees
o Balanced trees and self-balancing BSTs
o AVL tree rotations and balancing
o Red-black trees and their properties
Week 9: Graphs
Topic: Introduction to Graphs
o Representation of graphs (adjacency matrix, adjacency list)
o Types of graphs: Directed, undirected, weighted, unweighted
o Graph traversal algorithms: BFS (Breadth-First Search), DFS (Depth-First
Search)
o Applications of graphs (shortest path, connectivity)
Week 10: Searching Algorithms
Topic: Searching Techniques
o Linear search
o Binary search (iterative and recursive)
o Time complexity analysis of search algorithms
o Applications of search algorithms in real-world problems
Week 11: Sorting Algorithms
Topic: Sorting Techniques
o Introduction to sorting algorithms: Bubble Sort, Selection Sort, Insertion Sort
o Efficient sorting algorithms: Merge Sort, Quick Sort, Heap Sort
o Time and space complexity of sorting algorithms
o Comparison of sorting algorithms
o Apply different sorting techniques based on data structure needs.
Week 12: Applications and Real-World Use Cases & Course Review and Project
Topics 1:
o Real-world applications of various data structures and algorithms
o Selection of appropriate data structures based on application requirements
Topics 2:
o Comprehensive review of all data structures covered
o Final Project: Design a program utilizing multiple data structures for a practical
problem
Recommended Resources:
Books:
o "Data Structures and Algorithm Analysis in C++" by Mark Allen Weiss.
o "C++ Primer" by Stanley B. Lippman.
o “Data_Structure_and_Algorithmic_Thinking_with_Python_Data_Structure.pdf”
by Narasimha Karumanchi.
o Karumanchi, N. (2016), Data Structures and Algorithms Made Easy: Data
Structures and Algorithmic Puzzles (5th ed.), CareerMonk Publications, ISBN-
10: 819324527X, ISBN-13: 978-8193245279
o Cormen, T. H., Leiserson C. E. and Rivest R. (2009), Introduction to Algorithms
(MIT Press) (3rd ed.), The MIT Press, ISBN-10: 0262033844, ISBN-13: 978-
0262033848
o Goodric, M. T. (2011), Data Structures and Algorithms in C++ (2nd ed.),
WileyISBN-10: 0470383275, ISBN-13: 978-0470383278
o Horowitz, E. et. al. (2007), Fundamentals of Data Structures in C (2nd ed.),
Silicon Prn ISBN-10: 0929306406, ISBN-13: 978-0929306407
Online Platforms:
o LeetCode (for solving data structure-related problems).
o GDB Online ([Link]
Assessment Methods:
Weekly coding assignments…………………… 20%
Final project presentation (Mid Sem Exam)…… 20%
Final Examination ………………………………60%