200 likes | 338 Vues
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.
E N D
Data Structures and Programming CMPT 225
Course Website • http://www.cs.sfu.ca/CC/225/johnwill/ John Edgar
Assessment • Assignments and labs – 30% • Midterm exam in class – 25% • Final exam – 45% John Edgar
CMPT 225 Topics • Data Structures • Algorithms • Software Development • Programming John Edgar
CMPT 225 Topics • Data Structures and Abstract Data Types • Stacks • Queues • Priority Queues • Trees • Graphs • Hash Tables • Algorithms • Software Development • Programming John Edgar
CMPT 225 Topics • Data Structures • Algorithms • Tools – Recursion • Efficiency – O Notation • Algorithms to support data structures • Sorting • Software Development • Programming John Edgar
CMPT 225 Topics • Data Structures • Algorithms • Software Development • Specification • Design – OOP design • Implementation • Testing • Programming John Edgar
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
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
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
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
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
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
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
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
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
Software Life Cycle Documentation John Edgar
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
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
Software Life Cycle and CMPT 225 • We are primarily concerned with three phases of the life cycle • Design • Implementation • Testing John Edgar