0% found this document useful (0 votes)
112 views39 pages

01 Overview

This document provides an overview of the 15-213/18-213/15-513: Introduction to Computer Systems course at Carnegie Mellon University. It discusses the course theme of understanding both abstraction and reality in computer systems. It highlights three important realities: 1) computer arithmetic does not behave exactly like standard mathematics, 2) understanding assembly language is key to the machine-level execution model, and 3) memory is not a perfect abstraction and its performance and behavior impacts programs. The document uses examples to illustrate these realities and their implications.

Uploaded by

Nedelcu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
112 views39 pages

01 Overview

This document provides an overview of the 15-213/18-213/15-513: Introduction to Computer Systems course at Carnegie Mellon University. It discusses the course theme of understanding both abstraction and reality in computer systems. It highlights three important realities: 1) computer arithmetic does not behave exactly like standard mathematics, 2) understanding assembly language is key to the machine-level execution model, and 3) memory is not a perfect abstraction and its performance and behavior impacts programs. The document uses examples to illustrate these realities and their implications.

Uploaded by

Nedelcu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 39

Carnegie Mellon

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  

The  course  that  gives  CMU  its  “Zip”!    

Bryant  and  O’Hallaron,  Computer  Systems:  A  Programmer’s  Perspec;ve,  Third  Edi;on   1



Carnegie Mellon

Overview  
¢  Course  theme  
¢  Five  reali;es  

¢  How  the  course  fits  into  the  CS/ECE  curriculum  

¢  Academic  integrity  

Bryant  and  O’Hallaron,  Computer  Systems:  A  Programmer’s  Perspec;ve,  Third  Edi;on   2



Carnegie Mellon

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.  

Bryant  and  O’Hallaron,  Computer  Systems:  A  Programmer’s  Perspec;ve,  Third  Edi;on   3



Carnegie Mellon

Great  Reality  #1:    


Ints  are  not  Integers,  Floats  are  not  Reals  
¢  Example  1:  Is  x2  ≥  0?  
§  Float’s:  Yes!  

§  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  

Bryant  and  O’Hallaron,  Computer  Systems:  A  Programmer’s  Perspec;ve,  Third  Edi;on   5



Carnegie Mellon

Great  Reality  #2:    


You’ve  Got  to  Know  Assembly  
¢  Chances  are,  you’ll  never  write  programs  in  assembly  
§  Compilers  are  much  beier  &  more  pa;ent  than  you  are  
¢  But:  Understanding  assembly  is  key  to  machine-­‐level  execu7on  
model  
§  Behavior  of  programs  in  presence  of  bugs  
High-­‐level  language  models  break  down  
§ 
§  Tuning  program  performance  
§  Understand  op;miza;ons  done  /  not  done  by  the  compiler  
§  Understanding  sources  of  program  inefficiency  
§  Implemen;ng  system  sokware  
§  Compiler  has  machine  code  as  target  
§  Opera;ng  systems  must  manage  process  state  
§  Crea;ng  /  figh;ng  malware  
§  x86  assembly  is  the  language  of  choice!  
Bryant  and  O’Hallaron,  Computer  Systems:  A  Programmer’s  Perspec;ve,  Third  Edi;on   6

Carnegie Mellon

Great  Reality  #3:  Memory  Ma\ers  


Random  Access  Memory  Is  an  Unphysical  Abstrac7on  

¢  Memory  is  not  unbounded  


§  It  must  be  allocated  and  managed  
§  Many  applica;ons  are  memory  dominated  
¢  Memory  referencing  bugs  especially  pernicious  
§  Effects  are  distant  in  both  ;me  and  space  
¢  Memory  performance  is  not  uniform  
§  Cache  and  virtual  memory  effects  can  greatly  affect  program  performance  
§  Adap;ng  program  to  characteris;cs  of  memory  system  can  lead  to  major  
speed  improvements  

Bryant  and  O’Hallaron,  Computer  Systems:  A  Programmer’s  Perspec;ve,  Third  Edi;on   7



Carnegie Mellon

Memory  Referencing  Bug  Example  


typedef struct {
int a[2];
double d;
} struct_t;

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

§  Result  is  system  specific  


Bryant  and  O’Hallaron,  Computer  Systems:  A  Programmer’s  Perspec;ve,  Third  Edi;on   8

Carnegie Mellon

Memory  Referencing  Bug  Example  


typedef struct { fun(0) ➙ 3.14
int a[2]; fun(1) ➙ 3.14
double d; fun(2) ➙ 3.1399998664856
} struct_t;
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  

Bryant  and  O’Hallaron,  Computer  Systems:  A  Programmer’s  Perspec;ve,  Third  Edi;on   9



Carnegie Mellon

Memory  Referencing  Errors  


