Design and Analysis of Algorithms 4 th Semester Computer Engineering Spring 2016 Conf.dr.ing. Ioana Ṣ ora

Slides:



Advertisements
Similar presentations
Design & Analysis of Algoritms
Advertisements

Analysis & Design of Algorithms (CSCE 321)
Data Structures & Algorithms What The Course Is About s Data structures is concerned with the representation and manipulation of data. s All programs.
CS333/ Topic 11 CS333 - Introduction CS333 - Introduction General information Goals.
CS 206 Introduction to Computer Science II 04 / 29 / 2009 Instructor: Michael Eckmann.
Data Structures, Spring 2004 © L. Joskowicz 1 DAST – Final Lecture Summary and overview What we have learned. Why it is important. What next.
CSE 589 Applied Algorithms Course Introduction. CSE Lecture 1 - Spring Instructors Instructor –Richard Ladner –206.
1 Algorithm Design Techniques Greedy algorithms Divide and conquer Dynamic programming Randomized algorithms Backtracking.
Lecture 30 CSE 331 Nov 10, Online Office Hours
DAST, Spring © L. Joskowicz 1 Data Structures – LECTURE 1 Introduction Motivation: algorithms and abstract data types Easy problems, hard problems.
Algorithm design techniques
Irene Díaz 1, Camino R. Vela 1 1 Computer Science Department. University of Oviedo (SPAIN) s 1.
Data Structures and Programming.  John Edgar2.
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.
Nattee Niparnan Dept. of Computer Engineering, Chulalongkorn University.
Teaching Teaching Discrete Mathematics and Algorithms & Data Structures Online G.MirkowskaPJIIT.
CS223 Algorithms D-Term 2013 Instructor: Mohamed Eltabakh WPI, CS Introduction Slide 1.
ISE420 Algorithmic Operations Research Asst.Prof.Dr. Arslan M. Örnek Industrial Systems Engineering.
Lecture 12-2: Introduction to Computer Algorithms beyond Search & Sort.
Data Structures Lecture 1: Introduction Azhar Maqsood NUST Institute of Information Technology (NIIT)
Lecture No.01 Data Structures Dr. Sohail Aslam
1 CS 233 Data Structures and Algorithms 황승원 Fall 2010 CSE, POSTECH.
COMPE 574 Fundamentals of Algorithms Spring Murat KARAKAYA Department of Computer Engineering.
Introduction to CMPT 225. What’s on the menu? Grading Course content Who’s who The story of life.
Course Web Page Most information about the course (including the syllabus) will be posted on the course wiki:
Instructor Information: Dr. Radwa El Shawi Room: Week # 1: Overview & Review.
DATA STRUCTURES (CS212D) Week # 1: Overview & Review.
10/20/20151 CS 3343: Analysis of Algorithms Review for final.
Design and Analysis of Algorithms 4 th Semester Computer Engineering Spring 2015 Conf.dr.ing. Ioana Sora
Data Structures (Second Part) Lecture 1 Bong-Soo Sohn Assistant Professor School of Computer Science and Engineering Chung-Ang University.
Major objective of this course is: Design and analysis of modern algorithms Different variants Accuracy Efficiency Comparing efficiencies Motivation thinking.
Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University Cpt S 223 – Advanced Data Structures Course Introduction.
CS-2851 Dr. Mark L. Hornick 1 CS-2852 Data Structures Dr. Mark L. Hornick Office: L341 Phone: web: people.msoe.edu/hornick/
+ Review CS302 Spring 2013 David Kauchak. + Admin Final posted on the course web page on Monday due Sunday at 11:59pm time-boxed (3-4 hours) You may use:
December 4, Algorithms and Data Structures Lecture XV Simonas Šaltenis Aalborg University
CS223 Advanced Data Structures and Algorithms 1 Review for Final Neil Tang 04/27/2010.
Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University Cpt S 223 – Advanced Data Structures Course Introduction.
HKOI 2005 Training Introduction to Algorithms Alan, Tam Siu Lung.
1 BIM304: Algorithm Design Time: Friday 9-12am Location: B4 Instructor: Cuneyt Akinlar Grading –2 Midterms – 20% and 30% respectively –Final – 30% –Projects.
Design and Architecture of Complex Software Systems 3 rd year, Software Engineering Conf.dr.ing. Ioana Şora
Design and Analysis of Algorithms (09 Credits / 5 hours per week) Sixth Semester: Computer Science & Engineering M.B.Chandak
1 Data Structures CSCI 132, Spring 2014 Lecture 1 Big Ideas in Data Structures Course website:
Lecture 8 CSE 331. Main Steps in Algorithm Design Problem Statement Algorithm Problem Definition “Implementation” Analysis n! Correctness+Runtime Analysis.
CSE 326 Course Review David Kaplan Dept of Computer Science & Engineering Autumn 2001.
Lecture # 1 Introduction Analysis of Algorithm by Qamar Abbas Analysis of Algorithms.
Data Structures and Algorithms in Java AlaaEddin 2012.
DATA STRUCTURES (CS212D) Overview & Review Instructor Information 2  Instructor Information:  Dr. Radwa El Shawi  Room: 
Design and Analysis of Algorithms Introduction Instructors:1. B V Kiran Mayee, 2. A Madhavi
Course Review Fundamental Structures of Computer Science Margaret Reid-Miller 28 April 2005.
Design and Analysis of Algorithms Faculty Name : Ruhi Fatima Course Description This course provides techniques to prove.
1 COMP9007 – Algorithms Course page: + Blackboard link Lecturer: M.Reza Hoseiny M.Reza Hoseiny Level.
Advanced Algorithms Analysis and Design
Design and Analysis of Algorithms (09 Credits / 5 hours per week)
CS 583 Fall 2006 Analysis of Algorithms
CS 3343: Analysis of Algorithms
Data Structures (CS212D) Overview & Review.
Algorithm Design and Analysis
CS 3343: Analysis of Algorithms
Definition In simple terms, an algorithm is a series of instructions to solve a problem (complete a task) We focus on Deterministic Algorithms Under the.
CS 3343: Analysis of Algorithms
Objective of This Course
CS 3343: Analysis of Algorithms
Data Structures (CS212D) Overview & Review.
Algorithm Design and Analysis
Administrivia- Introduction
COMPSCI 330 Design and Analysis of Algorithms
Administrivia- Introduction
Design and Analysis of Algorithms
COMPSCI 330 Design and Analysis of Algorithms
COMP 122 – Design and Analysis of Algorithms
Presentation transcript:

