DSA 2 – Course Overview
DSA 2 is a continuation of Data Structures and Algorithms 1.
In this course, students move from basic programming concepts to structured problem solving using advanced techniques and dynamic data structures.
The goal is to learn how to organize data efficiently and design better algorithms.
Functions and Recursion
Functions
Students learn how to:
-
Break a problem into smaller sub-problems
-
Write reusable code
-
Pass parameters and return values
-
Improve program readability and structure
👉 This follows the principle of divide and conquer.
Recursion
Recursion is when a function calls itself.
Students learn:
-
Base case and recursive case
-
Stack memory behavior
-
Solving problems like:
-
Factorial
-
Fibonacci
-
Binary search
-
Tree traversal
-
File Handling
Students learn how to:
-
Read data from files
-
Write data to files
-
Store persistent information
-
Handle text and structured data
This allows programs to:
-
Save results
-
Process large datasets
-
Work beyond console input/output
Dynamic Data Structures
Unlike static arrays, dynamic structures use memory allocated at runtime.
Students learn:
Stack (LIFO – Last In First Out)
Operations:
-
push()
-
pop()
-
peek()
Applications:
-
Expression evaluation
-
Undo/Redo systems
-
Function call management
Queue (FIFO – First In First Out)
Operations:
-
enqueue()
-
dequeue()
Applications:
-
Scheduling
-
Simulation
-
Buffering systems
Students also understand:
-
Linked lists
-
Dynamic memory allocation
-
Pointers (if in C/C++)
Course Objectives
By the end of DSA 2, students should be able to:
✔ Design structured programs using functions
✔ Solve problems using recursion
✔ Store and retrieve data using files
✔ Implement stack and queue using arrays and linked lists
✔ Analyze basic time complexity
🧠 Why DSA 2 is Important
DSA 2 builds the foundation for:
-
Advanced algorithms
-
Graphs and trees
-
Databases
-
Operating systems
-
Artificial Intelligence
-
Software engineering
- Teacher: Mourad BELHADJ