CPSC 441: Computer Communications (Fall 2004)

The purpose of this course is to introduce fundamental principles and concepts of computer networks. This year the course will follow a top-down approach, where we will first study popular network applications, then study communications services required to support these applications, and finally study how these communication services are implemented. Throughout this course, we will use the Internet's architecture and protocols to reinforce fundamental computer networking principles.

This page provides information on the following:


Unofficial Grades for the Course (updated 17/12/2004): Click here to get your unofficial grade for the course. The spreadsheet lists your marks for the assignments, the midterm, and the final. I have discounted your assignment with the lowest percentage score and increased the weight of your final only if it increased your final total for the course. After making the above adjustments, I have given each one of you a bonus of 7%. This curved-up mark is used to calculate the letter grade for the course. If there are issues with your marks as reported, you should contact me ASAP mentioning the problem(s). The official grades will be available through Infonet after Wednesday December 23, 2004.

CPSC 502/503 Projects
If you are interested in working on a project in the networking area for CPSC 502/503, please feel free to contact me. A list of topics suitable for CPSC 502/503 can be found here.

Administrative Information

Here you will find administrative information for the CPSC 441 offering during the Fall 2004 session. There are two teaching assistants (TAs) for this course. They will discuss material referred to as "self study" in the lectures, introduce socket programming using C/C++, and provide help with assignments. The tutorials are organized for your benefit and you are strongly encouraged to attend them. Please refer to the TA webpages for materials pertaining to your section:


  1. Introduction (1.5 weeks)
    Overview of the Internet, client/server paradigm, circuit switching, packet switching, transmission media, queuing delay and packet loss, TCP/IP Protocol Stack
    Lecture Slides: Part 1 (PPT , PDF), Part 2 (PPT , PDF), Part 3 (PPT , PDF)
    Tutorial Slides: Physical Media ppt, pdf
    Readings: Chapter 1
  2. Application Layer (1.5 weeks)
    Service requirements, WWW, HTTP, Electronic Mail, Domain Name System, Socket programming
    Lecture Slides: HTTP and WWW (PPT , PDF), FTP, SMTP (PPT, PDF), DNS (PPT, PDF)
    Reference Documents: HyperText Transfer Protocol - HTTP/1.1 RFC 2616
    Readings: Chapter 2
  3. Transport Layer (2 weeks)
    Service models, Multiplexing/Demultiplexing, Connection-less transport (UDP), Principles of reliable data transfer, Connection-oriented transport (TCP), TCP congestion control, TCP Variants
    Lecture Slides: UDP (PPT, PDF), Reliable Data Transfer (PPT, PDF), Transmission Control Protocol (PPT, PDF)
    Readings: Chapter 3
  4. Network Layer (2 weeks)
    Service models, Virtual circuit networks, Datagram networks, Routing algorithms, Internet Protocol IPv4, IP addressing, ICMP, Routing in the Internet, Multicast
    Lecture Slides: Part-I (PPT, PDF), Part-II (PPT, PDF)
    Readings: Chapter 4
  5. Link Layer and Local Area Networks (2 weeks)
    Link layer services, Error detection and correction, Multiple Access Protocols, Link layer addressing, Ethernet, Hubs and switches, Point-to-Point Protocol
    Lecture Slides: (PPT, PDF)
    Charles Spurgeon's Ethernet Web Site
    Readings: Chapter 5
  6. Multimedia Networking (2 weeks)
    Networked multimedia applications, best-effort service and multimedia delivery requirements, Multimedia protocols (RTSP, RTP, RTCP, SIP), Content Distribution Networks, Intserv, Diffserv, RSVP
    Lecture Slides: (PPT, PDF)
    Readings: Chapter 7
  7. Wireless and Mobile Networks (1.5 weeks)
    Wireless links and network characteristics, Wi-Fi: IEEE 802.11 Wireless LANs, Cellular Internet Access, Mobility management and Mobile IP
    Lecture Slides: (PPT, PDF)
    Readings: Chapter 6

Textbook and References

The recommended textbook for this course is: You may find the following references useful:


  1. Assignments (30%)
    There will be four equally weighted assignments in this course. The assignments will consist of a mix of paper & pencil questions, and programming projects. These assignments will be approximately equally spaced throughout the term (e.g., potential due dates are - early October, late October, mid November, and early December).
    • Assignment 1, Due October 18, 2004. Hard copies of the assignment will be distributed in-class on Tuesday September 21, 2004. (Solution Key)
    • Assignment 2, Due October 28, 2004. Hard copies of the assignment will be distributed in-class on Tuesday October 19, 2004. (Solution Key)
    • Assignment 3, Due November 22, 2004 by 23:00 hours. You will use the "submit" system to handin your assignments.
      You might find the following example programs to be a useful starting point for this assignment: udpechoclient.c and udpechoserver.c. Many web pages have socket programming tutorials and sample socket programs. For example, sample socket programs in Java can be found here.
    • Assignment 4, Due December 3, 2004 by 16:00 hours. Submissions for this assignment will only be accepted in hard copy format. Late submissions will not be accepted. The solution key that was previously posted here had errors in the following questions: question 1, question 3, and question 5. Here is the revised solution key: (Revised Solution Key) Your marks for the assignment have also been appropriately adjusted.

  2. Midterm Examination (30%)
    Examination and solution key (Viewable only from machines with ucalgary.ca domain names)
  3. Final Examination (40%)
    This course will have a 120-minute closed-book final examination, scheduled by the Registrar's office.