240 likes | 391 Views
CS 3214 Computer Systems. Godmar Back. Lecture 1. About Me. Undergraduate Work at Humboldt and Technical University Berlin PhD University of Utah Postdoctoral Work at Stanford University 7 th Year at Virginia Tech joined August 2004, Tenured Associate Professor since June 2010
E N D
CS 3214Computer Systems Godmar Back Lecture 1
About Me • Undergraduate Work at Humboldt and Technical University Berlin • PhD University of Utah • Postdoctoral Work at Stanford University • 7th Year at Virginia Tech • joined August 2004, • Tenured Associate Professor since June 2010 • 3rd time teaching this class • Research Interests: • Systems CS 3214 Fall 2010
Administrivia CS 3214 Fall 2010
Course Facts • Meet Tuesday & Thursday 11:00am-12:15pm (GBJ 102) • Check website regularly • http://courses.cs.vt.edu/~cs3214 • Use CS Forum http://forum.cs.vt.edu/ • Send email to • cs3214-staff@cs.vt.edu • TAs: • Scott Schneider • PuranjoyBhattacharjee (50%) • Xiaomo Liu (50%) • Patrick Boyd (UTA) • All students enrolled in CS3214 have access to McB 124 (Systems Lab) CS 3214 Fall 2010
Email Etiquette • Please enter your name in webmail so it appears in From: line • Be coherent when you email CS 3214 Fall 2010
Reading Material • Required Textbook • Bryant and O’Hallaron(2nd Edition), 2011 • Will post reading assignments CS 3214 Fall 2010
Class Format • Lectures • Exams • 1 Midterm • 1 Final (Comprehensive) Exams are only offered at the announced time. Missed exams result in zero score. • Programming Projects • Exercises • Please read the syllabus for late policy CS 3214 Fall 2010
Grading • Tentative breakdown (subject to change): • 12.5% Midterm • 22.5% Final • 42.5% Projects • 22.5% Exercises • Not grading on standard scale; grade will be based on a curve of students attempting this course: • Median will divide B- and B • Grading on a curve means every assignment is important, doing “just enough” is a strategy bound to result in a low grade • Calibrated not just by students in this cohort, but also past offerings • Additional stipulations to pass the class (aka “Auto-Fail Rules”) • Minimum Requirements must be met for each project • Necessary, not sufficient conditions CS 3214 Fall 2010
Group Projects • Projects are group projects • Working in a group more closely resembles what you do outside of academia • Can design together, code together • Group members must contribute equally • 2 students per group • Can change group, but only between projects • Exercises are done individually CS 3214 Fall 2010
Forum Rules (aka Lex skottie) • Not allowed: • Posting of any code that is part of your solution to the forum (*) • Posting the answers to design document or exercise questions • Posting detailed descriptions of your group’s design • Uncivil behavior • (*) Exception: “1-line-rule” • Can post 1 line iff it causes a compile-time error • You are encouraged to post: • Backtraces, debugging output, debugger messages • Illustrating example for a technique • Questions & explanations relating to concept • Questions & answers relating to projects in general • Pointers to external resources you have found • If in doubt, ask before posting! CS 3214 Fall 2010
Honor Code • Will be strictly enforced in this class • Will not give warning or engage in discussions before filing honor code cases where I believe they are warranted • Do not cheat • Observe collaboration policy outlined in syllabus • Will use MOSS for software cheating detection • Do not borrow code from other offerings • Follow collaboration policy • Read all policies posted on the website • “I was not aware…” is no excuse • If in doubt, ask! • Cheating = Copying From Someone Else + Misrepresenting Work As Your Own CS 3214 Fall 2010
Acknowledgements • To avoid plagiarism, document (“acknowledge”) your sources • Will draw in lectures from • Textbook • And other texts, in particular Silberschatz et al’s book (“Dinosaur book”); Stalling’s book and Tannenbaum’s Modern Operating Systems • Course material created for other courses • And other sources as appropriate CS 3214 Fall 2010
Prerequisites • Knowledge of computer organization (CS 2506) • Knowledge of algorithms & data structures (CS 2114) • Please submit prerequisite form • Some knowledge of C CS 3214 Fall 2010
0: x (4 byte int) 4: y (4 byte int) 8: z (4 byte int) 12: c (1 byte char) 13: 3 byte padding 16: o (4 byte float) Talking about C… #define offsetof(TYPE, MEMBER) \ ((size_t) &((TYPE *) 0)->MEMBER) struct point { int x; int y; int z; char c; float o; }; Q.: What is offsetof(struct point, y)? offsetof(struct point, o)? CS 3214 Fall 2010
Role of this Course • Dual role: • Core requirement • What should every student know about systems? • Preparation for senior-level OS/networking course in Spring • Capstone course for students choosing the Systems & Networking track: design an OS • Perspective taken is that of a programmer using a system, not of a designer building one CS 3214 Fall 2010
Outcomes • Be productive in using an OS – focus on Unix here • Understand execution and optimization • Understand overall architecture and concepts • Understand interaction between apps and OS • Understand concepts underlying threading, scheduling, virtual memory, networking, and virtualization CS 3214 Fall 2010
Topic 0: Unix • Throughout: we will be using Linux • You are expected to already bring, or quickly pick up, the necessary skills • Will not set class time aside for this, but am happy to discuss questions on the forum • Exercise 1 may help CS 3214 Fall 2010
Topic 1: Programs and Data • Understand how programs are built, how they execute • Role of the compiler, assembler, and linker • Learn to read and understand x86 code • Learn how to use a debugger • Understand security implications • Assume knowledge of bytes & bits as provided in CS250X • Projects: • “Binary Bomb” • “Buffer Bomb” CS 3214 Fall 2010
Topic 2: Performance • Learn • how to optimize code • how not to optimize code • how to measure performance • the impact of memory hierarchies CS 3214 Fall 2010
Topic 3: Processes and Threads • Learn the underlying abstractions • Learn how to use them • Subtopics: • System calls and exceptions • Thread and process APIs • Interprocess Communication • Project: • Write your own shell CS 3214 Fall 2010
Topic 4: Concurrency & Synchronization • Learn about race conditions • Learn commonly used synchronization techniques in C and Java • Learn how to manage concurrency • Understand deadlock and how to prevent it CS 3214 Fall 2010
Topic 5: Memory • Understand user-level memory management • Explicit vs. automated • User-level APIs for shared memory • Understand concepts underlying Virtual Memory • Understand impact on programmer • Memory tools • Project: • User-level malloc() CS 3214 Fall 2010
Topic 6: I/O and Networking • Understand I/O facilities and layers • Understand use of socket API and underlying abstractions, and basic protocol design with a focus on HTTP • Understand how to write multi-threaded and event-based programs • Project: • A multi-threaded HTTP server CS 3214 Fall 2010
Topic 7: Virtualization • Understand underlying concepts • Understand resource management • Exercise: • Set up your own hosted VM in Amazon cloud (AWS) CS 3214 Fall 2010