- Time/Day: 10:00am-10:50am MWF
- Location: Centennial Engineering Center B146A
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!
Jeff Sharpe
- Contact: jeffunm (at) unm (dot) edu
- Office Hours: Tue 2pm-4pm, Thu 2pm-4pm (in FEC 3105)
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.
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!
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.
- 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.
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.
Class attendance will factor into the Participation grade. In class you can mark attendance in one of two ways:
-
Open a terminal, go into your repository (make sure you have done
git pull
to grab the latest version), and typejava Attendance
. -
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).
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.
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!
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"
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 | 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) | |||
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] | ||
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 | no class (final exam week) | |||
no class (final exam week) | ||||
no class (end of the semester) |
- Lab 1: Implementing Application-layer protocols, constructing clients/servers using Linux Sockets
- Lab 2: Network emulators, packet capturing, and congestion control
- Lab 3: Forwarding, routing algorithms, and network simulators
- Lab 4: Error detection/correction, ARP, software-defined networking
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.