Important note: This syllabus, and lots of other important information, is available at
It is required that you read this Web page, including the Leon-Garcia supplementary file, and bring the latter to exams (note: it may be updated often).
My office is in 3053 EUII, Ext. 2-1953. My office hours will be Tuesday and Thursday, 12:30-1:30. I enjoy my office hours very much, and look forward to interacting with you during them.
I am also available at other times if you have short questions.
Our TA will announce office hours soon.
You are welcomed and strongly encouraged to send me e-mail, at the address matloff@cs, for help on homework assignments, questions on the lectures and the reading, and on any other aspects of the course.
Please note that prerequisites are strictly enforced. If you are already enrolled but do not meet the requirements, please drop the class immediately, as otherwise you would be dropped by the Registrar, or get an E-NWS (``enrolled, no work submitted'') grade. The Reader and TA would not accept any homework from you, and your exam papers would not be graded.1 Similarly, if you are on the waiting list, you will not be allowed to enroll.
If you wish to add the course, see the department Web site, http://www.cs.ucdavis.edu/, for procedures. Roughly speaking, the priorities will be set by class level (though graduate students will not get higher priority). The department will propose a list of those eligible to add, and with my approval, will take adds from that list. Please note that no further adds will be allowed any time during the quarter, beyond those on this departmental list (and no further names will be added to the list itself).
As explained in Section 3 above, the prerequisite material is strictly enforced.
Note also that the prerequisite material is likely to be used in the foundation of various exam questions. So, it is quite important that you make sure you have reviewed the prerequisite material:
Here is a sample of words and phrases which you should remember from that course:
gate; multiplexer; decoder; clock; digital design software; I/O port; memory-mapped I/O vs. separate-address-space I/O; wait-loop driven I/O; interrupt-driven I/O; direct-mapped and associative cache memory; virtual memory
ECS 152A also has as prerequisite ECS 110, so you should know stacks, trees, ``big-O'' notation, and so on.
ECS 110 in turn has ECS 40 as a prerequisite. That means that you should be good at programming, and HAVE A WORKING KNOWLEDGE of basic Unix concepts such as
files and directories, e.g. commands such as ls, cd, pwd, chmod; network use, e.g. e-mail, network addresses, ftp (including anonymous ftp); processes, e.g. use of ctrl-z, & and the bg and kill commands; C library and include files; user-level windowing, e.g. creating and moving windows; shell conveniences, e.g. wild cards, the history command, etc.; modular program design, including separate compilation of source files; makefiles and the make program; pointers, & and \* operators; recursion; fprintf(), fscanf(), fopen(); read(), write(), open(); debugging aids such as gdbYou must be familiar with object-oriented programming (taught in ECS 40 as C++).
Again, it will be assumed that you have a working knowledge of the Unix tools mentioned above. If you are lacking some of them, please see my Unix Web page, at http://heather.cs.ucdavis.edu/~matloff/unix.html
If you do lack this background, be sure to take a look at these tutorials NOW, before it is too late to remedy any deficiencies. Remember, these are tools which you will be using every day in our course, and they may arise in exam questions.
It is also worth mentioning that Intel complained recently that ``UCD grads don't know Unix well enough.''
Another prerequisite is a calculus-based probability course, such as MAT 131, STA 131A or STA 32. (Note the ``or.'') You should know and be able to use concepts such as
discrete and continuous random variables; density functions; exponential distribution; expected value and varianceThis means, for example, that you should be able to answer the following questions: Suppose a random variable X has density 2t for 0 < t < 1 , 0 elsewhere. What are the values of E( X3 )] and P(X < 0.5)?
The workload for this course, in the way I teach it, is substantial:
You may have been planning to make 152A your ``light load'' class this quarter, meaning that you use it to ``balance'' some other course in your schedule which you expect to have a heavy programming workload. I certainly sympathize with your desire to find a way to lighten your overall workload for the quarter, but the point is that 152A will not serve that purpose at all.
Clearly, computer networks comprise the epicenter of the computer revolution of the last 5-10 years. Luckily, we at UCD have a two-quarter undergraduate sequence in this subject (many schools do not have even a one-term undergraduate course). ECS 152A deals with the infrastructure-the physical structure of networks, error detection, protocols for multiple access of a channel, packet switching, routing methods and so on-and 152B concentrates on the development of network software. Given the central importance of this subject, I urge all of you to take both courses.
Since most Computer Science students (meaning CS and CSE) think of themselves as ``Computer Programming'' majors, they perceive 152B as being far more relevant than 152A. But that is very wrong. Fewer than half of Computer Science graduates become programmers, with the rest tending to go into jobs such as system administrators, customer support and so on. For those non-programming jobs, 152A is actually much more useful than 152B, and of course even network programmers need to understand the infrastructure well. Again, the bottom line is that both 152A and 152B are very important, and I urge you to take both and to do well in both.
The text by Leon-Garcia is required.
The purposes of this bound text are (a) to present additional material not covered in lecture, and (b) to give you additional ``thought opportunity.'' The latter is especially important; make sure to spent a lot of time going slowly through the reading, pausing to ponder the concepts. Many exam questions will come from the reading. Note again that the reading is quite slow and difficult, so make sure to set aside 4-5 hours each week for reading Leon-Garcia.
Also required are various handouts. The main ones will be sold in the bookstore at the beginning of the quarter, and others may be handed out in class. Also, they are available at http://heather.cs.ucdavis.edu/~matloff/152A/Hwk.html
Note that exams are open-book, and there is no sharing of books or other materials (including calculators) during exams. Thus every student must have his/her own copy of the books.
Do not Xerox the book, or buy Xerox copies of the book. This is illegal. Please avoid the embarrassment (to you and to me) which will occur if you bring a Xeroxed copy of the book (or of pages of the book) to exams.
Bring the printed lecture notes to lectures.
Bring both the printed lecture notes and Leon-Garcia to discussion sections.
Bring both the printed lecture notes and Leon-Garcia to exams.
There will be three midterm exams, the first approximately at the four-week point, and the second around the seventh week. The third exam will be on Thursday, December 6, the last day of instruction for Fall Quarter. There is no final exam; each exam covers only the material since the previous one (though of course there is some carryover for foundation).
There are no early or late exams; provisions for makeup exams - which will be oral, and of an open-ended manner - will be made if you have a documented medical excuse.
EXAMS ARE TAKEN ON AN OPEN-MATERIALS BASIS. Bring Leon-Garcia plus the printed lecture notes with you to each exam. You are also welcome to bring whatever other materials you wish, e.g. your ECS 40, 50, 110 and 154A texts, dictionaries, whatever you want. Whatever you bring, make absolutely sure that you remember to bring all your course materials, as virtually all of the exam questions will refer to specific pages in them.
Exam questions test insight, not memorization. They assume active reading and thinking about the material.
If for example you encounter a statement in the reading which puzzles you, don't just skip it-ask me or the TA about it. An exam question may later ask you to explain it.
Again, it is crucial to keep in mind that these are not ``calculus-style'' exams, with predictable, technique-oriented content. In a calculus class, for instance, you might have a lecture on integration by parts, then have a homework assignment of integration-by-parts problems, and then on the exam there would be a couple of such problems. In this class, every exam problem is unique, and the problems test understanding of concepts, rather than techniques.
MAKE SURE TO LISTEN CAREFULLY IN CLASS.
Many exam problems will come from the answers I give to questions students ask during lecture, or may be related to remarks I make during lecture along the lines of ``I want you to think about the following point carefully at home...'' Therefore, listen carefully to questions students ask in class, and to the answers I give. Make a note of seemingly-casual comments I make in lecture, and think about them carefully at home. These things may well pop up in exams.
An embarrassing subject which nevertheless must be mentioned is cheating on exams. If a student is found to be cheating, it will be treated as a very, very serious matter, not a harmless prank; it will harm his/her standing at the university, and also possibly make it difficult for him/her to get a job when seeking employment after graduation. Please work as follows:
Make sure you bring the printed lecture notes to every lecture. They will play very active roles in the lectures, i.e. I will ask you to open to a certain page, and then will point to various sentences and pictures on that page. The lectures will consist mainly of discussion and amplification of the examples in the printed lecture notes, with additional examples and comments.
A MAJOR GOAL OF THE USE OF PRINTED LECTURE NOTES IS TO GIVE STUDENTS A CHANCE TO ASK QUESTIONS AND TO ENGAGE IN CLASS DISCUSSION. You are very much encouraged to bring up any questions you might have. Please don't be shy about asking questions; there is no such thing as a ``dumb'' question. Similarly, listen carefully to the questions the other students ask; this can be a very valuable source of insight, to which you should pay special attention.
The discussion section is required. It will be used to present material not covered in lecture, and the material will appear on exams.
The class newsgroup is ucd.class.ecs152a.sec1. IT IS REQUIRED THAT YOU READ IT EVERY DAY. Not only will announcements of homework assignments be posted there, but also there may be later corrections, hints, etc.
Please note that the ``.d'' newsgroups are intended for discussion among students. If there is a message you want me to see, please send me e-mail, instead of using ucd.class.ecs152a.sec1.d.
The class Web site is http://heather.cs.ucdavis.edu/~matloff/152a.html
The formula used is
course grade = 0.75 x exams grade + 0.25 x homework grade
where both the exams grade and homework grade are on the 4-point scale (4 for an A, 3 for a B, etc.).
The threshhold for a grade of n is (n-1).85; the threshhold for an `n-' grade is (n-1).6; the threshhold for a `+' grade is n.2. So, for example, if your weighted average from the above formula is between 2.6 and 2.84, your course grade is B-; if the average is between 2.85 and 3.19, your course grade is B; if the average is between 3.2 and 3.59, your grade is B+.
Each exam grade will be used in letter grade form only (the numerical grades are recorded but not used).
IMPORTANT NOTE: If your first exam letter grade is lower than those of the other two exams, and if your homework grade is at least a B, that first exam grade will be thrown out completely. In that case, your exams grade will be the average of your second and third exams. This, coupled with the fact that most of you will get an A on the homework, typically makes an enormous difference in the course grade for many students.
By the way, though, please note that this policy of course does not imply that you should not try very hard on the first exam, for many reasons:
Your letter grade on this homework will be as follows, based on your average homework score: 90-100%, A; 85-89%, A-; 80-84%, B; 70-79%, C; 65-69%, D; under 65%, F.
Note that all homework assignments must be completed in order to get a passing grade in the course.
In order to be considered ``completed'' the basic work must be basically done, though there may be errors. In the case of a programming assignment, for example, if the program has sections obviously missing, or if the program does not even compile, it is not considered complete. For a mathematical assignment, there must be specific answers, not merely an outline of ``what I would have done if I had had time.''
I aim for the vast majority of the class to get an A on the homework. Lots of help is available, so this aim should be achievable. (And it is; I use this policy in every course I teach, and it always works out that most people get A homework grades.) Again, this is a real A, carrying as much weight as each exam (if no exam is thrown out).
At the end of the quarter, it will be your responsibility to make sure that the Reader's or TA's records are correct as to your scores.
Our base machines will be those in the CS instructional labs (CSIF). If you pre-enrolled in this course, or if you took a CS course last quarter, you should already have an account. Your account name will be your surname, and if that is not unique, it will be your surname followed by your first initial. Your initial password will be the last eight digits of your student number; change it immediately, using yppasswd. Note that all the instructional machines share a common file system, so you can access the files from any machine.
I strongly encourage you to install Linux on your PC, if you have not already done so. This is a good educational experience for you, and it will be especially useful in our course, since all of your homework assignments can be done on Linux. I have a Linux installation tutorial at http://heather.cs.ucdavis.edu/~matloff/linux.html.
Homework assignments will be announced in the class newsgroup. The homework files themselves will be on the course Web site, so look there when an assignment is announced.
Occasionally there will be news about a current homework assignment, such as clarifications, hints and so on. These will be announced in the class newsgroup.
You may work on and submit the homework by yourself, but you are allowed and encouraged to do your homework together with one (not two or more) partners. In the latter case, the two of you submit the homework together; make sure to inform the homework grader (the homework grader) of this.
In the material below, a ``homework group'' means either an individual or a pair of people working together.
If you do work with a partner, make sure to work TOGETHER, instead of simply having one partner do one problem and another partner doing another problem. If the homework grader finds a pattern in which two partners are simply dividing the work among themselves rather than working together, he/she will not allow them to continue to work as partners.
You will be required to write up your solutions for mathematical problems in LATEX. I have a LATEX introductory Web site at http://heather.cs.ucdavis.edu/~matloff/latex.html, but I instead of using LATEX directly, I urge you to use the LYX GUI for LATEX. In the latter case, you use the LYX software to create your file but then at the end export to LATEX (or just turn in your work in LYX form). I have placed LYX on the CSIF Linux machines, in matloff/Public/LYX, and I have a LYX introductory page at http://heather.cs.ucdavis.edu/~matloff/lyx.html
You are required to use Java in your programming homework. (You do need to understand the C-language material in our printed lecture notes and text, though.)
There are two reasons for my stressing Java:
Since we use interactive grading (see below), you do not ``turn in'' your homework in the traditional way. However, you do have to send the homework grader an e-mail message of the following nature, to certify that you completed the work before the deadline.
When you have finished all of a given homework assignment, first use the Unix tar command to collect all your files for that assignment into one .tar file, say named Hwk2.tar. In the case of a program, this would be your .java files; in the case of some graphs, this would be your .gif or .jpg files; in the case of mathematical work, this would be your LATEX .tex or LYX .lyx file (remember that you must show the steps in your work, not just give a final answer). Do not submit any other file types.
All the homework - both mathematical and programming - must be turned in as one package.
Then run the Unix sum command on the .tar file to produce a checksum. E-mail that checksum and file name (but not the file itself), to the homework grader. The date and time on your e-mail will verify that you sent the mail before the deadline, and then later during the grading, the checksum will show that you have not changed the file subsequent to sending the e-mail.
We will use interactive grading. The homework grader will announce homework grading times, and each homework group will sign up for a time slot. In the case of group size of two, both members of the group must be present during the grading time. If a member misses that time, the other group member will be graded, but the one who misses the time must reschedule a time in order to receive credit for the assignment.
During a group's time slot, the group will explain their homework solution, and in the case of a program demonstrate that it works. In the case of mathematical homework, the group will explain the reasoning behind the work. The homework grader will ask the group questions to confirm that they all understood what they did. For example, such questions might ask why you wrote your program in a certain way, what the roles of the variables are, what numerical values the variables may have at times specified by the homework grader, why you did not choose certain alternative designs, and so on.
IMPORTANT NOTE: Each partner must be ready to answer questions about ALL the submitted work. If for example in a programming assignment, each partner wrote part of the program, both partners must still have thorough knowledge of both parts.
The homework grader will assign separate grades for each group member. Normally these grades will be identical, but if there is a substantial disparity in the levels of understanding the different group members have regarding the assignment, the homework grader will assign different scores to each member. As mentioned earlier, if this occurs repeatedly, the homework grader will not allow the partners to submit work jointly anymore.
As mentioned earlier, feel free to get help on the homework from the TA and me. If you are stuck at some point, or need hints to get started, we will be happy to help. Of course, you should make sure that you have given THOROUGH thought to your problem before you seek help from us; otherwise you will not learn. But once you have reached the point where you cannot go any further, we very much encourage you to seek help from us.
Please make sure to start the homework soon after it is assigned. Don't wait until the last couple of days before the due date, because when the due date approaches, I tend to be inundated with e-mail messages asking for help on the homework, and thus my answers at that time will necessarily be short and without details, since I won't have time to say more.
If you need help in debugging a program, make sure that you have used a debugging tool to try to find your bug before you resort to seeking help from the TA or me. If you have not already done so, go through the slide-show tutorial on debugging, at http://heather.cs.ucdavis.edu/~matloff/debug.html Make sure to use a debugging tool in all of your programming work, both in this class and outside it.
An assignment is late if it is completed (and the homework grader notified) after 11:59 p.m. of the due date.
If-this should never happen, but just if-you are late, you will be assessed a 5% penalty the first late day, and 10%-per-day penalty after that in your grade for that assignment. (Since e-mail is available every day, each of the seven days of the week counts as one day.) The maximum total penalty is 50%.
Each project group will be allowed a total of 2 late days over the quarter, time which is not penalized. You can use this as being late 2 days with no penalty on one assignment, or as being late 1 day with no penalty in each of two assignments.
In order to use this option, you must submit your work during the time you are using as your grace period. If for example you are 3 days late on an assignment, you will not be allowed to use your grace period time on that assignment; it will simply be counted as 3 days late.
The homework grader will keep the appropriate records.
The reading-in both Leon-Garcia and the printed lecture notes-is extremely important, and should be considered ``homework.'' As mentioned earlier, approximately 30-50% of the exam questions will come from the reading.
After each lecture, do the corresponding reading. Do the reading PROMPTLY, that same day, rather than getting behind. This is the only way that you can get any insight from the reading; doing the reading the night before an exam will not work. If you still have not done the reading as of the night before the exam, you actually will be better off not doing it, and getting more sleep instead, as cramming overnight won't be beneficial.
The official reading assignments will be listed on our class Web page. Note that some of the reading will be on material not covered in either lecture or discussion.
I wish to emphasize that I care very much that you succeed in this course, and I look forward to getting to know all of you.
1If your work is mistakenly graded in spite of your ineligibility for the course,
you will still receive an E-NWS grade at the end of the quarter. This has actually
happened, with a student submitting all the work for the entire quarter and
yet still not getting a grade.