Algorithm Design.

Slides:



Advertisements
Similar presentations
Chapter 13 Review Questions
Advertisements

Data Structures & Algorithms Richard Newman Clip Art Sources s s s s
Software Architecture Design Instructor: Dr. Jerry Gao.
Application architectures
Asper School of Business University of Manitoba Systems Analysis & Design Instructor: Bob Travica System architectures Updated: November 2014.
Course Instructor: Aisha Azeem
Operating Systems Concepts 1. A Computer Model An operating system has to deal with the fact that a computer is made up of a CPU, random access memory.
Tiered architectures 1 to N tiers. 2 An architectural history of computing 1 tier architecture – monolithic Information Systems – Presentation / frontend,
Client-Server Processing and Distributed Databases
Application architectures
Chapter 2 Database System Concepts and Architecture
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 13 Slide 1 Application architectures.
University of Toronto at Scarborough © Kersti Wain-Bantin CSCC40 system design 1 what is systems design? preparation of the system’s specifications with.
The Design Discipline.
Design Patterns OOD. Course topics Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples) Design Principles.
1 CMPT 275 High Level Design Phase Architecture. Janice Regan, Objectives of Design  The design phase takes the results of the requirements analysis.
SAMANVITHA RAMAYANAM 18 TH FEBRUARY 2010 CPE 691 LAYERED APPLICATION.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
Service Oriented Architecture CCT355H5 Professor Michael Jones Suezan Makkar.
Chapter 2 Database System Concepts and Architecture Dr. Bernard Chen Ph.D. University of Central Arkansas.
© 2013, published by Flat World Knowledge Chapter 10 Understanding Software: A Primer for Managers 10-1.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
1 Software Design Lecture What’s Design It’s a representation of something that is to be built. i.e. design  implementation.
Lecture 13.  Failure mode: when team understands requirements but is unable to meet them.  To ensure that you are building the right system Continually.
Seminar on Service Oriented Architecture Distributed Systems Architectural Models From Coulouris, 5 th Ed. SOA Seminar Coulouris 5Ed.1.
HNDIT Rapid Application Development
CS223: Software Engineering
Distributed Systems Architectures. Topics covered l Client-server architectures l Distributed object architectures l Inter-organisational computing.
Application architectures. Objectives l To explain the organisation of two fundamental models of business systems - batch processing and transaction processing.
Sub-fields of computer science. Sub-fields of computer science.
Software architecture
CompSci 280 S Introduction to Software Development
CS 325: Software Engineering
CIIT-Human Computer Interaction-CSC456-Fall-2015-Mr
Chapter 2 Database System Concepts and Architecture
Distributed Systems.
SOFTWARE DESIGN AND ARCHITECTURE
Software Design and Architecture
Distribution and components
Part 3 Design What does design mean in different fields?
The Client/Server Database Environment
CHAPTER 3 Architectures for Distributed Systems
Hierarchical Architecture
#01 Client/Server Computing
Chapter 3: Windows7 Part 4.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 2 Database System Concepts and Architecture.
Service-centric Software Engineering
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
Software Architecture
Summary Background Introduction in algorithms and applications
Lecture 1: Multi-tier Architecture Overview
CSSSPEC6 SOFTWARE DEVELOPMENT WITH QUALITY ASSURANCE
Tiers vs. Layers.
Data Structures: Introductory lecture
Chapter 6 – Architectural Design
Software models - Software Architecture Design Patterns
Chapter 5 Architectural Design.
Software Engineering with Reusable Components
An Introduction to Software Architecture
SAMANVITHA RAMAYANAM 18TH FEBRUARY 2010 CPE 691
Chapter 1 Data Communications and NM Overview 1-1 Chapter 1
Introduction to SOA and Web Services
Computer Networking A Top-Down Approach Featuring the Internet
Chapter 5 Architectural Design.
Design Yaodong Bi.
Web Servers (IIS and Apache)
Chapter 6: Architectural Design
Chapter 6 – Architectural Design
From Use Cases to Implementation
#01 Client/Server Computing
Presentation transcript:

Algorithm Design

Algorithm: method for solving a problem. What is an algorithm? Algorithm: method for solving a problem. Data structure: method to store information.

