15-213/18-213: Introduction to Computer SystemsGreg Ganger, Greg Kesden, and Dave O’HallaronCarnegie Mellon UniversityFall 20141 OrganizationClass Web page: http://www.cs.cmu.edu/˜213Electronic copies of class handouts and lecture slides can be found on the class Web page.Teaching staff email address: [email protected] send email to this address whenever you have questions about the course. Don’t send mail to indi-vidual staff members except to schedule one-on-one meetings. Any emails you send to this address will bereceived by all members of the teaching staff. Using it allows us to give you the fastest and most consistentresponses to your questions. We will not be using Blackboard or any other message board.Instructors:Greg Ganger Greg Kesden Dave O’[email protected] [email protected] [email protected] 2208, 412-268-1297 GHC 7711, 412-268-1590 GHC 7517, 412-268-8199Lecture 1: Tue and Thu, 1:30–2:50pm, DH 2315, Ganger and O’HallaronLecture 2: Tue and Thu, 6:30–7:50pm, WeH 7500, KesdenFeel free to attend either lecture.Recitations:A Mon 10:30-11:20 SH 222B Mon 10:30-11:20 PH 226BC Mon 11:30-12:20 SH 220D Mon 12:30-1:20 DH 2105E Mon 1:30-2:20 PH A19F Mon 1:30-2:20 WEH 5302G Mon 2:30-3:20 WEH 5302H Mon 3:30-4:20 PH 125CI Mon 10:30-11:20 WEH 5310J Mon 11:30-12:20 WEH 5310K Mon 12:30-1:20 WEH 5310L Mon 1:30-2:20 WEH 5310M Mon 2:30-3:20 PH 226BOffice Hours: Please see the class Web page for instructor and TA office hours.12 ObjectivesOur aim in 15-213 is to help you become a better programmer by teaching you the basic concepts underlyingall computer systems. We want you to learn what really happens when your programs run, so that whenthings go wrong (as they always do) you will have the intellectual tools to solve the problem.Why do you need to understand computer systems if you do all of your programming in high level lan-guages? In most of computer science, we’re pushed to make abstractions and stay within their frameworks.But, any abstraction ignores effects that can become critical. As an analogy, Newtonian mechanics ignoresrelativistic effects. The Newtonian abstraction is completely appropriate for bodies moving at less than 0.1c,but higher speeds require working at a greater level of detail.The following “realities” are some of the major areas where the abstractions you’ve learned in previousclasses break down:1. Int’s are not integers, Float’s are not reals. Our finite representations of numbers have significantlimitations, and because of these limitations we sometimes have to think in terms of bit-level repre-sentations.2. You’ve got to know assembly language. Even if you never write programs in assembly, The behavior ofa program cannot be understood sometimes purely based on the abstraction of a high-level language.Further, understanding the effects of bugs requires familiarity with the machine-level model.3. Memory matters. Computer memory is not unbounded. It must be allocated and managed. Memoryreferencing errors are especially pernicious. An erroneous updating of one object can cause a changein some logically unrelated object. Also, the combination of caching and virtual memory provides thefunctionality of a uniform unbounded address space, but not the performance.4. There is more to performance than asymptotic complexity. Constant factors also matter. There aresystematic ways to evaluate and improve program performance.5. Computers do more than execute instructions. They also need to get data in and out and they interactwith other systems over networks.By the end of the course, you will understand these “realities” in some detail. As a result, you will beprepared to take any of the upper-level systems classes at Carnegie Mellon (both CS and ECE). Even moreimportant, you will have learned skills and knowledge that will help you throughout your career.3 TextbookThe primary textbook for the course isRandal E. Bryant and David R. O’Hallaron, Computer Systems: A Programmer’s Perspective,Second Edition (CS:APP2e), Prentice Hall, 2011.2Please make sure you have the Second Edition, which is significantly different from the First Edition pub-lished in 2003. In addition, we require you to have the following reference book on the C programminglanguage:Brian W. Kernighan and Dennis M. Ritchie, The C Programming Language, Second Edition,Prentice Hall, 1988.This is the classic K & R book, the standard against which all reference manuals are compared. It is anessential part of every computer scientist’s library.4 Course OrganizationYour participation in the course will involve five forms of activity:1. Attending the lectures.2. Preparing for and participating in the recitations.3. Doing laboratory assignments.4. Reading the text.5. Taking exams.Attendance will not be taken at the lectures or recitation sections. You will be considered responsible for allmaterial presented at the lectures and recitations.Lectures will cover higher-level concepts. Recitations will be more applied, covering important “how-to’s”,especially in using tools that will help you do the labs. In addition, the recitations will help clarify lecturetopics and describe exam coverage.The textbook contains both practice problems within the chapter text and homework problems at the endof each chapter. The intention is that you work on the practice problems as you are reading the book.The answers to these problems are at the end of each chapter. Our experience has been that trying out theconcepts on simple examples helps make the ideas more concrete. In addition, the class schedule (on theclass Web page) shows specific homework problems with each lecture topic. The intention is that you trythese out and discuss them in the next recitation. You will find that you will get much more out of recitationif you have done some advance preparation.The only graded assignments in this class will be a set of seven labs. Some of these are fairly short, requiringjust one week, while others are more ambitious, requiring several weeks.5 Getting HelpFor all communication with the teaching staff, please send email to [email protected] mailing list reaches all of the teaching staff. When you have questions about assignments, please don’tsend email to individual staff members. Use this mailing list instead to maximize your chances of getting aspeedy reply.We will use the class website (http://www.cs.cmu.edu/˜213) as the central repository for all
View Full Document