this page is: http://www.cs.utah.edu/classes/cs4400/

CS4400: Computer Systems (Spring 2004)



General Information


Course Organization and Books


The point of this course is to help bridge the gap between high-level programming and actual systems: processors, caches, operating systems, compilers, linkers, assemblers, etc. The course is based on Bryant and O'Hallaron's CS:APP textbook and associated materials.
AddALL is a good search engine to use if you want to minimize the amount of money you spend on books.


Lab Work


The course makes heavy use of C, Unix, and the Intel IA32 (x86) architecture. It's OK if you aren't currently fluent in any of these 3 topics since part of the fun will be to learn about them in more detail as the course progresses. However there is an assumption that you have some familiarity with C or C++ -- if your programming has previously only been in Java then the transition will be a little more difficult: you should read the reference text ASAP since you'll need to learn C on your own. You will need to write and run programs on IA32 Unix systems.

In order to do the labs properly you must use an x86 processor (either AMD or Intel), that has a Unix OS (Linux is most likely what you'll find on x86 processors -- the distribution (Red Hat, Debian, etc.) doesn't matter), and your code must be in ANSI standard C. Nothing else will work. It's fine to develop your code on a Windows or Linux box that you might have at home but before you turn it in, make sure it runs in EMCB 210 since that's where we'll be doing the grading. There will be no partial credit for programs that, for whatever reason, work somewhere else, but don't work in EMCB 210.

There are some Linux based PCs (these are IA32 Unix systems) in EMCB 210 which is often called the NT lab. The Linux machines are in the rear of the room and have names labnix1.cs.utah.edu through labnix16.cs.utah.edu. Here is the support page and consultant schedule for that lab. There are also some Linux machines in the CADE lab called lab4-1.eng.utah.edu through lab4-15.eng.utah.edu that you can use, but again be sure your assignments run correctly on machines in EMCB 210 before turning them in.

If you want to log into these machines remotely you'll need an SSH client. SecureCRT runs on all of the department's Windows-based machines; if you want to use your home PC you'll need to get a SSH client installed. Putty and OpenSSH are free and SecureCRT is a commercial product. Another good option is Cygwin, a UNIX-like environment for Windows machines that comes with an SSH client. Do a Google search and find a version that works for you.

Grading Policy


The latest anonymized grades are always here.

Your final grade will be calculated as follows: The only change to this formula will occur if I think that class attendance is getting too low. In that case I'll start giving unannounced quizzes in class, each of which will count for a few points of your final grade.

Exams will be open book but closed notes.

Appealing Grades: This must be done within 7 days of the grades being handed back. This applies to both labs and exams. It's also your responsibility to check the web page grades for accuracy to make sure we didn't make an accounting mistake. Appealing accounting mistakes can happen anytime prior to the final exam.

Cheating: You are encouraged to discuss homeworks with your fellow students, but each student is responsible for writing their own answer. More specifically cheating is: sharing code or other electronic files either by copying, retyping, looking at, or supplying a copy of a file. Cheating is not: discussing concepts, answering questions about concepts or clarifying ambiguities, helping somebody understand how to use the computer systems or basic tools (compiler, debugger, etc.) or helping with high level design issues or debugging. If for some reason you didn't attend the first class to sign the cheating policy awareness form, you will need to do so in order to stay enrolled. Print the PDF, sign it, and hand it to John.

Except for the final lab, each lab will be done individually. The final lab can be done as a team of up to two people if you prefer and grading will be done via a demo to one of the TAs or John. Questions about the part you did are to be expected. Each lab will be monitored by automatic cheating checkers and if they find an anomaly then the students involved will be asked individually to explain any anomalies. We also check against codes from previous years.

On day 1 you will be asked to sign a form which basically says that you understand that if you are caught cheating then you will fail the course and a record of the infraction will be entered into your permanent student record. The University has an appeal process but there will be no appeal about failing the course.


Late Policy and Rescheduling Exams


The basic late policy for labs is this: However, I will also be trying something a little bit different this semester. Each of you gets three free "late days" for lab assignments. If you use one of them, it is as if the due date for your lab assignment was postponed by one day. So, for example, if you choose to use all three date days at once and you turn in that lab 5 days late, the lab will still be accepted but you will receive 50% credit. In other words, this lab is graded as if two days late because you used three late days.

