210 likes | 230 Views
Information about CS 3214 Fall 2014 course outline, grading, projects, forum rules, honor code, acknowledgements, prerequisites, and role of the course.
E N D
CS 3214Computer Systems Godmar Back Course Introduction
About Me • Undergraduate Work at Humboldt and Technical University Berlin • PhD University of Utah • Postdoctoral Work at Stanford University • 11th Year at Virginia Tech • joined August 2004, • Tenured Associate Professor since June 2010 • Designed this class; 5th time teaching it • Research Interests: • Systems, including Virtual Machines, Cloud Computing, Web Technology CS 3214 Fall 2014
Administrivia CS 3214 Fall 2014
Course Facts • Meet Monday & Wednesday • Section 1: WLH 320: 4:00pm-5:15pm • Check website regularly • http://courses.cs.vt.edu/~cs3214 • Use CS Forum http://www.piazza.com • Send email to cs3214-staff@cs.vt.edu • All students enrolled in CS3214 have access to McB 124 (Systems Lab) CS 3214 Fall 2014
Force/Add • If you are not enrolled, do this now: • Have students log into https://www.cs.vt.edu/F14Force-AddsThe password for your 3214 section is 3214gvb# CS 3214 Fall 2014
Reading Material • Required Textbook • Bryant and O’Hallaron(2nd Edition), 2011 • Will post reading assignments CS 3214 Fall 2014
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 2014
Grading • Tentative breakdown (subject to change): • 12.5% Midterm • 22.5% Final • 42.5% Projects (1 & 4 will weigh more heavily than 2 & 3) • 22.5% Exercises • Not grading on standard scale; grade will be based on a curve of students attempting this course: • Median typically between B and C • 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 can cap your grade • Define minimum requirements that must be met for each project • Not meeting requirements for 1, 2, 3, or 4 projects lowers your maximum grade to B+, C+, D+, F respectively • You may still fail CS 3214 Fall 2014
Group Projects • Projects are group projects • Projects 1 and 4 MUST be done by a group • Projects 2 and 3 MAY be done by a group • 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 • May partner across class sections • Exercises are done individually CS 3214 Fall 2014
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 CS 3214 Fall 2014
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 2014
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 2014
Prerequisites • Knowledge of computer organization (CS 2506) • Knowledge of algorithms & data structures (CS 2114) • Generally follow the department’s guidelines CS 3214 Fall 2014
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 2014
Typical System Architecture #include <stdio.h> int main() { printf("Hello World\n"); } #include <stdio.h> int main() { printf("Hello World\n"); } Virtual Machine User Program #include <stdio.h> int main() { printf("Hello World\n"); } #include <stdio.h> int main() { printf("Hello World\n"); } #include <stdio.h> int main() { printf("Hello World\n"); } JIT Garbage Collector Runtime Libraries #include <stdio.h> int main() { printf("Hello World\n"); } Threads user mode Processes Other Libraries (libpthreads, libm, libz, etc. etc. System Call kernel mode Kernel C Library (libc) Hardware: (CPUs/Cores, Memory, Disk, Network, etc.) CS 3214 Fall 2014
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 2014
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 CS 3214 Fall 2014
Topic 1: Processes • Learn the underlying abstractions of processes and multi-process applications • Gain experience with Unix system calls related to processes • Subtopics: • Process creation and management • Signals and signal handling • Interprocess communication • Project 1 • Write your own shell CS 3214 Fall 2014
Topic 2: Threads • Understand trends in computer architecture and its implications for application design • Explore concurrency and race conditions • Learn commonly used synchronization techniques in C (and Java) • Learn how to manage concurrency • Understand deadlock: causes and preventions • Project 2 • Managing a pool of threads • Future synchronization CS 3214 Fall 2014
Topic 3: Memory • Understanding the construction and management of a process’s memory image • The linking and loading processes • User-level memory management • Explicit vs. automated • User-level APIs for shared memory • Concepts underlying virtual memory and caching • Understand programmer impact • Memory tools • Project 3 • User-level malloc() CS 3214 Fall 2014
Topic 4: Internet • Understand basics of Internet addressing and communication • Understand use of socket API and underlying abstractions, • Understand protocol layering and basic protocol design with a focus on HTTP • Understand how to write multi-threaded and event-based server programs • Fundamentals of Virtual Machine Monitors • Exercise 5 • Set up your own hosted VM in Amazon cloud (AWS) • Project 4 • A multi-threaded HTTP server CS 3214 Fall 2014