CSC 421: Algorithm Design & Analysis

Slides:



Advertisements
Similar presentations
PROGRAMMING LANGUAGE (JAVA) UNIT 42 BY ROBERT BUTTERFIELD TELEPHONE Data Structures and Algorithms.
Advertisements

Analysis & Design of Algorithms (CSCE 321)
1 CSC 421: Algorithm Design & Analysis Spring 2013 See online syllabus: (also on BlueLine2) Course.
1 CSC 221: Computer Programming I Fall 2006 See online syllabus (also accessible via Blackboard): Course goals:  To develop.
CSCE 210 Data Structures and Algorithms
Data Structures & Algorithms What The Course Is About s Data structures is concerned with the representation and manipulation of data. s All programs.
1 ES 314 Advanced Programming Lec 2 Sept 3 Goals: Complete the discussion of problem Review of C++ Object-oriented design Arrays and pointers.
TK3043 Analysis and Design of Algorithms Introduction to Algorithms.
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.
Teaching Teaching Discrete Mathematics and Algorithms & Data Structures Online G.MirkowskaPJIIT.
1 CSC 427: Data Structures and Algorithm Analysis Fall 2011 See online syllabus (also available through BlueLine): Course goals:
Top-Down Design and Modular Development
Introduction To System Analysis and Design
1 CSC 222: Computer Programming II Spring 2004 See online syllabus at: Course goals:
1 CSC 427: Data Structures and Algorithm Analysis Fall 2010 See online syllabus (also available through BlueLine): Course goals:
Major objective of this course is: Design and analysis of modern algorithms Different variants Accuracy Efficiency Comparing efficiencies Motivation thinking.
1 CSC 222: Object-Oriented Programming Spring 2013 Course goals:  To know and use basic Java programming constructs for object- oriented problem solving.
1 CSC 321: Data Structures Fall 2013 See online syllabus (also available through BlueLine2): Course goals:  To understand.
Data Structures Lecture 1: Introduction. Course Contents Data Types   Overview, Introductory concepts   Data Types, meaning and implementation  
Data Structures and Algorithms Dr. Tehseen Zia Assistant Professor Dept. Computer Science and IT University of Sargodha Lecture 1.
1 CSC 427: Data Structures and Algorithm Analysis Fall 2006 See online syllabus (also available through Blackboard): Course goals:
1 Data Structures CSCI 132, Spring 2014 Lecture 1 Big Ideas in Data Structures Course website:
Topic 2 Collections. 2-2 Objectives Define the concepts and terminology related to collections Discuss the abstract design of collections.
Introduction to Objects and Encapsulation Computer Science 4 Mr. Gerb Reference: Objective: Understand Encapsulation and abstract data types.
Design and Analysis of Algorithms Introduction Instructors:1. B V Kiran Mayee, 2. A Madhavi
CSC 143T 1 CSC 143 Highlights of Tables and Hashing [Chapter 11 p (Tables)] [Chapter 12 p (Hashing)]
Lecture 1 Data Structures Aamir Zia. Introduction Course outline Rules and regulations Course contents Good Programming Practices Data Types and Data.
 The Object Oriented concepts was evolved for solving complex problems. Object- oriented software development started in the 1980s. Object-oriented design.
Mohammed I DAABO COURSE CODE: CSC 355 COURSE TITLE: Data Structures.
CSCE 210 Data Structures and Algorithms
Advanced Algorithms Analysis and Design
CSC 427: Data Structures and Algorithm Analysis
CSC 222: Object-Oriented Programming
Design and Analysis of Algorithms (09 Credits / 5 hours per week)
CSC 222: Object-Oriented Programming
CSC 222: Computer Programming II
CSC 421: Algorithm Design & Analysis
TK3043 Analysis and Design of Algorithms
CSC 321: Data Structures Fall 2016
CSc 020: Programming Concepts and Methodology II
CSC 321: Data Structures Fall 2017
Inheritance Allows extension and reuse of existing code
CSC 221: Computer Programming I Spring 2010
CSC 221: Computer Programming I Fall 2005
Chapter 1 Introduction Copyright © 2007 Pearson Addison-Wesley. All rights reserved.
What is an algorithm? An algorithm is a sequence of unambiguous instructions for solving a problem, i.e., for obtaining a required output for any legitimate.
What is an algorithm? An algorithm is a sequence of unambiguous instructions for solving a problem, i.e., for obtaining a required output for any legitimate.
CSC 321: Data Structures Fall 2015
CSC 421: Algorithm Design & Analysis
CSC 222: Object-Oriented Programming
Lecture 2 of Computer Science II
CSC 421: Algorithm Design & Analysis
What is an algorithm? An algorithm is a sequence of unambiguous instructions for solving a problem, i.e., for obtaining a required output for any legitimate.
Object-Oriented Programming
Design and Analysis of Algorithms (07 Credits / 4 hours per week)
What is an algorithm? An algorithm is a sequence of unambiguous instructions for solving a problem, i.e., for obtaining a required output for any legitimate.
Objective of This Course
Introduction to Computer Science for Majors II
Review CSE116 2/21/2019 B.Ramamurthy.
Introduction to Data Structure
Trevor Brown DC 2338, Office hour M3-4pm
CSC 321: Data Structures Fall 2018
Sudoku.
COP3530- Data Structures Introduction
Final Review B.Ramamurthy 5/8/2019 BR.
Design and Analysis of Algorithms (04 Credits / 4 hours per week)
Chapter 1 Introduction Copyright © 2007 Pearson Addison-Wesley. All rights reserved.
What is an algorithm? An algorithm is a sequence of unambiguous instructions for solving a problem, i.e., for obtaining a required output for any legitimate.
Presentation transcript:

