Data Communications and Networks

Spring 2013

Syllabus and Reading Assignments


Revision Date: January 18, 2013



The following sections provide the lecture topics for each class under the Description heading.

The material listed under Reading must be read PRIOR to the date of the lecture (except for the first lecture).


Session 1 


The session will cover administrative details for the course and will provide an overview of the topics and related assignments that will be covered during the semester. This first session will introduce some of the key elements of communications and networking, and will provide an overview of the Internet from a structural and service perspective. Some of the key concepts covered in this course are as follows:

        Network delay and loss

        Layered protocol model

        Packet switched and circuit switched networks


The overview provided in this first session is very broad and will span both the first and second lectures.

Session 2


        Completion of course overview.

        Data encoding and transmission concepts.


Reading Chapter 1







Session 3


        Data Link Control

Reading Chapter 5







Session 4


        Data Link Control

        Ethereal (network packet sniffer)


Reading Chapter 5 (complete readings from the previous week)


Session 5


        Wireless communications

o       CDMA

o       802.11

o       Cellular Architecture


Reading Chapter 6






Session 6


        Reliable Data Transfer (RDT) between communicating entities is one of the most important topics in communications. RDT will be defined in this session and three fundamental protocols will be examined: Stop and Wait, Go Back n, and Selective Repeat. FSMs will be used to represent protocols throughout the discussion of this topic.


Reading Chapter 3






Session 7


        Networks, Part 1

o       Packet switch and VC Networks

o       The Internet

o       The Internet Protocol (IP)


Reading Chapter 4




Session 8


        Networks, Part 2

o       Routing Algorithms

o       Routing Protocols


Reading Chapter 4





Session 9

  Spring Recess - no class


Session 10


        Completion of routing algorithms and protocols

        Fundamental data structures used in communications protocols: Finite State Machines, Queues, Ring Buffers



Session 11


        TCP in detail: This session will conduct a thorough examination of the TCP connection management, flow control, and error detection/correction protocols, and in particular, use TCP as a practical implementation of a sliding window protocol. The material covered in this topics will make it possible for students to examine a TCP session trace and understand exactly what is happening.

Reading Chapter 3, section 3.5 ; RFC 793 (intro, sections 1 and 2)


Session 12


        Completion of TCP


        Congestion Control: Congestion control is a top issue in network design. This session will examine the causes, effects, and approaches to congestion control. This session will discuss TCP congestion control presently in use (AIMD) and will try to determine if this "self-policing" approach leads to fair use of the Internet.

Reading Chapter 3, section 3.6 ; 3.7; RFC 2581

Session 13


Java Socket programming

        synchronous model

        asynchronous model

Session 14



        IP multicast

IP multicast allows a sender to broadcast a message to a group of interested parties anywhere on the Internet, but like IP unicast, it is unreliable. The problems one faces when designing a reliable multicast protocol are very different than for a point-to-point protocol. This session will look at IP Multicast, including a Java example, it will then look at two approaches to reliable IP multicast: PGM (Pragmatic General Multicast,) and if time permits, a very neat approach based on token passing.

Reading IP Multicast Backgrounder (PDF File)

Chapter 4, section 4.7 - multicast routing

RFC 1022 (IP Multicast Extensions) (optional)

RFC 3208 (PGM) (optional)

Session 15


        A Little Queuing Theory, Final Project Q&A

Performance of client server systems is typically a function of load (frequency of requests). This session will take a look at how queuing theory can be helpful in understanding client/server behavior under load.

This session will also allow time for questions about the final project.

Reading None