¢  C  and  C++  do  not  provide  any  memory  protec7on  
§  Out  of  bounds  array  references  
§  Invalid  pointer  values  
§  Abuses  of  malloc/free  
¢  Can  lead  to  nasty  bugs  
§  Whether  or  not  bug  has  any  effect  depends  on  system  and  compiler  
§  Ac;on  at  a  distance  
§  Corrupted  object  logically  unrelated  to  one  being  accessed  
§  Effect  of  bug  may  be  first  observed  long  aker  it  is  generated  
¢  How  can  I  deal  with  this?  
§  Program  in  Java,  Ruby,  Python,  ML,  …  
§  Understand  what  possible  interac;ons  may  occur  
§  Use  or  develop  tools  to  detect  referencing  errors  (e.g.  Valgrind)  
Bryant  and  O’Hallaron,  Computer  Systems:  A  Programmer’s  Perspec;ve,  Third  Edi;on   10

Carnegie Mellon

Great  Reality  #4:  There’s  more  to  


performance  than  asympto7c  complexity  
 
¢  Constant  factors  ma\er  too!  
¢  And  even  exact  op  count  does  not  predict  performance  

§  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  

Bryant  and  O’Hallaron,  Computer  Systems:  A  Programmer’s  Perspec;ve,  Third  Edi;on   11



Carnegie Mellon

Memory  System  Performance  Example  


void copyij(int src[2048][2048], void copyji(int src[2048][2048],
int dst[2048][2048]) int dst[2048][2048])
{ {
int i,j; int i,j;
for (i = 0; i < 2048; i++) for (j = 0; j < 2048; j++)
for (j = 0; j < 2048; j++) for (i = 0; i < 2048; i++)
dst[i][j] = src[i][j]; dst[i][j] = src[i][j];
} }

4.3ms  2.0  GHz  Intel  Core  i7  Haswell   81.8ms  


¢  Hierarchical  memory  organiza;on  
¢  Performance  depends  on  access  paierns  

§  Including  how  step  through  mul;-­‐dimensional  array  

Bryant  and  O’Hallaron,  Computer  Systems:  A  Programmer’s  Perspec;ve,  Third  Edi;on   12



Why  The  Performance  Differs  
copyij

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

Great  Reality  #5:  


Computers  do  more  than  execute  programs  
¢  They  need  to  get  data  in  and  out  
§  I/O  system  cri;cal  to  program  reliability  and  performance  

¢  They  communicate  with  each  other  over  networks  


§  Many  system-­‐level  issues  arise  in  presence  of  network  
§  Concurrent  opera;ons  by  autonomous  processes  
§  Coping  with  unreliable  media  
§  Cross  plarorm  compa;bility  
§  Complex  performance  issues  

Bryant  and  O’Hallaron,  Computer  Systems:  A  Programmer’s  Perspec;ve,  Third  Edi;on   14



Carnegie Mellon

Role  within  CS/ECE  Curriculum  


CS  412 ECE  545/549  
OS  Prac;cum   Capstone  

CS  410 ECE  340   ECE  349 ECE  348


CS  415 CS  441 CS  411 ECE  447
Opera;ng Digital   Embedded Embedded
Databases   Networks   Compilers   Architecture  
Systems   Computa;on   Systems   System  Eng.  

Network   Processes   Machine  


Data  Reps.   Execu;on  Model  
Protocols   Mem.  Mgmt   Code   Arithme;c  
Memory  Model   Memory  System  
CS  440
Distributed     Network  Prog  
systems   Concurrency  
213  
Founda;on  of  Computer  Systems  
Underlying  principles  for  hardware,    
sokware,  and  networking  

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  

Bryant  and  O’Hallaron,  Computer  Systems:  A  Programmer’s  Perspec;ve,  Third  Edi;on   16



Carnegie Mellon

Instructors  

Randy Bryant

Dave O’Hallaron

Bryant  and  O’Hallaron,  Computer  Systems:  A  Programmer’s  Perspec;ve,  Third  Edi;on   17



15-­‐513  vs  15-­‐213  and  18-­‐213    
¢  There  is  enormous  demand  from  MS  students  for  213.  
§  In  the  past,  many  MS  students  could  not  get  in.  Here’s  our  solu;on…  

¢  15-­‐213  and  18-­‐213  are  for  undergrads  only.  


