Lecture 1 Data Structures & Algorithm CS-102 Lecturer: Syeda Nazia Ashraf 1.

Slides:



Advertisements
Similar presentations
MATH 224 – Discrete Mathematics
Advertisements

Lecture3: Algorithm Analysis Bohyung Han CSE, POSTECH CSED233: Data Structures (2014F)
CSC401 – Analysis of Algorithms Lecture Notes 1 Introduction
© 2004 Goodrich, Tamassia 1 Lecture 01 Algorithm Analysis Topics Basic concepts Theoretical Analysis Concept of big-oh Choose lower order algorithms Relatives.
Analysis of Algorithms Algorithm Input Output. Analysis of Algorithms2 Outline and Reading Running time (§1.1) Pseudo-code (§1.1) Counting primitive operations.
Complexity Analysis (Part I)
Analysis of Algorithms1 CS5302 Data Structures and Algorithms Lecturer: Lusheng Wang Office: Y6416 Phone:
Analysis of Algorithms (Chapter 4)
Analysis of Algorithms1 Estimate the running time Estimate the memory space required. Time and space depend on the input size.
Analysis of Algorithms
Fall 2006CSC311: Data Structures1 Chapter 4 Analysis Tools Objectives –Experiment analysis of algorithms and limitations –Theoretical Analysis of algorithms.
Analysis of Algorithms1 CS5302 Data Structures and Algorithms Lecturer: Lusheng Wang Office: Y6416 Phone:
Introduction - The Need for Data Structures Data structures organize data –This gives more efficient programs. More powerful computers encourage more complex.
Instructor: Dr. Sahar Shabanah Fall Lectures ST, 9:30 pm-11:00 pm Text book: M. T. Goodrich and R. Tamassia, “Data Structures and Algorithms in.
CS2210 Data Structures and Algorithms Lecture 2:
CS223 Algorithms D-Term 2013 Instructor: Mohamed Eltabakh WPI, CS Introduction Slide 1.
Lecture No.01 Data Structures Dr. Sohail Aslam
Week 2 CS 361: Advanced Data Structures and Algorithms
CSCE 3110 Data Structures & Algorithm Analysis Algorithm Analysis I Reading: Weiss, chap.2.
Basic Concepts 2014, Fall Pusan National University Ki-Joune Li.
Analysis of Algorithms
Analysis of Algorithms1 The Goal of the Course Design “good” data structures and algorithms Data structure is a systematic way of organizing and accessing.
Unit III : Introduction To Data Structures and Analysis Of Algorithm 10/8/ Objective : 1.To understand primitive storage structures and types 2.To.
Dr. Engr. Sami ur Rahman Assistant Professor Department of Computer Science University of Malakand Data Structure: Introduction.
© 2011 Pearson Addison-Wesley. All rights reserved 10 A-1 Chapter 10 Algorithm Efficiency and Sorting.
Prepared By Ms.R.K.Dharme Head Computer Department.
Major objective of this course is: Design and analysis of modern algorithms Different variants Accuracy Efficiency Comparing efficiencies Motivation thinking.
Analysis of algorithms. What are we going to learn? Need to say that some algorithms are “better” than others Criteria for evaluation Structure of programs.
CES 592 Theory of Software Systems B. Ravikumar (Ravi) Office: 124 Darwin Hall.
DATA STRUCTURES (CS212D) Overview & Review Instructor Information 2  Instructor Information:  Dr. Radwa El Shawi  Room: 
Onlinedeeneislam.blogspot.com1 Design and Analysis of Algorithms Slide # 1 Download From
BITS Pilani Pilani Campus Data Structure and Algorithms Design Dr. Maheswari Karthikeyan Lecture1.
Announcement We will have a 10 minutes Quiz on Feb. 4 at the end of the lecture. The quiz is about Big O notation. The weight of this quiz is 3% (please.
Chapter 3 Chapter Summary  Algorithms o Example Algorithms searching for an element in a list sorting a list so its elements are in some prescribed.
GC 211:Data Structures Week 2: Algorithm Analysis Tools Slides are borrowed from Mr. Mohammad Alqahtani.
1 COMP9024: Data Structures and Algorithms Week Two: Analysis of Algorithms Hui Wu Session 2, 2014
Lecture 1 Data Structures Aamir Zia. Introduction Course outline Rules and regulations Course contents Good Programming Practices Data Types and Data.
Introduction To Algorithm and Data Structures Course Teacher: Moona Kanwal -Algorithm Design -Algorithm Analysis -Data structures -Abstract Data Type.
Data Structures I (CPCS-204) Week # 2: Algorithm Analysis tools Dr. Omar Batarfi Dr. Yahya Dahab Dr. Imtiaz Khan.
Mohammed I DAABO COURSE CODE: CSC 355 COURSE TITLE: Data Structures.
Advanced Data Structures Lecture 1
Introduction toData structures and Algorithms
2017, Fall Pusan National University Ki-Joune Li
Algorithm Analysis 1.
CSCE 210 Data Structures and Algorithms
Analysis of Algorithms
Advanced Algorithms Analysis and Design
COMP9024: Data Structures and Algorithms
GC211Data Structure Lecture2 Sara Alhajjam.
DATA STRUCTURES AND OBJECT ORIENTED PROGRAMMING IN C++
Analysis of Algorithms
COMP9024: Data Structures and Algorithms
Analysis of Algorithms
Data Structures (CS212D) Overview & Review.
Algorithm An algorithm is a finite set of steps required to solve a problem. An algorithm must have following properties: Input: An algorithm must have.
Objective of This Course
Analysis of Algorithms
Analysis of Algorithms
2018, Fall Pusan National University Ki-Joune Li
COSC 320 Advanced Data Structures and Algorithm Analysis
Analysis of Algorithms
Analysis of Algorithms
Data Structures (CS212D) Overview & Review.
Introduction to Data Structures
Revision of C++.
Analysis of Algorithms
Design and Analysis of Algorithms
Analysis of Algorithms
2019, Fall Pusan National University Ki-Joune Li
Presentation transcript:

Lecture 1 Data Structures & Algorithm CS-102 Lecturer: Syeda Nazia Ashraf 1

Instructor: Syeda Nazia Ashraf Lecturer, Computer Science in CS Department, SMIU, Karachi M.Engg. in Computer Systems from NED University, Karachi BS Computer Engg. from SSUET, Karachi More than 2 years Teaching Experience in FUUAST, Karachi 2

Course Outline Introduction to data structures Linked Lists Doubly Linked List, Circular Link List Stack using Linked List Infix to Post Fix, Post Fix to Infix Queues, Queues using Array Priority Queue, Trees Application of Binary Tree, Traversing a Binary Tree Recursion (Pre order, In order), Level order Traversal Binary Search Tree, Degenerate Binary Search Tree 3

Course Outline (Cont.) Balanced Binary Tree, Expression Tree, Complete Binary Tree Heap Hashing Binary Search Sorting Algorithms (Selection, Insertion, Bubble) NlogN Algorithms (Divide and Conquer, Merge Sort, Quick Sort) Algorithm Complexity Dynamic Programming Greedy Algorithm 4

Grading Quiz & Assignment = 20 Lab = 20 Midterm = 20 Final Exam = 40 Course Web Page: lms.smiu.edu.pk 5

Text Book: Programme Design with Pseudo-code, Bailey and Lundgaard, Brooks/Cole Publishing, 1988 Reference Books: Simple Programme Design: A step-by-step approach, 4/e, Lesley Anne Robertson, ISBN: © Theory and Problems of Data Structures, Schaum’s Outline Series Data Structures and their Implementations, Robert J. Baron, Linda G. Shapiro 6

Goals of this Course Learn the commonly used data structures. How to design good algorithms. Cover well-known data structures such as dynamic arrays, linked lists, stacks, queues, tree and graphs. Implement data structures and algorithms in C/C++ code. 7

An algorithm is a set of rules for carrying out calculation either by hand or on a machine An algorithm is a finite step-by-step procedure to achieve a required result An algorithm is a sequence of computational steps that transform the input into the output. An algorithm is a sequence of operations performed on data that have to be organized in data structures. Algorithm 8

Why Study Algorithm A good understanding of Algorithm Design is a central element to a good understanding of computer science and computer programming. They apply these to various applications: - Compilers, - Operating Systems, - Data bases, - Artificial Intelligence, - Computer Graphics and Vision, - Networks, etc. 9

Algorithm Design Algorithmic is a branch of computer science that consists of designing and analyzing computer algorithms The “design” pertain to – The description of algorithm at an abstract level by means of a pseudo language, and – Proof of correctness that is, the algorithm solves the given problem in all cases. The “analysis” deals with performance evaluation (complexity analysis). 10

Algorithm Performance Analysis Does the program efficiently use primary and secondary storage? Is the program running time acceptable for the task? Space Complexity – The space complexity of a program is the measure of the amount of memory that it needs to run to completion Time complexity – The Time complexity of a program is the measure of the amount of computer time it needs to run to completion 11

Performance Estimation How to determine which algorithm is better? We need some mechanism to predict the performance with out actually executing the program Mechanism should be independent of the compiler and underlying hardware 12

Algorithm Analysis The complexity of an algorithm is a function g(n) that gives bound of the number of operation (or running time) performed by an algorithm when the input size is n There are two interpretations of bound. Worst-case Complexity – The running time for any given size input will be lower than the upper bound except possibly for some values of the input where the maximum is reached. Big O is used to calculate the worst case complexity for an algorithm Average-case Complexity – The running time for any given size input will be the average number of operations over all problem instances for a given size Best-case complexity – The best case of the algorithm is the function is defined by the minimum number of steps taken on any instance of size n. 13

Big-Oh(O) Determining the exact step count of the program can be very difficult task Because of the exactness of the definition of the step, exact step count is not very useful for comparative purposes E.g. which one is better – 45n+3 or 100n+10 We use some asymptotic notation for measure of growth 14

Some useful Big-O estimates O(1): constant O(log(n)): Logarithm O(n): Linear O(nlog(n)): Log Linear O(n 2 ): Quadratic O(n 3 ):cubic O(2 n ):exponential 15

Pseudocode High-level description of an algorithm More structured than English prose Less detailed than a program Preferred notation for describing algorithms Hides program design issues Algorithm arrayMax(A, n) Input array A of n integers Output maximum element of A currentMax := A[0] for i :=1 to n  1 do if A[i]  currentMax then currentMax := A[i] End if End for return currentMax Example: find max element of an array 16

Pseudocode Details Control flow – if … then … [else …] – while … do … – repeat … until … – for … do … – Indentation replaces braces Method declaration Algorithm method (arg [, arg…]) Input … Output … Method call var.method (arg [, arg…]) Return value return expression Expressions  Assignment (like  in Java)  Equality testing (like  in Java) n 2 Superscripts and other mathematical formatting allowed 17

Psuedocode-Another Example CheckInBook(library, book, fineSlip) Function: Checks in a book Input: A Record of library, A book as String, Output: fineSlip as String, updated record of library precondition: book was checked out of this library, book is presented at the check-in-desk postcondition: fineSlip is issued if the book is overdue, contents of the library are the original contents of book 18

Algorithm: 1. Examine due date to see whether the book is late 2. if the book is late a. calculate fine b. Issue fineSlip 3. Update library records to show that the book has been returned 4. check reserve list to see if someone is waiting for the book 5. If book is on reserve list a. put the book on the reserve shelf 6. Else a. Replace the book on the proper shelf, according to the library shelf arrangement scheme 19

The primary objective of programming is to efficiently process the input to generate the desired output We can achieve this objective in an efficient and neat style if the input data is organized in a way to help us meet our goal Data structures is nothing but ways and means of organizing data so that it can be processed easily and efficiently Data structure dictate the manner in which the data can be processed. In other words the choice of an algorithm depends upon the underlying data organization Data structures 20

Need for Data Structures  Data structures organize data  more efficient programs.  More powerful computers  more complex applications.  More complex applications demand more calculations. 21

Organizing Data  Any organization for a collection of records that can be searched, processed in any order, or modified.  The choice of data structure and algorithm can make the difference between a program running in a few seconds or many days. 22

Efficiency  A solution is said to be efficient if it solves the problem within its resource constraints. –Space –Time  The cost of a solution is the amount of resources that the solution consumes. 23

Selecting a Data Structure Select a data structure as follows: 1.Analyze the problem to determine the resource constraints a solution must meet. 2.Determine the basic operations that must be supported. Quantify the resource constraints for each operation. 3.Select the data structure that best meets these requirements. 24

Data Structure Philosophy  Each data structure has costs and benefits.  Rarely is one data structure better than another in all situations.  A data structure requires: –space for each data item it stores, –time to perform each basic operation, –programming effort. 25

26

Arrays  Array declaration: int x[6];  An array is collection of cells of the same type.  The collection has the name ‘x’.  The cells are numbered with consecutive integers.  To access a cell, use the array name and an index: x[0], x[1], x[2], x[3], x[4], x[5] 27

Array Layout (Linear-array) x[1] x[2] x[3] x[4] x[5] x[0] Array cells are contiguous in computer memory The memory can be thought of as an array 28

Linear(1-Dimensional Array) A linear array A[8] consisting of numbers is pictured in following figure. 29

2-DIMENSIONAL ARRAY SALES is the name given to the Array 30

2-Dimensional Array 31

Link List 32

Tree 33

34

Data Structure Operations 35

Data Abstraction and Abstract Data Types (ADT) A data type is a template for objects and a set of operations that define the behavior of the objects ( or Instances) of that type. An abstract Data Type (ADT) is a data type in which the implementation details are hidden and the user is concerned with the properties ( or behavior) of that type. An ADT has two components: - Interface (the behavior) - Implementation Example: - int, float 36

Implementation Abstract Data Type The data structures used to implement the data type can only be accessed through the interface. Any change in the implementation does not change the user programs as long as the interface remains the same This is also known as the data encapsulation or data abstraction. Interface 1 Interface 2 Interface 3 Interface 4 Implementation 37

38