Broad and far-reaching impact in the real world Why study an Algorithm? Broad and far-reaching impact in the real world Internet: Web search, packet routing, distributed file sharing, ... Biology: Human genome project, protein folding, … Computers: Circuit layout, file system, compilers, … Computer graphics: Movies, video games, virtual reality, … Security: Cell phones, e-commerce, voting machines, … Multimedia: MP3, JPG, DivX, HDTV, face recognition, … Social networks: Recommendations, news feeds, advertisements, … Physics: N-body simulation, particle collision simulation, …

Why study an Algorithm? For Intellectual Stimulation “ For me, great algorithms are the poetry of computation. Just like verse, they can be terse, allusive, dense, and even mysterious. But once unlocked, they cast a brilliant new light on some aspect of computing. ” — Francis Sullivan “ An algorithm must be seen to be believed. ” — Donald Knuth

Why study an Algorithm? For Intellectual Stimulation “ For me, great algorithms are the poetry of computation. Just like verse, they can be terse, allusive, dense, and even mysterious. But once unlocked, they cast a brilliant new light on some aspect of computing. ” — Francis Sullivan “ An algorithm must be seen to be believed. ” — Donald Knuth

Why study an Algorithm? To become a proficient programmer. “ I will, in fact, claim that the difference between a bad programmer and a good one is whether he considers his code or his data structures more important. Bad programmers worry about the code. Good programmers worry about data structures and their relationships. ” — Linus Torvalds (creator of Linux) “ Algorithms + Data Structures = Programs. ” — Niklaus Wirth

Characteristics of a good algorithm An algorithm is any well-defined computational procedure that takes some value, or set of values, as input and produces some value, or set of values, as output. An algorithm is thus a sequence of computational steps that transform the input into the output. Predict performance in terms of time and space complexities. – Number of steps, recursion and processing should be optimized.

Understand Problems & Build algorithms Learning Objectives Understand Problems & Build algorithms Analyse algorithm for following design requirements Functional Performance Reliability Modularity Extensibility Parallelism Portability

Component Design Software Component Output Formatting Input Validation Data Storage Core Algorithm Output Formatting Interface 1 Interface 2 Interface 3 Software Component

Component design – key aspects to consider What is the basic problem that this component is addressing? What are the inputs needed and their characteristics? Configurable parameters – data types, i/o interfaces, non-functional requirements Data that would be used for computing Interfaces – keyed in inputs, files, shared memory, message pipes, queues etc What are the input validations required? Remember – Garbage In-Garbage Out How is the input data and output data stored? – data structures What are the expected outputs and their characteristics? What are the non-functional requirements? Performance – load handling, latency, portability, security, reliability etc.

Module Design Output Interface Input Interface Platform Interface Input Validation Data Storage Core Algorithm Output Formatting Interface 1 Interface 2 Interface 3 Software Component Platform Interface Input Interface Output Interface Input buffers Output buffers

System Design – Layered Architecture Source: https://msdn.microsoft.com/en-us/library/ee658124.aspx

Module/Design Steps Decompose system/module into components and interfaces i.e., identify the software architecture Determine relationships between components e.g., identify component dependencies and determine inter-component communication mechanisms Specify component interfaces Interfaces should be well-defined - Facilitates component testing and team communication Describe component functionality - informally or formally Identify opportunities for systematic reuse - Both top-down and bottom-up

Typical Architecture Patterns Category Architectural Design Description Communication Message bus Prescribes use of a software system that can receive and send messages using one or more communication channels. Service–Oriented Architecture (SOA) Defines the applications that expose and consume functionality as a service using contracts and messages. Deployment Client/server Separate the system into two applications, where the client makes requests to the server. 3-tier or N-tier Separates the functionality into separate segments with each segment being a tier located on a physically separate computer. Domain Domain Driven Design Focused on modeling a business domain and defining business objects based on entities within the business domain. Structure Component Based Breakdown the application design into reusable functional or logical components that expose well-defined communication interfaces. Layered Divide the concerns of the application into stacked groups (layers). Object oriented Based on the division of responsibilities of an application or system into objects, each containing the data and the behavior relevant to the object.

Let us start with taking up some challenges Learning by doing