CSCI P538: Computer Networks

General Course Information (Fall 2015)

Time: Tuesday and Thursday, 4:00pm - 5:15pm Location: BH103
Time: Tuesday and Thursday, 7:15pm - 8:30pm Location: SE240
Instructor: Dr. Raquel Hill
    Email: ralhill [at] indiana [dot] edu
    Office hours: Tuesday and Thursday 2-3 pm (or by appointment)
    Office: Lindley Hall (LH) 230E
Associate Instructor's
    Deyaaeldeen Almahallawi (dalmahal [at] indiana [dot] edu)
    Isha Arora (isharora [at] indiana [dot] edu)
    Wen Chen (wc23 [at] indiana [dot] edu)
    Varsha Suresh Kumar (vsureshk [at] indiana [dot] edu)
AI office Hours:
    Wen Wednesday 09:00 am - 11:00 am
    Isha Wednesday 2:30 pm - 4:30 pm
    Varsha Tuesday 1:00 pm - 3:00 pm
    Deyaa Monday 09:00 am - 11:00 am
AI office hour location:   Abyss in 2nd floor, Lindley Hall

Course Summary/Pre-requisites

Our goal in this class is to learn about computer networks. We will do this by understanding how the networks work today and why they are designed the way they are. The course will primarily focus on the Internet but will also cover other past and present network technologies to put things in perspective. Since applications play an important role in the evolution of the Internet we will also study DNS, peer-to-peer networks, multicast, and security.

Topics to be covered include: Error control, medium access, routing, congestion control, end-to-end transport, TCP/IP, IEEE 802.11 networks, security, and applications.

Pre-requisites: This is the first graduate level networking course. An undergraduate course in Operating Systems or Networking along with programming experience in C/C++ is required.

Programming Assignments : FAQ

Which programming languages are permitted ?
Programming assignments will be in C/C++ only. This is so that you can play around with low level sockets such as raw_sockets and POSIX threads. The objective of the course is to get you familiar with low level networking and protocol internals such as TCP / IP packets, checksum etc. This would not be possible in higher level languages such as Java. Also, most of the code you write will run most efficiently in C/C++.

Which libraries am I allowed to use ?
You cannot use third party libraries like Boost, Qt or any of these kind. If there are assignments related to multithreading, you are only allowed to use the POSIX thread library. Unless we explictily state otherwise, you can utilize C++ standard library, its containers (vector, map etc), and algorithms. Ask us if you have any doubts reagrding other libraries. But in the end, before submission, please ensure that your code compiles and runs as expected on silo . We will be grading your assignments by running the program on silo, and failing to compile will only make grading difficult. Eventough the program happens to be correct, you might lose points for not compiling. We strongly recommend that even if you program on your local machine, compile/run them on silo.


Required textbook:
Computer Networking: A Top-Down Approach (6th edition) by Jim Kurose and Keith Ross. Addison Wesley, 2012.

I will derive material from the other reference books, RFCs, and research papers for certain classes. However, you are not required to buy any additional materials for this class.

Grading and Exams

The tentative grade break-up for the class is as follows: