This document provides an overview of an algorithms and data structures course. It includes the instructor's name and contact information. It outlines the topics that will be covered in the course, including fundamentals of algorithms, sorting and searching, stacks, queues, linked lists, trees, hashing, and graphs. It provides recommendations for reference books and describes the marking scheme for assignments, quizzes, exams, and projects.
2. My Profile
Name:
Syed Muhammad Raza
Education:
MSc Wireless Communication
LTH – Sweden , 2007-2009
BS Computer Information Sciences
PIEAS – Pakistan , 2002-2006
Contact Information:
Email: (Preferred mean of communication)
smraza@comsats.edu.pk
**(In subject of your email mention your semester and name, otherwise it will not be
entertained)
3. Rules
Take it seriously & you will prosper
Take it lightly & you will doom
4. Course Overview
Fundamentals of Algorithms
Review of Programming
Sorting and Searching
Stacks
Queues, Priority Queues and Circular Queues
Linked List
Trees
Hashing
Graphs
and much more …..
6. Recommended Books
Schaum Programming with Cplusplus by Seymour Lipschutz
Sams Teach Yourself Data Structures and Algorithms in 24 Hours, Lafore Robert
Data structures and algorithms, Alfred V. Aho, John E. Hopcroft.
Standish, Thomas A., Data Structures, Algorithms and Software Principles in C,
Addison-Wesley 1995, ISBN: 0-201-59118-9
Data Structures & Algorithm Analysis in C++, Weiss Mark Allen
7. Marks Distribution
Lab 25% of 100 Marks (Semester Project & Presentation)
Theory 75% of 100 Marks
Sessional 1 = 10 Marks
Sessional 2 = 15 Marks
Final Paper = 50 Marks
Assignment = 15 Marks
Quiz = 10 Marks (Surprise)
Total = 100 Marks
9. Quiz 1
Marks:2
Time: 15mins
Explain Abstract Data Types?
Explain difference between abstraction and
encapsulation?
If you have to write a code for swapping int values,
arrays will be appropriate solution or 2D arrays?
11. Problem Solving
Problem solving is the process of transforming the
description of a problem into the solution of that problem
by using our knowledge of the problem domain and by
relying on our ability to select and use appropriate
problem-solving strategies, techniques, and tools.
12. Algorithms
An Algorithm is a step by step solution to a problem
Why bother writing an algorithm
For your own use in the future - Don't have to rethink the
problem.
So others can solve the problem, even if they know very
little about the principles behind how the solution was
derived.
13. Examples of Algorithms
Washing machine instructions
Instructions for a ready-to-assemble piece of furniture
A Classic: GCD - Greatest Common Divisor - The
Euclidean Algorithm
14. Washing Machine Instructions
Separate clothes into white clothes and colored clothes.
For white clothes:
Set water temperature knob to HOT.
Place white laundry in tub.
For colored clothes:
Set water temperature knob to COLD
Place colored laundry in tub.
Add 1 cup of powdered laundry detergent to the tub.
Close lid and press the start button.
15. Observations
There are a finite number of steps.
We are capable of doing each of the instructions.
When we have followed all of the steps, the washing
machine will wash the clothes and then will stop.
Are all of the clothes clean ?
Do we want the washing machine to run until all of the
clothes are clean ?
16. Refinement of the Definition
Our old definition:
An algorithm is a step by step solution to a problem.
Adding our observations:
An algorithm is a finite set of executable instructions that directs a
terminating activity.
17. Instructions for a Ready-to-Assemble Furniture
"Align the marks on side A with the grooves on Part F “
Why are these instructions typically so hard to follow ?
Lack of proper tools - instructions are not executable
Which side is A ? A & B look alike. Both line up with Part F -
Ambiguous instructions.
18. Final Definition
An algorithm is a finite set of unambiguous, executable
instructions that directs a terminating activity.
19. History of Algorithms
The study of algorithms began as a subject in mathematics.
The search for algorithms was a significant activity of early
mathematicians.
Goal: To find a single set of instructions that could be used to solve
any problem of a particular type.
20. GCD- Euclidean Algorithm
Assign M and N the value of the larger and the value of the smaller
of the two positive integer input values, respectively.
Divide M by N and call the remainder R.
If R is not 0, then assign M the value of N, assign N the value of R
and return to step 2, otherwise the greatest common divisor is the
value currently assigned to N.
21. Finding GCD of 24 & 9
MNR
24 9 6
963
630
So 3 is the GCD of 24 and 9.
Do we need to know the theory that Euclid used to come up with this
algorithm in order to use it ?
What intelligence is required to find the GCD using this algorithm ?
22. Idea Behind the Algorithms
Once an algorithm behind a task has been discovered
Don't need to understand the principles.
Task is reduced to following the instructions.
Intelligence is "encoded into the algorithm"
23. Algorithm Representation
Syntax and Semantics
Syntax refers to the representation itself.
Semantics refers to the concept represented.