0_intro - Data
Structures
and
Programming
 ! ...

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: Data
Structures
and
Programming
 !  Today:
 !  Introduction
to
225
 !  Administrivia
 !  Course
website:
 !  http://www.cs.sfu.ca/~mori/courses/cmpt225/
 !  All
slides
available
before
lecture
on
website
 !  Acknowledgement
 John Edgar 2 !  Data
Structures
 !  Algorithms
 !  Software
Development
 John Edgar 3 !  Data
Structures
and
Abstract
Data
Types
 !  Stacks
 !  Queues
 !  Priority
Queues
 !  Trees
 !  Graphs
 !  Hash
Tables
 !  Algorithms
 !  Software
Development
 John Edgar 4 !  Data
Structures
 !  Algorithms
 !  Tools
–
Recursion
 !  Efficiency
–
O
Notation
 !  Algorithms
to
support
data
structures
 !  Sorting
 !  Software
Development
 John Edgar 5 !  Data
Structures
 !  Algorithms
 !  Software
Development
 !  Design
–
OOP
design
 !  Java
and
C++
coding
skills
 John Edgar 6 !  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 7 !  Problem
solving
 !  Use
abstraction
to
design
solutions
 !  Design
modular
programs
 !  Use
recursion
as
a
problem‐solving
strategy
 !  Identify
abstract
data
types
(ADTs)
 !  Examine
applications
that
use
the
ADTs
 !  Construct
implementations
of
the
ADTs
 John Edgar 8 !  Provide
tools
for
the
management
of
data
 !  Instructor:
Greg
Mori
 !  Office
hours:
 ▪  Mon

14:00‐15:00
in
TASC1
8007
 ▪  Tues
20:30‐21:30
in
HCC
2134
 !  TA:
Yuan
(Karen)
Liu
 !  Office
hours:
 ▪  TBD,
around
assignment
due
dates
 John Edgar 9 !  CMPT
125/126/128
and
MACM
101
 !  Familiarity
with
algorithms
 ▪  E.g.
searching,
sorting
 ▪  Some
running
time
analysis,
recursion
 !  Knowledge/use
of
fundamental
data
types
 ▪  E.g.
numbers,
characters,
booleans
 !  Basic
programming
skills
 ▪  E.g.
Loops,
ifs,
I/O
 !  Java
or
C++
 John Edgar 10 !  What
does
this
do?
 !  Anything
wrong?
 int nums = {4,20,19,3,-1,42,22,18}; for (int i=0; i<8; i++) { for (int j=i+1; j<8; j++) { if (nums[i] < nums[j]) { int t = nums[j]; nums[j] = nums[i]; nums[i] = t; } } } John Edgar 11 !  See
syllabus
for
list
of
topics
 !  Note
Olympic®
Break
 !  No
lectures/labs
Feb.
13‐28

 John Edgar 12 !  !  !  !  Assignments
–
25%
 Labs
–
5%
 Midterm
exam
in
class
–
25%
 Final
exam
–
45%
 Grades
will
be
recorded
in
GradeBook
 !  
http://gradebook.cs.sfu.ca/
 !  John Edgar 13 !  Individual
programming
assignments
 !  Dates
on
syllabus
 !  Assignments
1,2,3
in
C++;
4
in
Java
 !  4
“grace
days”
for
the
trimester
 !  Note
late
policy
 !  Academic
Honesty
(cheating)
 !  We’re
very
serious
about
it
 !  See
syllabus
 John Edgar 14 !  Wed
18:30‐19:20
(E101)
or
19:30‐20:20
(E102)
 in
HCC
7050
 !  Chance
to
learn
what
you
need
for
 !  NONE
TOMORROW
 assignments
 !  5%
of
course
grade
–
graded
based
on
attendance
 (physical
and
mental)
 !  Get
live
feedback/instruction
from
TA
and
fellow
 students
 John Edgar 15 !  Labs
will
use
 !  Microsoft
Visual
Studio
(C++)
 !  Eclipse
(Java)
 !  Same
are
available
in
CSIL
(or
via
remote
 desktop)
 !  You
may
use
these
or
the
IDE
of
your
choice
for
 assignments
(e.g.
Eclipse
for
C++)
 !  Tech
support
only
via
CSIL
 John Edgar 16 !  Midterm
exam
in
class
March
2
 !  Final
exam
April
19
19:00‐22:00
location
TBA
 !  Both
exams
are
closed‐book
 !  Comprehensive,
covers
whole
course
 !  See
syllabus
regarding
medical
factors
/
 procedures
 John Edgar 17 !  Two
books:
 !  Data
Abstraction
&
Problem
Solving
with
C++
 !  Data
Abstraction
&
Problem
Solving
with
Java

 !  Buy
the
one
using
the
language
you
are
least
 familiar
with
 John Edgar 18 !  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 20 !  Problem
solving
 !  Use
abstraction
to
design
solutions
 !  Design
modular
programs
 !  Use
recursion
as
a
problem‐solving
strategy
 !  Identify
abstract
data
types
(ADTs)
 !  Examine
applications
that
use
the
ADTs
 !  Construct
implementations
of
the
ADTs
 John Edgar 21 !  Provide
tools
for
the
management
of
data
 !  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
 !  Development
and
maintenance
costs
 !  i.e.
costs
related
to
the
software
life
cycle
 John Edgar loss
of
business)
 !  Costs
related
to
errors
(e.g.
loss
of
customer
 information,
storing
incorrect
data,
etc.)
 22 !  Well
structured
 !  Modular
 !  Modifiable
 !  Written
with
good
style

 !  Well
documented
 !  Easy
to
use
 !  Efficient
 !  Able
to
degrade
gracefully
(fail‐safe)
 !  Debugged
 John Edgar 23 Maintenance Production Specification Design Documentation Refinement Risk Analysis Testing Coding Verification John Edgar 24 !  Specification
 !  Understand
the
client’s
problem
and
requirements
 !  Ensure
that
the
requirements
are
clear
and
complete
and
 !  Design
 understood
by
all
stakeholders
 !  !  Risk
Analysis
 Verification
 !  Plan
the
implementation
of
the
application’s
data
and
operations
 !  Plan
the
testing
 !  Implementation
 !  Ensure
that
algorithms
are
correct
 !  Ensure
that
the
design
satisfies
the
requirements
(validation)
 John Edgar 25 !  Testing
 !  Verify
that
the
code
works
and
meets
the
client’s
requirements
 !  There
are
various
types
of
testing:
unit
testing,
integration
testing,
 !  !  !  Refining
 Production
 system
testing,
…
 Maintenance
 !  Package,
distribute
and
install
application
and
train
users
 !  Add
features,
and
 !  Fix
bugs
 !  Documentation,
which
includes
the
user
manual
 !  Common
to
all
the
phases
of
the
life
cycle
 John Edgar 26 !  We
are
primarily
concerned
with
three
phases
 of
the
life
cycle
 !  Design
 !  Implementation
 !  Testing
 John Edgar 27 ...
View Full Document

This note was uploaded on 04/17/2010 for the course CMPT 11151 taught by Professor Gregorymori during the Spring '10 term at Simon Fraser.

Ask a homework question - tutors are online