CPSC
427a:
Object-Oriented
Programming
Michael
J.
Fischer
Lecture
1
September
1,
2011
About This Course
Where
to
find
information
All information about this course is posted on the course website:
There you will find:
-
Syllabus.
-
The
main
textbook
Exploring
C++
by
Alice
Fischer.
-
Lecture
notes.
-
Code
samples.
-
Homework
assignments.
The syllabus contains important additional information. Read it!
Course
mechanics
You will need a Zoo course account. Get it now!
You can’t submit work without it.
Submit your assignments on the Zoo using the script in
/c/cs427/bin/submit.
I recommend that you buy the book Herbert Schildt, C++: The
Complete Reference, 4th edition. It serves as a basic text for C++ as well
as a reference manual.
Course Requirements: Homework assignments (~35%), two
hour exams (~20% each), and a significant programming project
(~25%).
Topics
to
be
Covered
Major Areas
-
Foundations
(basics
of
objects
and
classes)
-
Reusable
software
design
(both
language
support
and
design
technique)
-
Programming
for
reliability
-
Programming
for
efficiency
-
Software
toolset
and
framework
design
Course
goals
-
practical
-
Learn
how
to
follow
instructions,
and
how
question
them
if
you
think
they
are
wrong.
-
Learn
how
to
get
a
big
job
done
one
module
at
a
time.
-
Learn
how
to
use
a
reference
manual.
-
Learn
how
to
design
for
efficiency
and
reliability.
-
Learn
how
to
test,
analyze,
and
debug
code.
-
Learn
how
to
present
your
work
in
a
professional
manner.
-
Become
proficient
at
C++
programming,
starting
with
a
knowledge
of
C.
-
Learn
how
to
use
UML
(Unified
Modeling
Language)
to
document
your
work.
Course
goals
-
conceptual
-
What
object-oriented
programming
is
–
and
isn’t.
-
The
basic
principles
and
patterns
of
object
oriented
design.
-
Learn
how
C++
differs
in
syntax
and
semantics
from
standard
ISO
C
on
the
one
hand
and
from
other
languages
with
support
for
OO-programming
such
as
Python,
Ruby,
and
Java.
-
Learn
about
classes,
objects,
type
hierarchies,
templates,
and
their
implementations
in
C++.
-
The
principles
behind
the
exception
handler
and
how
to
use
it.
-
Learn
how
to
use
class
libraries
such
as
the
C++
standard
template
library
(STL),
GTKmm,
boost,
etc.
Kinds of Programming
Two
views
of
programming
People program for different reasons.
Programming is …
-
A
means
to
solve
computational
problems;
-
The
process
of
software
construction.
Problem
solving
Desired properties of programs for solving problems:
-
Correct
outputs
from
correct
inputs
-
Succinct
expression
of
algorithm
-
Simple
development
cycle
Beginning programming courses tend to focus on programs to solve
small problems.
Software
Construction
Desired properties of software constructed for widespread use:
-
Correct
outputs
from
correct
inputs
-
Robust
in
face
of
bad
inputs;
reliable
-
Economical
in
resource
usage
(time
and
space)
-
Understandability
and
verifiability
of
code
-
Security
-
Ease
of
repurposing
-
Ease
of
deployment
-
Maintainability
This course will focus on constructing large-scale software.
Programming
in
the
large
-
Thousands
of
lines
of
code
-
Written
by
many
programmers
-
Over
a
large
span
of
time
-
Deployed
on
a
large
number
of
computers
-
With
different
architectures
and
operating
systems
-
Interacting
with
foreign
code
and
devices
C++ Programming Standards
Three
commandments
for
this
course
From Chapter 1 of Exploring C++:
-
Use
C++
input
and
output,
not
C
I/O,
for
all
assigned
work.
-
Don’t
use
global
variables.
If
you
think
you
need
one,
ask
for
help.
Your
class-design
is
probably
defective.
-
Test
every
line
of
code
you
write.
It
is
your
job
to
prove
that
your
entire
program
works.
If
you
submit
a
program
without
a
test
plan
and
test
output,
the
TA
will
assume
that
it
does
not
compile
and
will
grade
it
accordingly.
Can
is
not
the
same
as
should!
From Chapter 1 of Exploring C++:
-
C++
is
a
very
powerful
language,
which,
if
used
badly
can
produce
projects
that
are
badly
designed,
badly
constructed,
and
impossible
to
debug
or
maintain.
-
Your
goal
is
to
learn
to
use
the
language
well,
and
with
good
style.
-
Please
read
and
follow
the
style
guidelines
in
Section
1.2
-
Download
the
two
tools
files
from
the
website.
-
Read
Section
1.3,
about
the
tools
library,
and
use
this
information
to
customize
your
own
copy
of
the
tools.