1 / 20

CMPT 225

Data Structures and Programming. CMPT 225. Course Website. http://www.cs.sfu.ca/CC/225/johnwill/. Assessment. Assignments and labs – 30% Midterm exam in class – 25% Final exam – 45%. CMPT 225 Topics. Data Structures Algorithms Software Development Programming. CMPT 225 Topics.

Download Presentation

CMPT 225

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Data Structures and Programming CMPT 225

  2. Course Website • http://www.cs.sfu.ca/CC/225/johnwill/ John Edgar

  3. Assessment • Assignments and labs – 30% • Midterm exam in class – 25% • Final exam – 45% John Edgar

  4. CMPT 225 Topics • Data Structures • Algorithms • Software Development • Programming John Edgar

  5. CMPT 225 Topics • Data Structures and Abstract Data Types • Stacks • Queues • Priority Queues • Trees • Graphs • Hash Tables • Algorithms • Software Development • Programming John Edgar

  6. CMPT 225 Topics • Data Structures • Algorithms • Tools – Recursion • Efficiency – O Notation • Algorithms to support data structures • Sorting • Software Development • Programming John Edgar

  7. CMPT 225 Topics • Data Structures • Algorithms • Software Development • Specification • Design – OOP design • Implementation • Testing • Programming John Edgar

  8. CMPT 225 Topics • Data Structures • Algorithms • Software Development • Programming • Implementing data structures and algorithms • Understanding stack and heap memory use • Recursion • Writing robust re-usable programs John Edgar

  9. Objectives – Data Structures • At the end of this course you should, for each of the data structures we cover, be able to • Describe the operations • Explain common implementations • Implement in a programming language (C++) • Compare with other data structures • Recommend which data structure to use for a given problem John Edgar

  10. Objectives – Algorithms • At the end of this course you should, for each of the algorithms we cover, be able to • Implement in a programming language (C++) • Analyze running time and space requirements • Compare with other algorithms of a similar nature John Edgar

  11. Objectives – Programming • At the end of this course you should be able to • Write algorithms using recursion • Understand the advantages of disadvantages of using recursive algorithms • Implement data structures using both arrays and reference structures as the underlying structure • Compare array and reference structure implementations • Use features of the C++ language to write well-structured programs John Edgar

  12. Objectives – O Notation • At the end of this course you should be able to • Understand and describe the mathematical basis of O notation • Compute the O notation running time of algorithms • Understand the limitations of O notation John Edgar

  13. Overall Objectives • Develop problem solving techniques • To take a problem statement • And develop a computer program to solve the problem • A solution consists of two components • Algorithms • Data storage John Edgar

  14. Course Focus • Problem solving • Use abstraction to design solutions • Design modular programs • Use recursion as a problem-solving strategy • Provide tools for the management of data • Identify abstract data types (ADTs) • Examine applications that use the ADTs • Construct implementations of the ADTs John Edgar

  15. What Makes a Good Solution? • A good solution is cost effective • We should minimize the cost of the software • Running costs • Resources (computing time and memory) • Interaction costs (e.g. poor GUI may result in the loss of business) • Costs related to errors (e.g. loss of customer information, storing incorrect data, etc.) • Development and maintenance costs • i.e. costs related to the software life cycle John Edgar

  16. Good Software Is • Well structured • Modular • Modifiable • Written with good style • Well documented • Easy to use • Efficient • Able to degrade gracefully (fail-safe) • Debugged John Edgar

  17. Software Life Cycle Documentation John Edgar

  18. Software Life Cycle Phases - 1 • Specification • Understand the client’s problem and requirements • Ensure that the requirements are clear and complete and understood by all stakeholders • Design • Plan the implementation of the application’s data and operations • Plan the testing • Risk Analysis • Verification • Ensure that algorithms are correct • Ensure that the design satisfies the requirements (validation) • Implementation John Edgar

  19. Software Life Cycle Phases - 2 • Testing • Verify that the code works and meets the client’s requirements • There are various types of testing, unit testing, integration testing, system testing, user acceptance testing • Refining • Production • Package, distribute and install application and train users • Maintenance • Add features, and • Fix bugs • Documentation, which includes the user manual • Common to all the phases of the life cycle John Edgar

  20. Software Life Cycle and CMPT 225 • We are primarily concerned with three phases of the life cycle • Design • Implementation • Testing John Edgar

More Related