cs110 Win2122 Lecture 1
cs110 Win2122 Lecture 1
2
Lecture Plan
Introduction
Course Topics Overview
Course Policies
3
Lecture Plan
Introduction
Course Topics Overview
Course Policies
4
Guiding Principles For This Quarter
We are each starting the new year in unique circumstances.
We are likely not fully recovered or restored from the stresses of the past 2 years and
now facing new uncertainties, responsibilities, and emotions.
We will do everything we can to support you. We have designed the course to the best
of our ability to provide flexibility.
We will constantly evaluate and listen to ensure the class is going as smoothly as
possible for everyone.
Please communicate with us if any personal circumstances or issues arise! We are
here to support you.
5
What is CS110?
CS107 took you behind the scenes:
how things work inside C++/Python/Java, and how your programs map onto the
components of computer systems
understanding of program behavior and execution
6
What is CS110?
CS107 took you behind the scenes:
how things work inside C++/Python/Java, and how your programs map onto the
components of computer systems
understanding of program behavior and execution
CS110 uses this as a foundation to build complex programs that maximally take
advantage of the hardware and operating system software available to us:
How can we understand the designs and tradeoffs of large systems?
How can we write software that spans multiple machines?
How can we write software that runs tasks in parallel on a single machine?
6
Prerequisites
CS107 or equivalent -
Each of you should know C and C++ reasonably well so that you can...
write moderately complex programs (e.g. pointers, malloc/realloc/free, C strings,
C++ classes, methods, references, templates, new/delete)
read and understand portions of large code bases
trace memory diagrams and always win!
Each of you should be fluent with Unix, GDB, Valgrind, and Make to the extent they're
covered in CS107 or its equivalent.
7
Prerequisites
CS107 or equivalent -
Each of you should know C and C++ reasonably well so that you can...
write moderately complex programs (e.g. pointers, malloc/realloc/free, C strings,
C++ classes, methods, references, templates, new/delete)
read and understand portions of large code bases
trace memory diagrams and always win!
Each of you should be fluent with Unix, GDB, Valgrind, and Make to the extent they're
covered in CS107 or its equivalent.
The first assignment is meant to give you a sense of the scope of CS110 programs and refresh your
memory on relevant prerequisites. If you feel ok about it, you're all set!
7
What do you hope to achieve this quarter
in CS110?
8
Teaching Team
Nick Troccoli (Instructor) Jerry Cain (Instructor) Sophie Decoppet (CA) Ayelet Drazen (CA)
Jonathan Kula (CA) Victor Lin (CA) Swayam Parida (CA) Joel Ramirez (CA)
9
Instructors
Nick Troccoli
Stanford BS/MS (coterm) in CS - systems track undergrad, AI track grad
Lecturer in CS, teaching CS106X, 107, 110
Systems has played a key part in my discovery of CS, and CS110 was one of my favorite classes!
Jerry Cain
Chemistry undergrad MIT, originally chemistry Ph.D. student here, defected to CS
Senior Lecturer in CS, teaching CS106AX, CS106X, CS107, CS109, and CS110
Taught CS110 for the first time in Spring 2013, and I absolutely love teaching it!
CS110 is still an evolving system—particularly given the upheaval of the last 22 months—but hopefully
you don't notice one bit
Introduced my own materials since then, and will introduce even more this time
Leveraged much of Mendel Rosenblum's CS110 materials from prior offerings
Started working at Facebook in 2008, still with them in an emeritus role
Have grown to understand and appreciate large systems much better as a result of working there
Learned web programming, PHP, CSS, JavaScript. Old CS107 student of mine (class of 2004) is my
manager 10
Companion Class: CS110A
CS110A is an extra 1-unit “Pathfinders” or “ACE” section with additional course
support, practice and instruction.
Meets for an additional weekly section and has additional review sessions
Section Tues. 11AM-1PM
Entry by application, due 1/7 at 5PM: click right here
see the CS110 course homepage for more details: cs110.stanford.edu
11
Companion Class: CS110L
CS110L is an extra 2-unit course that digs a bit deeper into the CS110 material for
those who are interested
The goal is to offer an approachable and engaging exposure to effective, robust, and
secure systems programming.
Program in Rust
see the CS110L course homepage for more details: cs110l.stanford.edu
13
Course Topics Overview
1. Overview of Linux Filesystems - How can we design filesystems to store and manipulate
files on disk?
2. Multiprocessing and Exceptional Control Flow - How can our program create and
interact with other programs?
3. Threading and Concurrency - How can a single instance of our program perform multiple
coordinated tasks at the same time?
4. Networking and Distributed Computing - How can we write programs that
communicate over a network with other programs, and tackle large tasks using many
machines?
5. Additional Topics: MapReduce, Caching, and Non-Blocking I/O
16
2. Multiprocessing and Exceptional Control Flow
Key Question: How can our program create and interact with other programs?
17
3. Threading and Concurrency
Key Question: How can a single instance of our program perform multiple coordinated tasks at
the same time?
20
Course Resources/Tools
Course Website: cs110.stanford.edu
Canvas for lecture videos and Zoom links
Gradescope for concept checks
EdStem for discussion forum
Zoom for lecture/section during the first two weeks
Slack for fostering community and getting to know each other
21
Course Information and Calendar
22
Textbooks
Second half of CS107 Textbook: Computer Systems: A Programmer's Perspective by Bryant &
O'Hallaron, 3rd Edition
Can purchase full copy, or Stanford Bookstore custom edition with just CS110
chapters
23
Course Structure
Lectures: understand concepts, see demos
Lab Sections: practice concepts, discuss with peers - great preview of homework!
Assignments: build programming skills, synthesize lecture/lab content
26
Discussion Section Participation (<= 5%)
Weekly 80-minute sections/labs led by a CA, starting next week, offered at various
times
Hands-on practice in small groups with lecture material and course concepts
Graded on attendance and participation
Lab preference submissions open Tuesday 1/4 and are not first- come first-serve. You
may submit your preferences anytime until Saturday 1/8. Sign up on the course
website.
Your total discussion section grade is 100%. However, every time you miss a section,
your discussion section grade weight is reduced by 1% and your final (3rd) assessment
grade weight is increased by 1%.
27
Question Break!
What questions do you have about the topics so far? (course structure/goals,
textbooks, lectures / concept checks or discussion sections)
28
Assignments (54%)
6 programming assignments, each weighted 9%, completed individually using Unix
command line tools / the Myth machines
Graded on functionality (automated tests - 85%) and style (TA code review - 15%)
Late policy - if you submit...
up to 24 hours later: 95% cap
24-48 hours later: 90% cap
more than 48 hours later: 85% cap - but you must notify us
If you get less than an 85% functionality score, you may resubmit, capped at 85%
Extensions for exceptional circumstances must be approved by Nick and Jerry. Please
communicate with us! We are here to accommodate you as much as possible.
You must get at least 70% functionality on each assignment to pass the class.
29
Assessments (36%)
3 assessments this quarter at the end of weeks 3, 6, and during our final exam slot
First two assessments are take-home (given 48-hour window when you can take the
assessment for 3 hours), third assessment is in-person
First two assessments 10%; last assessment 16%
First two assessments open-book, final assessment is closed-book
If you have testing accommodations, please let us know as soon as possible
30
Course Grading
Per-Lecture Concept Checks: 5%
Discussion Section Participation: 5% (or less)
Assignments: 54% (9% x 6)
Assessments: 36% (10% + 10% + 16%)
32
Honor Code
Please take the honor code seriously, because the CS Department does
Everything you submit for a grade is expected to be original work
Provide detailed citations of all sources and collaborations
The following are clear no-no's
Looking at another student's code
Showing another student your code
Discussing assignments in such detail that you duplicate a portion of someone else's
code in your own program
Uploading your code to a public repository (e.g. github) so others can find it - if you'd like
to upload your code to a private repository, you can do so
For take-home assessments, you may not actively collaborate with others in person or online.
In general, you can only rely on materials that are discoverable by all students via search
engines.
Tutoring is not appropriate for help with work that will be submitted for a grade.
33
Honor Code
Assignments are checked regularly for similarity with help of software tools.
If you need help, please contact us and we will help you.
We do not want you to feel any pressure to violate the Honor Code in order to succeed in this
course.
If you realize that you have made a mistake, you may retract your submission to any assignment
at any time, no questions asked.
34
Question Break!
What questions do you have about the topics so far? (assignments,
assessments, course support, or honor code)
35
Recap
Introduction
Course Topics Overview
Course Policies
36