CS 485/585 (ECE 440) Computer Networking

CS 485/585 (ECE 440) Computer Networking, Fall 2018

Course Information

  • Time/Day: 10:00am-10:50am MWF
  • Location: Centennial Engineering Center B146A

Instructor

Jedidiah McClurg, Assistant Professor of CS

  • Contact: jrmcclurg (at) unm (dot) edu
  • Office: FEC 3040
  • Office Hours: Mon 11am-12pm, Wed 1pm-2pm, Fri 11am-12pm (look for me in FEC 3040 or FEC 3105)

NOTE: I am new faculty in CS - there are now two people with my first name in the the CS department. Please use my full name Jedidiah (not "Jed") for clarity. My apologies in advance for any confusion!

Teaching Assistant (TA)

Jeff Sharpe

  • Contact: jeffunm (at) unm (dot) edu
  • Office Hours: Tue 2pm-4pm, Thu 2pm-4pm (in FEC 3105)

Course Overview

Computer networks underlie virtually everything we do (you are looking at this website courtesy of a huge network called the Internet!). In this course, you will learn about how these systems work, from the ground up. Throughout the semester, you will learn how to go from simple bits on a wire to the complex protocols that allow us to use advanced web-based applications. The course will be lab-focused, allowing you to get hands-on experience building networks, networking protocols, and network applications.

Prerequisites

There are no formal prerequisites, although you should have some basic computer science background and experience with computer programming. If you have taken a class such as CS 341 (Computer Architecture and Organization), you should be fine.

If you have prerequisite-related difficulties in registering for the class, please contact me immediately!

Online Community and Communication

We will use Piazza in the class. This is a great way to ask questions and communicate with the instructor and your classmates. Participation on Piazza is not required, but is highly recommended, and will be rewarded with participation points.

The class Piazza link is: https://piazza.com/unm/fall2018/cs485585ece440/home

I will use Piazza to communicate with the class. I also ask that if you have questions about the course, you first do a quick search on the Piazza page, to make sure your question has not already been answered there. If not, please go ahead and post your question on Piazza so that I, the TA, or another student can answer it publicly. This will help to streamline the communication.

NOTE: if you have a question you do not wish to publicize (e.g., about your grades, etc.), you can either create a "private post" on Piazza, or email me or the TA directly.

Textbook and Other Reading Materials

  • Computer Networking, A Top-Down Approach (6th Edition) by Kurose and Ross

NOTE: this textbook is recommended, but not required. I will assign readings from the text to supplement the lectures, but you are only responsible for the information presented in lecture.

Grading

The following percentages show how final grades will be calculated, depending on whether a student is an undergraduate/graduate. I may or may not curve the overall grades, depending on how well the class performs overall, however, I expect each student to work hard, and not rely on the curve!

undergraduate graduate
labs 40% 55%
exam 1 25% 15%
exam 2 25% 20%
participation 10% 10%

Letter grades will be calculated as follows: 59 and below is an F, 60-62 is a D-, 63-66 is a D, 67-69 is a D+, 70-72 is a C-, 73-76 is a C, 77-79 is a C+, 80-82 is a B-, 83-86 is a B, 87-89 is a B+, 90-92 is an A-, 93-98 is an A, and 99-100 is an A+.

NOTE: The grading standards on the exams and labs may be different for undergraduates (ECE 440 and CS 485) and graduates (CS 585) - there may even be separate tests for undergraduates vs. graduates.

Attendance

Class attendance will factor into the Participation grade. In class you can mark attendance in one of two ways:

  1. Open a terminal, go into your repository (make sure you have done git pull to grab the latest version), and type java Attendance.

  2. Download Attendance.jar. Double-click the file to run.

You should see a message ending with SUCCESS if your attendance has been recorded. Note that this tool will not work if you're logged in remotely (you must be at a physical machine in the classroom).

Collaboration

For some of the labs, students will work in randomly assigned groups of 2 or 3. Students will have the ability to give feedback on the performance of other teammates, allowing me to determine whether all group members contributed to the assignment. I expect each group member to work hard and be a team player.

Respectfulness and Academic Honesty

I expect every student to show respect to me and the rest of the class. This course is preparation for your future career, so make sure you are behaving with the same level of professionalism that would be expected at a future full-time position. My general rule of thumb is: informal is okay, but disrespectful is not.

  • I prefer to be addressed by my first name ("Jedidiah"), but "Dr. McClurg" is also fine.
  • It is vital that you do your best to be a team player, and communicate with your lab partner(s). If you have group member who is not doing their fair share of work, please contact me IMMEDIATELY.

Plagiarism/cheating is NOT acceptable, and will be met with quick and harsh penalties. I do not want to see any academic dishonesty in this class!

Accommodation

In accordance with University Policy 2310 and the Americans with Disabilities Act (ADA), academic accommodations may be made for any student who notifies me (the instructor) of the need for an accommodation. It is imperative that you take the initiative to bring such needs to my attention, as I am not legally permitted to inquire. Students who may require assistance in emergency evacuations should contact me as to the most appropriate procedures to follow. Contact Accessibility Resource Center at 277-3506 for additional information"

