CS 450: Introduction to Networks

Subject of Course

The main focus of this course is the architecture of networks, with the primary example being the biggest and baddest network of them all, the Internet.

We have a really cool book for the course, written by extremely knowledgeable authors. (Its the first time I've found a book for instruction in a long time that I really like). The strengths of the book include: excellent selection of topics, in depth coverage of major concepts, focusing on the upper levels of the networks (ECE 433 tends to be more focused on the lower levels), very modern coverage (current edition's first printing was this summer), and many pointers to further reading (especially good for grad students). But there is a lot in this book, I think you need to take notes while you read. But you don't have any objection to working hard, or you wouldn't be taking a course with me.

After the introductory chapter, the book follows network layers from, as the title indicates, top down. In a layered approach, upper layers can use services of lower layers but not the reverse.

  • The application layer chapter contains descriptions of the protocols for mail, ftp, http, and more.
  • The transport layer chapter describes how end-to-end services are built, including reliable delivery (using an unreliable medium) and congestion control.
  • The network layer chapter discusses Routing and IP, or how packets get from here to there.
  • Finally, the data link chapter covers the individual segments, whether they are ethernet or wireless.
Please read the first 500 pages of the text :-).

News

  • Final is on Tues. Dec 7th, 1:00-3:00 (220 SH). You must send email to Mani if you want to take the final. It will cover the entire course including the data link layer, and will require more intensive studying than the first test.
  • Test 1.
  • Test will be on Wed. 24 November.
  • programming assignment: Programming assignment 2.
  • Homework: Chap 1, problems 2,3,8,13,18; Chap 2 problems 8,13; Chap 3 problems 2,5,7. Also: Write client-server UDP code (two programs) in which the client sends 10 packets to the server, and for each two packets the client sends, the server should send back a packet to the client. Note that the server program should not know the client IP number or port. (Due 1 Nov.)
  • Click here for Mani's page of important stuff for assignments. (check it regularly)
  • HTTP server (assignment 1) is available, click here. Due dates are Oct 13th (part 1) and Oct 20th (part 2).
  • Hello, World (assignment 0): Write client and server programs. The client program connects to the server using TCP/IP, and sends the string "Hello, World.". The server reads the string from the network connection and prints it out. Program in C or C++. The server should use as port number the last 4 digits of your UIN. Due: Monday, Oct. 4 at start of class. Turnin will be enabled for "hello".
  • Read for Friday, Oct 1, RFC 1945 (HTTP 1.0). There is a link for the RFC's in PDF at the bottom of this page.
  • Programs due at start of class (2:00) via both turnin and a printed listing. Programs should be listed using "enscript -Ecpp -G" with include files first in alphabetical order followed by c++ files. Your programs should be self testing, as described in class, and the test results should be included. It is your responsibility to convince us the program is correct.

Course work

This is the second time I'm teaching this course, so we'll have to see how much we get through. Here are my thoughts now.

The course work consists of:

  • Programs: these will primarily deal with how the internet is built vs. how it is used.
    • TCP/IP: send e-mail
    • UDP: ping
    • Reliable delivery
    • Flow control
  • 2 tests: will have short and long answers. Doing the homework will be IMHO essential for being able to get a decent grade on the test.
  • 1 final
  • no more than 7 homework assignments

Grading

Each time I teach a course, its a bit different because I keep changing things. The number of assignments, the difficulty, etc. all vary. So we'll decide on the definitive point breakdown at the end of the semester. But it will look something like this:
  • Written homework: 10-15%
  • Programming: 20-30%
  • Tests and Final: greater than 50%
But don't be mislead by the relatively high points given to in-class work. If you don't do the homework and programming, you will have a very hard time doing the tests. Moreover, if you do well on the programming and homework and miserably on the tests, that means we've got an academic integrity problem.

Current assignments (F'2004)

Assignments from Fall 2002

Academic integrity

This is the second time I am teaching this course, and the second time this text has been used at UIC. The text is the best undergraduate text in networks, but it is not easy text. Expect to work harder in this course, and to do more on your own. If this does not sound appropriate for you, skip the course this time.

Students who are caught cheating will immediately fail the course, and have the cheating recorded in their university files. For 1st year graduate students, this usually results in expulsion from the program. Students who already have been caught cheating will go through disciplinary hearings, with the goal of having them expelled from the university.

Students who fail to demonstrate on tests an understanding of the programs they have handed in will fail the course.

You are not to show your program to anyone nor to look at anyone else's program. If you let someone see your programming you are just as guilty (actually in my mind more so) than the person that copies your assignment. You may discuss programming concepts but only in general term.

Course Materials

If you are a UIC student who is connected through a non-UIC ISP, you can get these handouts via either of two techniques. If you have a fast connection then a) login to a uic machine, b) set DISPLAY to the machine you are working on, c) run netscape, d) save the file, e) copy the file to your local machine. Otherwise, just use UIC dialin accounts to download the files needed.

Recommended Texts

  • Unix Network Programming, W. Richard Stevens, Prentice Hall. (The bible on network programming)
  • Computer Networks (3rd Edition), Andrew S. Tannenbaum, Prentice Hall. (Detailed coverage of low level network stuff)
  • Computer Networks: A Systems Approach Larry L. Peterson and Bruce S. Davies, Morgan Kaufman. (More advanced coverage then Tannenbaum)