Lecture 1
Data Structures & Algorithms
Course Overview & Importance
By
Dr. Bushra Jamil
Introduction
• Course outline
• Rules and regulations
• Course contents
• Mode: 2 Lectures per week (1.5 hrs each)
• Assessments: Quizzes, Assignments, Midterm, Final, Project
Course Description
• Title: Data Structures and Algorithms
• Code: CMPC-203
• Credit Hours: 3 (Theory) + 1 (Lab)
• Prerequisite: OOP
• Follow Up: Design and Analysis of Algorithms, Operating Systems
Course Objectives
• Understand how data is organized, stored, and retrieved
• Learn data structures: arrays, lists, stacks, queues, trees, graphs
• Analyze algorithms (time & space complexity)
• Develop problem-solving skills using C++
• Prepare for advanced CS courses
Learning Outcomes
• By the end of this course, students will be able to:
– Select suitable data structures
– Implement structures in C++
– Apply algorithm design techniques
– Evaluate algorithms using Big-O
– Build small DSA-based projects
Contents
• Introduction to Algorithms
• Arrays
• Stacks
• Recursion
• Queues
• Lists and its variations
• Trees
• Hashing
• Searching and sorting Techniques
• Graphs
• Introduction to STL
Data Abstraction and Encapsulation
• Data Encapsulation or Information Hiding is
the concealing of the implementation
details of a data object from the outside
world.
• Data Abstraction is the separation between
the specification of a data object and its
implementation.
• A data type is a collection of objects and a
set of operations that act on those objects.
Data types in C/C++
Datatype Modifiers
Data Types
• Simple (basic)
– char, int, float, double
• Modifiers
– signed, unsigned
• Qualifiers
– static, const
• Structured (derived)
– Arrays, structures, unions, classes
• Advanced (composite)
– List, queues, stacks, trees, graphs
Data Structures
• Goal: organized way to manage and store data
• Criteria: facilitate efficient
– storage of data
– retrieval of data
– manipulation of data
• Process:
– select and design appropriate data types
Algorithms
• Algorithm is a set of instruction written to to solve a problem
• To develop a program of an algorithm, we should select an
appropriate data structure for that algorithm.
• Therefore algorithm and its associated data structures from a
program.
Why Study DSA?
• Efficiency: Faster algorithms, less memory
• Scalability: Handle big datasets
• Industry Relevance: Interviews & real-world use
• Foundation: Supports DB, OS, AI, Compilers
• Improves problem-solving skills
Applications of DSA
• Databases: Indexing, B-trees, Hashing
• OS: Process scheduling, memory management
• Networks: Routing (Dijkstra, Bellman-Ford)
• AI: Graph search, decision trees
• Cybersecurity: Cryptography
Tradeoff
simplicity of data organization simplicity/elegance of algorithms
Simple (unsophisticated) data strucuture
may require much work for processing data
More complex data organization
may yield nicer algorithms for the basic operations
Another version of the old time-space tradeoff
Resources
• Textbooks:
– Mark Allen Weiss, DSA in C++
– Sedgewick & Wayne, Algorithms
• Online: GeeksforGeeks, LeetCode, HackerRank
• Tools: VS Code, Code::Blocks, Online GDB