Design and Analysis of Algorithms 4 th Semester Computer Engineering Spring 2016 Conf.dr.ing. Ioana Ṣ ora

design algorithms that are correct and efficient Our goal:

The Need for Correctness Much too often, algorithms are designed in an ad-hoc manner and “validated” through testing on a few particular data sets …

Example of a “sorting algorithm” The algorithm: A:array[1..n] of integer for i=1 to n-1 do if A[i]>A[i+1] swap(A[i], A[i+1]) The “tests”: But it does not work for 3, 2, 1, 5, 4 ! 5, 1, 2, 7, 6 15, 2, 4, 17,16

The Need for Correctness Much too often, algorithms are designed in an ad-hoc manner and “validated” through testing on a few particular data sets … The fact that an algorithm passed a number of tests on certain data sets DOES NOT guarantee that the algorithm is correct The fact that an algorithm fails a test on ONE data set proves that it is NOT correct

The Bubblesort Algorithm A:array[1..n] of integer for lim:=n downto 2 for i:=1 to lim-1 do if A[i]>A[i+1] swap(A[i], A[i+1]) How can we know for sure that the algorithm is correct ? (Other than simply believing the programming textbooks ;-)) –….we will learn this later in this course !

Now that we have a correct algorithm … Implement it Run the program and extensively test it with arrays of 10 numbers Be happy that everything is fine But: Run the program on an array of numbers … Is it necessary to implement an algorithm to see that it takes too long for big sizes or can we predict this ?

Analyzing Algorithms We need methods and metrics to analyze algorithms for: –Correctness Methods for proving correctness –Efficiency Time complexity, Asymptotic analysis

Designing Algorithms Ok, so you will know (will learn) how to analyze a given algorithm. But where do these algorithms come from ? –Clever people already designed a plethora of solutions (algorithms) for different problems and we find them in textbooks, internet, etc. –But how will you design solutions for new problems ?

How to learn algorithms ?

Prim’s algorithm Dijkstra’s algorithm Tarjan’s algorithm Floyd’s algorithm Kruskal’s algorithm Design methods: Greedy Design by Induction Divide and Conquer Dynamic Programming

What about data structures ? Fundamental data structures: –Model fundamental data lists, queues, graphs Special data structures: –Created to optimize a specific (set of) operation(s) for a specific context Search trees, balanced trees Optimal trees Disjoint sets

Course Goals Learn to design algorithms that are correct and efficient –How do we know that: an algorithm is correct ? -> correctness proofs an algorithm is efficient ? -> analysis of algorithms (time complexity) –How to design solutions for new problems ? Learning general techniques for design Studying a set of well-known algorithms, to serve as examples of success stories for applying general design techniques Become aware that good algorithms are key parts of software engineering practice !

Course Schedule Review: Analysis Data structures: Search Trees, Balanced trees, Augmented data structures, Graphs Proving Correctness of Algorithms. Induction Design of Algorithms by Induction Dynamic Programming Great algorithms in real life problems: –Data compression –Search engines

Textbooks [CLRS] [Unlocked] [Manber] [McCormick]

Course Webpage All official information related to the Algorithm Design and Analysis classes:

Lab Assignments Comprise different types of exercises: –Questions - to be solved with pen on paper –Simple implementation problems - implement something that was described in the course –Algorithm design problems This kind of assignments require to: –Describe the proposed algorithm –Analyze your algorithm (prove correctness and efficiency) –Implement the algorithm –Tool projects Complex projects containing also a part of algorithm design and implementation They are optional, but: in order to get a 10 for the lab activity, you have to do at least one tool project

Examination and Grading Final grade = 2/3 final written exam + 1/3 work during the semester Written exam: – Questions and Algorithm design problems (such as these the lab description above) Work during the semester: –Lab assignments –Lab quizzes –Tool project (for 10) Optional bonus points: for exceptional activity = doing more than one optional tool project during the semester, you can gain extra-points to the grade of your final written exam