The flip side of this arrangement is that you must use your late days carefully. If you use them up on the first couple of labs and then get sick later in the semester, it's entirely your problem. No further late days will be granted under any circumstances.

Please make sure you arrange your schedule to accomodate the exams. If you miss an exam you will receive zero credit unless you have had a documented legal or medical emergency, in which case you will take an oral makeup exam. These are generally significantly harder than the original written exam.


Class Schedule


This schedule is a work in progress, it might change.

You'll get the most out of the lectures if you read the corresponding textbook material before class. The class will move pretty fast so try not to get behind.

PDF versions of the lecture slides will usually appear a few hours before class.

Date Class Topic Slides Reading and
Problems
Assignment

1/13 1 Overview 1up, 6up Sign up for the class mailing list
Send a message to Swami asking for an integer

1/15 2 Bits and bytes 1up, 6up Read section 2.1
Problems 2.44, 2.45
Lab 1 handed out
Download: lab writeup, data files

1/20 3 Integers 1up, 6up Read 2.2, 2.3
Problems 2.49, 2.54

1/22 4 Floats 1up, 6up Read 2.4, 2.5
Problems 2.59, 2.60, 2.61

1/27 5 x86 machine model 1up, 6up Read 3.1-3.5
Problem 3.31

1/29 6 Control flow 1up, 6up Read 3.6
Problem 3.34
Lab 1 due 11:59 PM

Lab 2 handed out
Also useful:
bomb status page
GDB documentation and reference card
IA32 reference manual

2/3 7 Procedures 1up, 6up Read 3.7

2/5 8 Data 1up, 6up Read 3.8--3.11
Problem 3.36

2/10 9 Advanced machine code 1up, 6up Read 3.12--3.16
Problem 3.24

2/12 10 Program optimization 1 1up, 6up Read 5.1--5.6 Lab 2 due 11:59 PM

2/17 11 Program optimization 2 1up, 6up Read 5.7--5.16
Problems 5.14, 5.17, 5.18

2/19 12 Memory 1up, 6up Read 6.1--6.4
Problems 6.21, 6.23, 6.24

2/24 13 Exam 1

2/26 14 Caches 1up, 6up Read 6.5--6.8
Problems 6.25, 6.26, 6.27
Lab 4 handed out
also grab the data files

3/2 15 Go over exam 1

3/4 16 --- Read chapter 7
Problems 7.8, 7.12

3/9 17 Exceptional control flow 1 1up, 6up Read 8.5--8.8
Problem 8.19

3/11 18 Exceptional control flow 2 1up, 6up Read 8.5--8.8
Problem 8.19
Lab 4 due 11:59 PM

Lab 5 handed out: writeup and data files

3/16 Spring break

3/18 Spring break

3/23 19 Time measurement 1up, 6up Read 9
Problems 9.10, 9.11

3/25 20 Virtual memory 1up, 6up Read 10.1--10.6
Problems 10.11, 10.12, 10.13

3/30 21 Memory allocation 1 1up, 6up Lab 5 due 11:59 PM

4/1 22 Memory allocation 2 1up, 6up Lab 6 handed out: writeup and data files

4/6 23 Exam 2

4/8 24 System-level I/O 1up, 6up Read 11
Problem 11.7

4/13 25 Go over exam 2

4/15 26 Networks 1up, 6up Read 12.1 -- 12.4 Lab 6 due 11:59 PM

Lab 7 handed out: writeup and data files

socket tutorials #1 #2

pthread tutorials: #1 #2

4/20 27 Web stuff 1up, 6up Read 12.5 -- 12.8
Problem 12.10

4/22 28 Concurrent servers 1up, 6up Read 13.1 -- 13.3
Problems 13.22, 13.23

4/27 29 Thread programming 1up, 6up Read 13.4 -- 13.8
Problem 13.24

4/29 Reading day

5/3
Monday
Lab 7 source code must be handed in and demos completed by 11:59 PM

5/4
Tuesday
Final exam
3:30-5:30 PM



This page is maintained by John Regehr, mail me if you find a mistake or if any content is unclear.