This preview shows pages 1–2. Sign up to view the full content.
1
Introduction
EECS 280
Programming and Introductory Data Structures
1
EECS 280 Manifesto
Mathematics
, especially as used by physics, is the formalism
we use to describe “what is”
The physical world is modeled by equations.
Solutions to these equations give us insight into the world.
Classical mathematics, however, does not say anything about how
these processes unfold.
For that, we need something else…
Computer Science
is the formalism we use to describe “how to”
The computer science world uses algorithms to do this.
Algorithm
:
An abstract sequence of actions composed to solve a
problem.
Program
:
A concrete set of
program statements
which
implement
some algorithm.
2
What you need for EECS 280
3
Prior programming experience is the only prereq (i.e.
ENGR 101 is not required)
You do not need to have prior C++ and/or Linux
experience
If you do not have C++ and/or Linux experience, this will
not cause a significant issue.
However, you will need to learn basic C++ syntax on your own
for things like selection, iteration, basic I/O, etc… (see Ctools
background material and chapters 15)
Linux will be covered in the first few discussions and in office
hours if needed
The Task of Programming
Accept a possibly incomplete and/or imprecise specification
of the problem.
Design
an
effective
algorithm that:
Correctly satisfies the specification.
Is efficient in its (asymptotic) usage of
space
and
time
(i.e.
how does it behave when we change problem parameters).
Implement
the algorithm
correctly
and
efficiently
An implementation of an algorithm is correct if it behaves as the
algorithm is intended for all inputs and in all situations.
Correctness is never negotiable.
4
The Task of Programming
(Implementation Cont’d)
There are three notions of an
efficient
implementation
The implementation has (concrete) space/time requirements
asymptotically similar to the more abstract requirements of the
corresponding algorithm.
Of all of the "asymptotically good" possible implementations,
this one is among the better ones in absolute, concrete terms.
It does not take an undue amount of effort for a programmer to:
Write the implementation in the first place (simplicity).
Improve/adapt the implementation to more general or closely related
algorithms (elegance).
So,
efficient
can mean fast, simple, and/or elegant.
5
The Task of Programming
Two more pieces of the programming puzzle:
Testing
Maintenance
These are often be overlooked when a deadline approaches.
However, they are very important and are covered in greater
This preview has intentionally blurred sections. Sign up to view the full version.
View Full Document
This is the end of the preview. Sign up
to
access the rest of the document.
This note was uploaded on 02/14/2012 for the course EECS 280 taught by Professor Noble during the Winter '08 term at University of Michigan.
 Winter '08
 NOBLE

Click to edit the document details