Professor John Peterson
Understand “Programming in the small”
Know what’s under the hood in complex
Understand performance issues
Understand algorithm design patterns
Use recursion in code and structure
Wednesday: homework is due
Wednesday: 20 minute work period
Friday: project is due
Friday: 10 minute quiz
3 big tests (every 5 weeks
WILL be a final!)
Homework / project is due at the start
of class on the date due. Submit via
Assignments may be submitted at the
start of the class after the due date
for 1 letter grade off.
Any later will not be accepted
Solutions to programs will be available
Web page (wiki.western.edu)
Talk to me
USE THE WIKI! When you ask via the
wiki everyone benefits. If you email
questions to me I will answer in the wiki.
Off to the
Let’s take a brief tour.
I won’t be lecturing much on Netbeans
but you need to spend time
understanding the various features.
We want to study how fast a program
runs. The speed is usually dependent on
one or more parameters.
For simplicity, we’ll assume that these is a
single parameter, N, that represents
some aspect of the program input.
For sorting, N = number of elements to
We don’t care about absolute
That is, if we double n, does the time it
takes to run the program double?
Many things affect performance (like
we will ignore everything
except the “statement count”.
Big O Notation
We use a mathematical notation called
“Big O” to talk about the performance
of an algorithm.
) means that an algorithm runs in
time proportional to n
(the “size” of
the input squared).
Note that there is no constant
or something like that
compares general algorithms to each
other. Constant factors are hard to
measure and understand!