Schedule

week date topics reading assignment
1 Aug 20 intro, the Internet, network edge 1.1 - 1.2, notes01
Aug 22 network core, network performance 1.3 - 1.4, notes02, [cable lobby 1], [cable lobby 2], [municipal fiber]
Aug 24 protocol stack 1.5, notes03-06 student background form due @ midnight
2 Aug 27 discuss lab 1 [Git] lab 1 released
Aug 29 C/Java programming crash course [C], [C libraries] quiz 1
Aug 31 Linux/Sockets crash course [Sockets diagram], [guide to Sockets], [Sockets crash course], [sockets tutorial]
3 Sep 3 no class (holiday)
Sep 05 application layer intro, HTTP 2.1 - 2.2, notes07-08
Sep 07 HTTP, sockets 2.2, 2.7
4 Sep 10 sockets, SMTP 2.7, 2.4, notes09
Sep 12 DNS 2.5, notes10-13
Sep 14 DNS, work on lab 1 2.5 quiz 2, lab 1 due @ midnight
5 Sep 17 discuss lab 2 lab 2 released
Sep 19 discuss lab 2
Sep 21 transport layer intro, multiplexing/demultiplexing 3.1 - 3.2, notes14
6 Sep 24 reliable data transfer 3.4, notes15-16
Sep 26 reliable data transfer 3.4
Sep 28 TCP 3.5, notes17
7 Oct 01 congestion control 3.6, notes18-21
Oct 03 TCP congestion control 3.7
Oct 05 exam 1 review lab 2 due @ midnight Saturday
8 Oct 08 exam 1
Oct 10 no class, no office hours (by popular demand)
Oct 12 no class, no office hours (holiday)
9 Oct 15 discuss exam 1 / lab 3 lab 3 released
Oct 17 network layer intro, virtual-circuit and datagram networks 4.1 - 4.2, notes22-23
Oct 19 router architecture 4.3
10 Oct 22 IP protocol 4.4, notes24
Oct 24 IP protocol, routing algorithms 4.4 - 4.5, notes25
Oct 26 routing algorithms 4.5
11 Oct 29 routing algorithms 4.5
Oct 31 Internet routing (intra- and inter-AS) 4.6, notes28
Nov 02 broadcast/multicast routing 4.7, notes29 lab 3 due @ midnight
12 Nov 05 link layer intro, error detection/correction 5.1 - 5.2, notes30
Nov 07 multiple access links/protocols 5.3, notes31-32
Nov 09 discuss lab 4 lab 4 released
13 Nov 12 switched LAN, ARP, Ethernet 5.4, notes33-35
Nov 14 Ethernet, data-center networks 5.6, [Cisco Datacenter Topology], [FatTree], [BCube]
Nov 16 link layer, putting everything together 5.7, trace.pcap
14 Nov 19 software-defined networking [OpenFlow 2008 Paper], [OpenFlow 1.0 Specification], [OpenFlow 1.0 Messages]
Nov 21 software-defined networking [Google B4], [Barefoot P4]
Nov 23 no class (holiday)
15 Nov 26 software-defined networking
Nov 28 guest lecture: Morgan Vigil-Hayes
Nov 30 software-defined networking lab 4 due @ midnight
16 Dec 03 exam 2 review
Dec 05 exam 2 @ 9:00am-10:50am (regular classroom)
Dec 07 make-up exam (for those with a conflict on Dec 05)
17 Dec 10 no class (final exam week)
Dec 12 no class (final exam week)
Dec 14 no class (end of the semester)

Lab Topics

  1. Lab 1: Implementing Application-layer protocols, constructing clients/servers using Linux Sockets
  2. Lab 2: Network emulators, packet capturing, and congestion control
  3. Lab 3: Forwarding, routing algorithms, and network simulators
  4. Lab 4: Error detection/correction, ARP, software-defined networking

Computing Resources

We will spend some time working on the labs in class.

In order to work on the labs outside of class, you will need access to a Linux machine. I would strongly recommend using Ubuntu Linux.

There is a computer lab in the Farris Engineering Center (FEC 2065), which should be accessible to students. You will need a proximity-enabled student ID card to open the door (you can check whether you have such a card by looking for a 5-digit number on the back, below the magnetic strip). If you want access added to your proximity-enabled card, please ask at the front desk in the main CS office (FEC 2200).

You can access a random machine in the FEC computer lab via SSH:

ssh moons.cs.unm.edu

You can also access the machines in our classroom (B146A Centennial Engineering Center) by using SSH:

ssh b146-xx.cs.unm.edu

(where xx goes from 01 to 76).

Additionally, you can access a random virtual machine run by the CS department:

ssh trucks.cs.unm.edu

Another alternative is to set up your own Linux machine. The easiest way to do this is to install VirtualBox. You can install this on Windows/MAC/Linux. Then, download an Ubuntu Linux disk image, create a new virtual machine (VM) within VirtualBox, and boot your VM using the disk image.