Upload
kiersten-nels
View
38
Download
6
Embed Size (px)
DESCRIPTION
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. - PowerPoint PPT Presentation
Citation preview
CMPT 225Data Structures and Programming
Course Website
http://www.cs.sfu.ca/CC/225/johnwill/
John Edgar 2
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