01 Overview
01 Overview
Course
Overview
15-‐213/18-‐213/15-‐513:
Introduc;on
to
Computer
Systems
1st
Lecture,
Sep.
1,
2015
Instructors:
Randal
E.
Bryant
and
David
R.
O’Hallaron
Overview
¢ Course
theme
¢ Five
reali;es
Course
Theme:
Abstrac7on
Is
Good
But
Don’t
Forget
Reality
¢ Most
CS
and
CE
courses
emphasize
abstrac7on
§ Abstract
data
types
§ Asympto;c
analysis
¢ These
abstrac7ons
have
limits
§ Especially
in
the
presence
of
bugs
§ Need
to
understand
details
of
underlying
implementa;ons
¢ Useful
outcomes
from
taking
213
§ Become
more
effec;ve
programmers
Able
to
find
and
eliminate
bugs
efficiently
§
§ Able
to
understand
and
tune
for
program
performance
§ Prepare
for
later
“systems”
classes
in
CS
&
ECE
§ Compilers,
Opera;ng
Systems,
Networks,
Computer
Architecture,
Embedded
Systems,
Storage
Systems,
etc.
§ Int’s:
§
40000
*
40000
➙
1600000000
§
50000
*
50000
➙
??
¢ Example
2:
Is
(x
+
y)
+
z
=
x
+
(y
+
z)?
§ Unsigned
&
Signed
Int’s:
Yes!
§ Float’s:
§
(1e20
+
-‐1e20)
+
3.14
-‐-‐>
3.14
§
1e20
+
(-‐1e20
+
3.14)
-‐-‐>
??
Bryant
and
O’Hallaron,
Computer
Systems:
A
Programmer’s
Perspec;ve,
Third
Edi;on
Source:
xkcd.com/571
4
Carnegie Mellon
Computer
Arithme7c
¢ Does
not
generate
random
values
§ Arithme;c
opera;ons
have
important
mathema;cal
proper;es
¢ Cannot
assume
all
“usual”
mathema7cal
proper7es
§ Due
to
finiteness
of
representa;ons
§ Integer
opera;ons
sa;sfy
“ring”
proper;es
Commuta;vity,
associa;vity,
distribu;vity
§
§ Floa;ng
point
opera;ons
sa;sfy
“ordering”
proper;es
§ Monotonicity,
values
of
signs
¢ Observa7on
§ Need
to
understand
which
abstrac;ons
apply
in
which
contexts
§ Important
issues
for
compiler
writers
and
serious
applica;on
programmers
double fun(int i) {
volatile struct_t s;
s.d = 3.14;
s.a[i] = 1073741824; /* Possibly out of bounds */
return s.d;
}
fun(0) ➙ 3.14
fun(1) ➙ 3.14
fun(2) ➙ 3.1399998664856
fun(3) ➙ 2.00000061035156
fun(4) ➙ 3.14
fun(6) ➙ Segmenta;on
fault
Explana;on:
Cri;cal
State
6
?
5
?
4
d7 ... d4 3
Loca;on
accessed
by
fun(i)
d3 ... d0 2
struct_t
a[1] 1
a[0] 0
§ Easily
see
10:1
performance
range
depending
on
how
code
wriien
§ Must
op;mize
at
mul;ple
levels:
algorithm,
data
representa;ons,
procedures,
and
loops
¢ Must
understand
system
to
op7mize
performance
§ How
programs
compiled
and
executed
§ How
to
measure
program
performance
and
iden;fy
boilenecks
§ How
to
improve
performance
without
destroying
code
modularity
and
generality
16000
14000
Read throughput (MB/s)
12000
10000
8000
6000
4000
2000
copyji
0
s1 32k
s3 128k
s5 512k
2m
s7
Stride (x8 bytes) 8m
s9 Size (bytes)
32m
s11
128m
Bryant
and
O’Hallaron,
Computer
Systems:
A
Programmer’s
Perspec;ve,
Third
Edi;on
13
Carnegie Mellon
CS
122
Impera;ve
Programming
Bryant
and
O’Hallaron,
Computer
Systems:
A
Programmer’s
Perspec;ve,
Third
Edi;on
15
Carnegie Mellon
Course
Perspec;ve
¢ Most
Systems
Courses
are
Builder-‐Centric
§ Computer
Architecture
Design
pipelined
processor
in
Verilog
§
§ Opera;ng
Systems
§ Implement
sample
por;ons
of
opera;ng
system
§ Compilers
§ Write
compiler
for
simple
language
§ Networking
§ Implement
and
simulate
network
protocols
Instructors
Randy Bryant
Dave O’Hallaron
Chea;ng:
Descrip;on
¢ Please
pay
close
a\en7on,
especially
if
this
is
your
first
semester
at
CMU
Chea;ng:
Consequences
¢ Penalty
for
chea;ng:
§ Removal
from
course
with
failing
grade
(no
excep;ons!)
§ Permanent
mark
on
your
record
§ Your
instructors’
personal
contempt
Textbooks
¢ Randal
E.
Bryant
and
David
R.
O’Hallaron,
§ Computer
Systems:
A
Programmer’s
Perspec4ve,
Third
Edi7on
(CS:APP3e),
Pearson,
2016
§ hip://csapp.cs.cmu.edu
§ This
book
really
maiers
for
the
course!
§ How
to
solve
labs
§ Prac;ce
problems
typical
of
exam
problems
Course
Components
¢ Lectures
§ Higher
level
concepts
¢ Recita;ons
§ Applied
concepts,
important
tools
and
skills
for
labs,
clarifica;on
of
lectures,
exam
coverage
¢ Labs
(7)
§ The
heart
of
the
course
§ 1-‐2
weeks
each
§ Provide
in-‐depth
understanding
of
an
aspect
of
systems
§ Programming
and
measurement
¢ Exams
(midterm
+
final)
§ Test
your
understanding
of
concepts
&
mathema;cal
principles
Gewng
Help
¢ Class
Web
page:
h\p://www.cs.cmu.edu/~213
§ Complete
schedule
of
lectures,
exams,
and
assignments
§ Copies
of
lectures,
assignments,
exams,
solu;ons
§ Clarifica;ons
to
assignments
Gewng
Help
¢ Staff
mailing
list:
15-‐213-‐staff@cs.cmu.edu
§ Use
this
for
all
communica;on
with
the
teaching
staff
§ Always
CC
staff
mailing
list
during
email
exchanges
§ Send
email
to
individual
instructors
only
to
schedule
appointments
Facili;es
¢ Labs
will
use
the
Intel
Computer
Systems
Cluster
§ The
“shark
machines”
§ linux> ssh shark.ics.cs.cmu.edu
Timeliness
¢ Grace
days
§ 5
grace
days
for
the
semester
§ Limit
of
2
grace
days
per
lab
used
automa7cally
§ Covers
scheduling
crunch,
out-‐of-‐town
trips,
illnesses,
minor
setbacks
§ Save
them
un;l
late
in
the
term!
¢ Lateness
penal;es
§ Once
grace
day(s)
used
up,
get
penalized
15%
per
day
§ No
handins
later
than
3
days
aier
due
date
¢ Catastrophic
events
§ Major
illness,
death
in
family,
…
§ Formulate
a
plan
(with
your
academic
advisor)
to
get
back
on
track
¢ Advice
§ Once
you
start
running
late,
it’s
really
hard
to
catch
up
Bryant
and
O’Hallaron,
Computer
Systems:
A
Programmer’s
Perspec;ve,
Third
Edi;on
27
Carnegie Mellon
Policies:
Grading
¢ Exams
(50%):
midterm
(20%),
final
(30%)
¢ Assignments
§ L1
(datalab):
Manipula;ng
bits
§ L2
(bomblab):
Defusing
a
binary
bomb
§ L3
(aiacklab):
The
basics
of
code
injec;on
aiacks
¢ Assignments
§ L4
(cachelab):
Building
a
cache
simulator
and
op;mizing
for
locality.
§ Learn
how
to
exploit
locality
in
your
programs.
¢ Assignments
§ L5
(tshlab):
Wri;ng
your
own
Unix
shell.
§ A
first
introduc;on
to
concurrency
Virtual
Memory
¢ Topics
§ Virtual
memory,
address
transla;on,
dynamic
storage
alloca;on
§ Includes
aspects
of
architecture
and
OS
¢ Assignments
§ L6
(malloclab):
Wri;ng
your
own
malloc
package
§ Get
a
real
feel
for
systems-‐level
programming
¢ Assignments
§ L7
(proxylab):
Wri;ng
your
own
Web
proxy
§ Learn
network
programming
and
more
about
concurrency
and
synchroniza;on.
Lab
Ra;onale
¢ Each
lab
has
a
well-‐defined
goal
such
as
solving
a
puzzle
or
winning
a
contest
¢ Doing the lab should result in new skills and concepts
¢ We
try
to
use
compe;;on
in
a
fun
and
healthy
way
§ Set
a
reasonable
threshold
for
full
credit
§ Post
intermediate
results
(anonymized)
on
Autolab
scoreboard
for
glory!
Autolab
(hips://autolab.cs.cmu.edu)
¢ Labs
are
provided
by
the
CMU
Autolab
system
§ Project
page:
hip://autolab.cs.cmu.edu
§ Developed
by
CMU
faculty
and
students
§ Key
ideas:
Autograding
and
Scoreboards
Autograding:
Providing
you
with
instant
feedback.
§
§ Scoreboards:
Real-‐;me,
rank-‐ordered,
and
anonymous
summary.
§ Used
by
over
3,000
students
each
semester
¢ With
Autolab
you
can
use
your
Web
browser
to:
§ Download
the
lab
materials
§ Handin
your
code
for
autograding
by
the
Autolab
server
§ View
the
class
scoreboard
§ View
the
complete
history
of
your
code
handins,
autograded
results,
instructor’s
evalua;ons,
and
gradebook.
§ View
the
TA
annota;ons
of
your
code
for
Style
points.
Bryant
and
O’Hallaron,
Computer
Systems:
A
Programmer’s
Perspec;ve,
Third
Edi;on
36
Carnegie Mellon
Autolab
accounts
¢ Students
enrolled
10am
on
Mon,
Aug
26
have
Autolab
accounts
¢ You
must
be
enrolled
to
get
an
account
§ Autolab
is
not
;ed
in
to
the
Hub’s
rosters
§ If
you
add
in,
contact
15-‐213-‐staff@cs.cmu.edu
for
an
account
¢ For
those
who
are
wai;ng
to
add
in,
the
first
lab
(datalab)
will
be
available
on
the
Schedule
page
of
the
course
Web
site.
Waitlist
ques;ons
¢ 15-‐213:
Catherine
Fichtner
([email protected])
¢ 18-‐213:
Zara
Collier
([email protected])
Welcome
and
Enjoy!