01 Overview
01 Overview
Course Overview
15-213/14-513/15-513:
Introduction to Computer Systems
1st Lecture, Aug 29, 2023 Instructors:
Phil Gibbons (15-213 / 15-513)
Brian Railing (15-213 / 15-513)
David Varodayan (14-513)
Overview
Introductions
Big Picture
Course theme
Five realities
How the course fits into the CS/ECE/INI curriculum
Academic integrity
Logistics and Policies
Instructors
Brian Railing Phil Gibbons
15-
213
15-
513
David
Varodayan
14-513
Course Theme:
(Systems) Knowledge is Power!
Systems Knowledge
How hardware (processors, memories, disk drives, network infrastructure)
plus software (operating systems, compilers, libraries, network protocols)
combine to support the execution of application programs
How you as a programmer can best use these resources
Useful outcomes from taking 213/513
Become more effective 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, Operating Systems, Networks, Computer Architecture,
Embedded Systems, Storage Systems, etc.
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 Perspective, Third Edition
Source: xkcd.com/571 7
Carnegie Mellon
Computer Arithmetic
Does not generate random values
Arithmetic operations have important mathematical properties
Cannot assume all “usual” mathematical
properties
Due to finiteness of representations
Integer operations satisfy “ring” properties
Commutativity, associativity, distributivity
Floating point operations satisfy “ordering” properties
Monotonicity, values of signs
Observation
Need to understand which abstractions apply in which contexts
Important issues for compiler writers and serious application programmers
double fun(int i) {
volatile struct_t s;
s.d = 3.14;
s.a[i] = 1073741824; /* Possibly out of bounds */
return s.d;
}
Explanation:
Critical State 6
? 5
? 4
d7 ... d4 3 Location accessed by
d3 ... d0 2 fun(i)
struct_t
a[1] 1
a[0] 0
performance
Easily see 10:1 performance range depending on how code written
Must optimize at multiple levels: algorithm, data representations,
procedures, and loops
Must understand system to optimize
performance
How programs compiled and executed
How to measure program performance and identify bottlenecks
How to improve performance without destroying code modularity and
generality
4.3ms 81.8ms
2.0 GHz Intel Core i7 Haswell
Hierarchical memory organization
Performance depends on access patterns
16000
14000
Read throughput (MB/s)
12000
10000
8000
6000
4000
2000
copyji 16
0 32 k
64 k
s1 12
s2 25 8k k
s3 10 51 6k
s4 24 2k
s5 2m k
s6 4m
s7 16 8m
s8 32 m
Stride (x8 bytes) s9 64
s1 12 m m Size (bytes)
0 s1 8m
1
Course Perspective
Most Systems Courses are Builder-Centric
Computer Architecture
Design pipelined processor in Verilog
Operating Systems
Implement sample portions of operating system
Compilers
Write compiler for simple language
Networking
Implement and simulate network protocols
Foundation of Computer
Systems 213/513
Underlying principles for
hardware,
software, and networking
CS Systems ECE Systems
• 15-319 Cloud • 18-330 Computer Security
Computing • 18-349 Intro to Embedded
• 15-330 Computer Systems
Security • 18-441 Computer Networks
• 15-346 Computer • 18-447 Computer
Architecture Architecture
• 15-410 Operating • 18-452 Wireless Networking
Systems CS •Graphics
18-451 Cyberphysical
• 15-411 Compiler Design • 15-462 Computer
Systems
• 15-415 Database Graphics
Applications • 15-463 Comp.
Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, Third Edition 20
Carnegie Mellon
Academic
Integrity
Please pay close attention,
especially if this is your
first semester at CMU
Cheating/Plagiarism: Description
Unauthorized use of information
Borrowing code: by copying, retyping, looking at a file
Describing: verbal description of code from one person to another
Even if you just describe/discuss how to put together CS:APP code
snippets to solve the problem
Searching the Web for solutions, discussions, tutorials, blogs, other
universities’ 213 instances,… in English or any other language
Copying code from a previous course or online solution
Reusing your code from a previous semester (here or elsewhere)
If you take the course this semester, all work has to be done this
semester (unless you have special permission from the instructors)
Cheating/Plagiarism: Description
(cont.)
Unauthorized supplying of information
Providing copy: Giving a copy of a file to someone
Providing access:
Putting material in unprotected directory
Putting material in unprotected code repository (e.g., Github)
– Or, letting protections expire
Applies to this term and the future
There is no statute of limitations for academic integrity violations
Cheating/Plagiarism: Description
What is NOT cheating?
Explaining how to use systems or tools
Helping others with high-level design issues
High means VERY high
Using code supplied by us
Using code from the CS:APP web site
Using books from the library, Unix manpages, other published material
Except the “Solutions Manual for CS:APP”
Using general online references
OK: The GNU C Library Manual, Beej’s Guide to C, cplusplus.com
Not OK: searching for “213 malloc solution”
Cheating/Plagiarism: Attribution
If you copy code (that you’re allowed to copy),
you MUST credit the author
Starter code: No
Any other allowed code (course, CS:APP, etc): Yes
Indicate source, beginning, and end
Here’s what it should look like:
/** Hash a 4-byte integer.
* This is the “6 shifts” function from
*
https://burtleburtle.net/bob/hash/integer.html
* (second from the top on that page)
*/
uint32_t hash( uint32_t a)
{
a = (a+0x7ed55d16) + (a<<12);
// ...
}
Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, Third Edition 26
Carnegie Mellon
Cheating: Consequences
Penalty for cheating:
Best case: -100% for assignment
You would be better off to turn in nothing
Worst case: Removal from course with failing grade
This is the default
University-level involvement (from notification to serious things)
Loss of respect by you, the instructors and your colleagues
If you do cheat – come clean asap!
Detection of cheating:
We have sophisticated tools for detecting code plagiarism
In Fall 2015, 20 students were caught cheating and failed the course.
Some were expelled from the University
In January 2016, 11 students were penalized for cheating violations that occurred as far back as Spring 2014.
In May 2019, we gave an AIV to a student who took the course in Fall 2018 for unauthorized coaching of a Spring
2019 student. His grade was changed retroactively.
Don’t do it!
Manage your time carefully
Ask the staff for help when you get stuck
We will help you! We will give you extensions! We want you to succeed.
Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, Third Edition 27
Carnegie Mellon
Cheating Notes
We have written over 100 letters for cheating
cases
Don’t add to this total
Some have been for years earlier
Another Scenario
Alice is working on malloc lab and is just plain stuck. Her code is
seg faulting and she doesn't know why. It is only 2 days until
malloc lab is due and she has 3 other assignments due this same
week. She is in the cluster.
Bob is sitting next to her. He is pretty much done.
Sitting next to Bob is Charlie. He is also stuck.
1. Bob offers to help Alice and they go over her code
together.
Who cheated: Bob? Alice?
2. Bob gets up to go to the bathroom and Charlie
looks over at his screen to see how Bob implemented
his free list.
Who cheated: Charlie? Bob?
consult
the GIT server and look for a reasonable commit history
Missing GIT history will count against you
Note: Posting your work for this class in a public Git repo (on
your personal GitHub account, for instance) is considered an
AIV
You’re making it too easy for other people to copy from you
Use a private repo shared with specific people if you want to e.g. show your work to a
potential employer
Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, Third Edition 36
Carnegie Mellon
Logistics
grade.
You have the right to request to be excluded from
the studies.
Primary Textbook
Randal E. Bryant and David R. O’Hallaron,
Computer Systems: A Programmer’s Perspective, Third Edition (CS:APP3e),
Pearson, 2016
https://csapp.cs.cmu.edu
This book really matters for the course!
How to solve labs
Practice problems typical of exam problems
Electronic editions available (Don’t get paperback/international version!)
On reserve in Sorrells Library
Recommended reading
Brian Kernighan and Dennis Ritchie,
The C Programming Language, Second Edition, Prentice Hall, 1988
Everyone calls this book “K&R”
Guide to C by the designers of the language
Well-written, concise
A little dated
Doesn’t cover additions to C since 1988 (that’s thirty years ago…)
Casual about issues we consider serious problems now
On reserve in Sorrells Library
Course Components
Lectures
Higher level concepts
In-class quizzes (except 15-513) could tilt you to a higher grade if borderline
Some lectures include more involved in-class activities
Labs (8)
1-2+ weeks each
Provide in-depth understanding of an aspect of systems
Programming and measurement
Written Assignments (best 10 of 12)
Reinforce concepts. A “midterm” assignment counts double.
You earn 1/4 of score by grading your peers’ work according to our rubric
Due Wednesdays at 11:59pm ET with peer grades due the next Wednesday
Final Exam
Test your understanding of concepts & mathematical principles
Covers content from the whole semester
Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, Third Edition 44
Carnegie Mellon
Assignments
L0 (C programming Lab): Test/refresh your C programming abilities
L1 (datalab): Manipulating bits
L2 (bomblab): Defusing a binary bomb
L3 (attacklab): The basics of code injection attacks
Assignments
L4 (cachelab): Building a cache simulator and optimizing for locality.
Learn how to exploit locality in your programs.
Virtual Memory
Topics
Virtual memory, address translation, dynamic storage allocation
Includes aspects of architecture and OS
Assignments
L5 (malloclab): Writing your own malloc package
Get a real feel for systems-level programming
Assignments
L6 (tshlab): Writing your own Unix shell.
A first introduction to concurrency
Assignments
L7 (proxylab): Writing your own Web proxy
Learn network programming and more about concurrency and
synchronization.
Lab Rationale
Each lab has a well-defined goal such as solving a
puzzle or winning a contest
Lab0: C Programming
You can start now: see 213 schedule page
It should all be review:
Policies: Lab
Work groups
You must work alone on all lab assignments
Handins
Labs due at 11:59pm ET
Electronic handins using Autolab (no exceptions!)
Timeliness
Grace days
5 grace days for the semester
Limit of 0, 1, or 2 grace days per lab used automatically
Covers scheduling crunch, out-of-town trips, illnesses, minor setbacks
Lateness penalties
Once grace day(s) used up, get penalized 15% per day
No handins later than 3 days after due date
Catastrophic events
Major illness, death in family, …
Fill in form (link on Piazza) to request more time
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
Try to save your grace days until the last few labs
Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, Third Edition 53
Carnegie Mellon
Facilities
Labs will use the Intel Computer Systems Cluster
The “shark machines”
linux> ssh shark.ics.cs.cmu.edu
Please don’t use the general-purpose Andrew clusters for 213 work
They get overloaded
They don’t have the right compilers
You can try to do the labs on your local machine
But it probably doesn’t have the right compilers either
make submit definitely won’t work
Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, Third Edition 54
Carnegie Mellon
Autolab
(https://autolab.andrew.cmu.edu)
Labs are provided by the CMU Autolab system
Project page: http://autolab.andrew.cmu.edu
Developed by CMU faculty and students
Key ideas: Autograding and Scoreboards
Autograding: Providing you with instant feedback.
Scoreboards: Real-time, 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 evaluations, and gradebook.
View the TA annotations of your code for Style points.
Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, Third Edition 55
Carnegie Mellon
Autolab accounts
Students enrolled by Monday Aug 28 have Autolab
accounts
You must be enrolled to get an account
Autolab is not tied into the Hub’s rosters
If you add in, sign up with Google form (check on Piazza)
We will update the autolab accounts once a day, so check back in 24 hours.
For those who are waiting to add in, the first lab
(C Programming Lab) is available on the Schedule
page of the course Web site.
Getting Help
Class Web page:
http://www.cs.cmu.edu/~213 for 15-213/14-513/15-513
Complete schedule of lectures, exams, and assignments
Copies of lectures, assignments, exams, solutions
FAQ
Piazza
Best place for questions about assignments
We will fill the FAQ and Piazza with answers to common questions
Be careful about public posts: Remember the AIV policy
Canvas
Recorded lectures
In-class quizzes
Written assignments
Getting Help
Email
Send email to individual instructors or TAs only to schedule appointments
Office hours
TAs: See separate slide for 15-cohort vs. 18-cohort
Instructors: See course home page
Walk-in Tutoring
Details TBA. Will put information on class webpage.
1:1 Appointments
You can schedule 1:1 appointments with any of the teaching staff
Recitations
Begin Friday Sept 1
You must go to the recitation the registrar put you in
Office Hours
TA office hours begin next week (week of Sept 4)
Both in-person and remote (Zoom) will be offered
Policies: Grading
Final Exam (30%)
Bootcamps
Bootcamp #1
Linux, the Command Line and Git
Sunday Sept 3
Bootcamp #2
Debugging Fundamentals & GDB
Sunday Sept 10
Bootcamp #3
GCC & Build Automation (makefiles)
See schedule page on the web
Waitlist questions
15-213: Amy Weis ([email protected])
15-513: Amy Weis ([email protected])
Go to recitation
Welcome
and
Enjoy!