Presentation is loading. Please wait.

# Data Structures and Programming.  John Edgar2.

## Presentation on theme: "Data Structures and Programming.  John Edgar2."— Presentation transcript:

Data Structures and Programming

 http://www.cs.sfu.ca/CC/225/johnwill/ http://www.cs.sfu.ca/CC/225/johnwill/ John Edgar2

 Assignments and labs – 30%  Midterm exam in class – 25%  Final exam – 45% John Edgar3

 Data Structures  Algorithms  Software Development  Programming John Edgar4

 Data Structures and Abstract Data Types  Stacks  Queues  Priority Queues  Trees  Graphs  Hash Tables  Algorithms  Software Development  Programming John Edgar5

 Data Structures  Algorithms  Tools – Recursion  Efficiency – O Notation  Algorithms to support data structures  Sorting  Software Development  Programming John Edgar6

 Data Structures  Algorithms  Software Development  Specification  Design – OOP design  Implementation  Testing  Programming John Edgar7

 Data Structures  Algorithms  Software Development  Programming  Implementing data structures and algorithms  Understanding stack and heap memory use  Recursion  Writing robust re-usable programs John Edgar8

 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 Edgar9

 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 Edgar10

 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 Edgar11

 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 Edgar12

 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 Edgar13

 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 Edgar14

 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 Edgar15

 Well structured  Modular  Modifiable  Written with good style  Well documented  Easy to use  Efficient  Able to degrade gracefully (fail-safe)  Debugged John Edgar16

Specification Design Risk Analysis Verification Coding Testing Refinement Production Maintenance John Edgar17 Documentation

 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 Edgar18

 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 Edgar19

 We are primarily concerned with three phases of the life cycle  Design  Implementation  Testing John Edgar20

Download ppt "Data Structures and Programming.  John Edgar2."

Similar presentations

Ads by Google