CSC 421: Algorithm Design & Analysis Spring 2017 See online syllabus: http://dave-reed.com/csc421 (also on BlueLine) Course goals: To appreciate the role of algorithms in problem solving and software design, recognizing that a given problem might be solved with a variety of algorithms. To be capable of selecting among competing algorithms and justifying their selection based on efficiency. To be capable of selecting and utilizing appropriate data structures in implementing algorithms as computer programs. To develop programs using different problem-solving approaches (divide-and-conquer, backtracking, dynamic programming), and be able to recognize when one approach is a better fit for a given problem. To design and implement programs to model real-world systems, and subsequently analyze their behavior.

Your programming evolution… 221: programming in the small focused on the design & implementation of small programs introduced fundamental programming concepts variables, assignments, expressions, I/O control structures (if, if-else, while, for), strings, lists functions, parameters, OO philosophy you should be familiar with these concepts (we will do some review next week, but you should review your own notes & text) 222: programming in the medium focused on the design & analysis of more complex programs introduced object-oriented approach classes, objects, fields, methods, object composition, libraries interfaces, inheritance, polymorphism, system modeling searching & sorting, Big-Oh efficiency, recursion, GUIs 321: programming in the larger focus on more complex problems where data structure choices matter introduce standard data structures, design techniques, performance analysis stacks, queues, sets, maps, linked structures, trees, graphs, hash tables algorithm design, data structure selection/comparison/analysis algorithm analysis, recurrence relations, counting & proof techniques

421: programming in the even larger still not developing large-scale, multi-programmer systems see CSC 548, CSC 599 we will tackle medium-sized (3-10 interacting classes) projects in which there may be multiple approaches, with different performance characteristics the choice of algorithm and accompanying data structure is important the wrong choice can make a solution infeasible we will consider multiple design paradigms and problem characteristics that suggest which paradigm to apply brute force, decrease & conquer, divide & conquer, transform & conquer greedy algorithms, backtracking, dynamic programming, space/time tradeoffs we will also study the notions of computability and feasibilty P vs. NP, NP-hard problems, approximation algorithms

When problems start to get complex… …choosing the right algorithm and data structures are important e.g., phone book lookup, checkerboard puzzle must develop problem-solving approaches (e.g., divide&conquer, backtracking) be able to identify appropriate data structures (e.g., lists, trees, sets, maps) EXAMPLE: solving a Sudoku puzzle need to be able to represent the grid devise an algorithm to fill in the blanks so that every row, column & subsquare contains 1-9 how do you solve Sudoku puzzles? should the computer use the same approach? how complicated/fast would it be?

Another example NICK  …  WINS DAVE  …  REED word ladders are puzzles in which you are to bridge from one word to another by changing only one letter need to be able to read and store a dictionary need to find a (shortest?) sequence between two words in doing so, need to recognize when words differ by 1 letter how do you complete a word ladder? should the computer use the same approach? how complicated/fast would it be? NICK  …  WINS DAVE  …  REED

Another example suppose you are given a set of integers (positive and negative) { 4, -9, 3, 4, -1, -5, 8 } is there a subset of integers that add up to 0? this is known as the subset sum problem it turns out that there is no known efficient algorithm to solve this may have to exhaustively try every possible subset of numbers how many subsets of N items can there be?

OOP and code reuse when solving large problems, code reuse is important designing, implementing, and testing large software projects is HARD whenever possible, want to utilize existing, debugged code reusable code is: clear and readable (well documented, uses meaningful names, no tricks) modular (general, independent routines – test & debug once, then reuse) OOP is the standard approach to software engineering philosophy: modularity and reuse apply to data as well as functions when solving a problem, must identify the objects involved e.g., banking system: customer, checking account, savings account, … develop a software model of the objects in the form of abstract data types (ADTs) a program is a collection of interacting software objects can utilize inheritance to derive new classes from existing ones