CSC 421: Algorithm Design & Analysis

Slides:



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

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.
Introduction To System Analysis and Design
1 ES 314 Advanced Programming Lec 2 Sept 3 Goals: Complete the discussion of problem Review of C++ Object-oriented design Arrays and pointers.
DAST, Spring © L. Joskowicz 1 Data Structures – LECTURE 1 Introduction Motivation: algorithms and abstract data types Easy problems, hard problems.
New Mexico Computer Science For All Introduction to Algorithms Maureen Psaila-Dombrowski.
Introduction - The Need for Data Structures Data structures organize data –This gives more efficient programs. More powerful computers encourage more complex.
1 A Introduction to Data Structures and Algorithm Analysis Data Structures Asst. Professor Kiran Soni.
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:
Data Structures Lecture 1: Introduction Azhar Maqsood NUST Institute of Information Technology (NIIT)
Program Design CMSC 201. Motivation We’ve talked a lot about certain ‘good habits’ we’d like you guys to get in while writing code. There are two main.
Introduction To System Analysis and Design
1 CSC 222: Computer Programming II Spring 2004 See online syllabus at: Course goals:
1 CS 350 Data Structures Chaminade University of Honolulu.
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:
Data Structures and Algorithms in Java AlaaEddin 2012.
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)]
Data Structures Dr. Abd El-Aziz Ahmed Assistant Professor Institute of Statistical Studies and Research, Cairo University Springer 2015 DS.
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.
CSC 421: Algorithm Design & Analysis
CSCE 210 Data Structures and Algorithms
CSC 427: Data Structures and Algorithm Analysis
CSC 222: Object-Oriented Programming
Chapter 0: Introduction
CSC 222: Object-Oriented Programming
CSC 222: Computer Programming II
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
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
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.
Administrivia- Introduction
Introduction to Data Structure
CSC 321: Data Structures Fall 2018
Administrivia- Introduction
COP3530- Data Structures Introduction
Final Review B.Ramamurthy 5/8/2019 BR.
Design and Analysis of Algorithms (04 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.
Presentation transcript:

CSC 421: Algorithm Design & Analysis Spring 2015 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-8 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 DAVE  …  REED COLE  …  SEAN 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? DAVE  …  REED COLE  …  SEAN

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

HW1: Java & DS review 2-part assignment – NO LATE ASSIGNMENTS ACCEPTED GOAL 1: get you back up to speed with programming GOAL 2: identify gaps in your skills/knowledge & address them GOAL 3: get you into the habit of coming to my office for assistance sign up for 15-min consultations on Mon 1/19 and 1/26 both parts process a file of invoice records of form: MM-DD-YYYY CUSTOMER_ID UNITS PRICE SALES_ID 01-01-2015 Smith1024 100 8.99 TWalker 01-06-2015 Zander99 1500 5.99 SMiller 01-01-2015 Smith1024 200 8.99 JVaska 12-20-2014 Bell222 1 12.99 Twalker

HW1 details for part A: for part B: helper Invoice class is provided read in invoice file output invoices in order (by date) also output unit & sales totals for part B: read an invoice file repeatedly prompt for a salesperson for that salesperson: output invoices in order helper Invoice class is provided