§  Undergrads  will  aiend  lectures  and  recita;ons  in  person,  as  usual  
¢  15-­‐513  is  for  grad  students  only.    
§  In  order  to  accommodate  the  volume  of  students,  grad  students  do  not  
aiend  recita;on  and  lecture  in  person.  
§  We  will  videotape  each  lecture  and  recita;on  and  post  them  akerward  on  
the  course  Web  site  (hip://www.cs.cmu.edu/~213)  
¢  For  help,  all  students  have  equal  access  to  the  TA  office  hours  
and  staff  mailing  list.  
¢  All  students  do  the  same  assignments  and  exams.  

Bryant    and  O’Hallaron,  Computer  Systems:  A  Programmer’s  Perspec;ve,  Third  Edi;on   18



Carnegie Mellon

Chea;ng:  Descrip;on  
¢  Please  pay  close  a\en7on,  especially  if  this  is  your  first  semester  at  
CMU  

¢  What  is  chea;ng?  


§  Sharing  code:  by  copying,  retyping,  looking  at,  or  supplying  a  file  
§  Describing:  verbal  descrip;on  of  code  from  one  person  to  another.  
§  Coaching:  helping  your  friend  to  write  a  lab,  line  by  line  
§  Searching  the  Web  for  solu;ons  
§  Copying  code  from  a  previous  course  or  online  solu;on  
§  You  are  only  allowed  to  use  code  we  supply,  or  from  the  CS:APP  website  
¢  What  is  NOT  chea;ng?  
§  Explaining  how  to  use  systems  or  tools  
§  Helping  others  with  high-­‐level  design  issues  

¢  See  the  course  syllabus  for  details.  


§  Ignorance  is  not  an  excuse  

Bryant  and  O’Hallaron,  Computer  Systems:  A  Programmer’s  Perspec;ve,  Third  Edi;on   19



Carnegie Mellon

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  

¢  Detec;on  of  chea;ng:  


§  We  have  sophis;cated  tools  for  detec;ng  code  plagiarism  
§  Last  Fall,  25  students  were  caught  chea;ng  and  failed  the  course.    
§  Some  were  expelled  from  the  University  

¢  Don’t  do  it!  


§  Start  early  
§  Ask  the  staff  for  help  when  you  get  stuck  
  20

Bryant  and  O’Hallaron,  Computer  Systems:  A  Programmer’s  Perspec;ve,  Third  Edi;on  
Carnegie Mellon

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  

¢  Brian  Kernighan  and  Dennis  Ritchie,    


§  The  C  Programming  Language,  Second  Edi;on,  Pren;ce  Hall,  1988  
§  S;ll  the  best  book  about  C,  from  the  originators  

Bryant  and  O’Hallaron,  Computer  Systems:  A  Programmer’s  Perspec;ve,  Third  Edi;on   21



Carnegie Mellon

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  

Bryant  and  O’Hallaron,  Computer  Systems:  A  Programmer’s  Perspec;ve,  Third  Edi;on   22



Carnegie Mellon

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  

¢  Blackboard  and  Piazza  


§  We  won’t  be  using  Blackboard  or  Piazza  for  the  course  

Bryant  and  O’Hallaron,  Computer  Systems:  A  Programmer’s  Perspec;ve,  Third  Edi;on   23



Carnegie Mellon

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  

¢  Office  hours  (star;ng  Tue  Sep  8):  


§  SMTWRF,  5:45-­‐8:30pm,  WeH  5207  
 
¢  1:1  Appointments  
§  You  can  schedule  1:1  appointments  with  any  of  the  teaching  staff  
 

Bryant  and  O’Hallaron,  Computer  Systems:  A  Programmer’s  Perspec;ve,  Third  Edi;on   24



Carnegie Mellon

Policies:  Labs  And  Exams  


¢  Work  groups  
§  You  must  work  alone  on  all  lab  assignments  
¢  Handins  
§  Labs  due  at  11:59pm  on  Tues  or  Thurs  
§  Electronic  handins  using  Autolab  (no  excep;ons!)  
¢  Exams  
§  Exams  will  be  online  in  network-­‐isolated  clusters  
§  Held  over  mul;ple  days.  Self-­‐scheduled;  just  sign  up!  
¢  Appealing  grades  
§  In  wri7ng  to  Prof  O’Hallaron  within  7  days  of  comple;on  of  grading  
§  Follow  formal  procedure  described  in  syllabus  

Bryant  and  O’Hallaron,  Computer  Systems:  A  Programmer’s  Perspec;ve,  Third  Edi;on   25



Carnegie Mellon

Facili;es  
¢  Labs  will  use  the  Intel  Computer  Systems  Cluster  
§  The  “shark  machines”  
§  linux> ssh shark.ics.cs.cmu.edu

§  21  servers  donated  by  Intel  for  213  


10  student  machines  (for  student  logins)  
§ 
§  1  head  node  (for  Autolab  server  and  instructor  logins)  
§  10  grading  machines  (for  autograding)  
§  Each  server:  iCore  7:  8  Nehalem  cores,  32  GB  DRAM,  RHEL  6.1  
§  Rack-­‐mounted  in  Gates  machine  room  
§  Login  using  your  Andrew  ID  and  password  
¢  Gewng  help  with  the  cluster  machines:  
§  Please  direct  ques;ons  to  staff  mailing  list  

Bryant  and  O’Hallaron,  Computer  Systems:  A  Programmer’s  Perspec;ve,  Third  Edi;on   26



Carnegie Mellon

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

Other  Rules  of  the  Lecture  Hall  


¢  Laptops:  permiied  

¢  Electronic  communica;ons:  forbidden  


§  No  email,  instant  messaging,  cell  phone  calls,  etc  

¢  Presence  in  lectures,  recita;ons:  voluntary,  recommended  

¢  No  recordings  of  ANY  KIND  

Bryant  and  O’Hallaron,  Computer  Systems:  A  Programmer’s  Perspec;ve,  Third  Edi;on   28



Carnegie Mellon

Policies:  Grading  
¢  Exams  (50%):  midterm  (20%),  final  (30%)  

¢  Labs  (50%):  weighted  according  to  effort  


 
¢  Final  grades  based  on  a  straight  scale.  

Bryant  and  O’Hallaron,  Computer  Systems:  A  Programmer’s  Perspec;ve,  Third  Edi;on   29



Carnegie Mellon

Programs  and  Data  


¢  Topics  
§  Bits  opera;ons,  arithme;c,  assembly  language  programs  
§  Representa;on  of  C  control  and  data  structures  
§  Includes  aspects  of  architecture  and  compilers    

¢  Assignments  
§  L1  (datalab):  Manipula;ng  bits  
§  L2  (bomblab):  Defusing  a  binary  bomb  
§  L3  (aiacklab):  The  basics  of  code  injec;on  aiacks  

Bryant  and  O’Hallaron,  Computer  Systems:  A  Programmer’s  Perspec;ve,  Third  Edi;on   30



Carnegie Mellon

The  Memory  Hierarchy  


¢  Topics  
§  Memory  technology,  memory  hierarchy,  caches,  disks,  locality  
§  Includes  aspects  of  architecture  and  OS  

¢  Assignments  
§  L4  (cachelab):  Building  a  cache  simulator  and  op;mizing  for  locality.  
§  Learn  how  to  exploit  locality  in  your  programs.    

Bryant  and  O’Hallaron,  Computer  Systems:  A  Programmer’s  Perspec;ve,  Third  Edi;on   31



Carnegie Mellon

Excep;onal    Control  Flow  


¢  Topics  
§  Hardware  excep;ons,  processes,  process  control,  Unix  signals,  
nonlocal  jumps  
§  Includes  aspects  of  compilers,  OS,  and  architecture  

¢  Assignments  
§  L5  (tshlab):  Wri;ng  your  own  Unix  shell.  
§  A  first  introduc;on  to  concurrency  

Bryant  and  O’Hallaron,  Computer  Systems:  A  Programmer’s  Perspec;ve,  Third  Edi;on   32



Carnegie Mellon

 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  

Bryant  and  O’Hallaron,  Computer  Systems:  A  Programmer’s  Perspec;ve,  Third  Edi;on   33



Carnegie Mellon

 Networking,  and  Concurrency  


¢  Topics  
§  High  level  and  low-­‐level  I/O,  network  programming  
§  Internet  services,  Web  servers  
§  concurrency,  concurrent  server  design,  threads  
§  I/O  mul;plexing  with  select  
§  Includes  aspects  of  networking,  OS,  and  architecture  

¢  Assignments  
§  L7  (proxylab):  Wri;ng  your  own  Web  proxy  
§  Learn  network  programming  and  more  about  concurrency  and  
synchroniza;on.    

Bryant  and  O’Hallaron,  Computer  Systems:  A  Programmer’s  Perspec;ve,  Third  Edi;on   34



Carnegie Mellon

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!  

Bryant  and  O’Hallaron,  Computer  Systems:  A  Programmer’s  Perspec;ve,  Third  Edi;on   35



Carnegie Mellon

 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.    

Bryant  and  O’Hallaron,  Computer  Systems:  A  Programmer’s  Perspec;ve,  Third  Edi;on   37



Carnegie Mellon

 Waitlist  ques;ons  
¢  15-­‐213:  Catherine  Fichtner  ([email protected])  
¢  18-­‐213:  Zara  Collier  ([email protected])  

¢  15-­‐513:  Catherine  Fichtner  ([email protected])  

¢  Please  don’t  contact  the  instructors  with  waitlist  ques;ons.  


 

Bryant  and  O’Hallaron,  Computer  Systems:  A  Programmer’s  Perspec;ve,  Third  Edi;on   38



Carnegie Mellon

Welcome  
and  Enjoy!    

Bryant  and  O’Hallaron,  Computer  Systems:  A  Programmer’s  Perspec;ve,  Third  Edi;on   39

You might also like