CS 43: Computer Networks — Spring 2022


  • The Q&A final exam review session was held in SCI 181 at 1:00 PM on Tuesday, May 10.

  • The final exam will be in SCI 199 at 7:00 PM on Thursday, May 12.

Class Info

Class: Tuesday / Thursday, 1:15 PM - 2:30 PM, SCI 199

Professor: Kevin Webb

Q&A Forum: EdSTEM

Office hours: Tuesday 10:30 AM - 11:30 AM, Thursday 2:45 PM - 4:00 PM

Office: Sci 255

Welcome to CS 43. This course will introduce fundamental ideas in computer networks. The structure of this course may be different from many other CS courses at Swarthmore. We’ll be using a teaching model called peer instruction, which places a strong emphasis on classroom discussion and student interaction. How to succeed in this course.

The course is composed of the following:

  • Readings: The readings serve as a first exposure to new topics, where students learn the basics of the material.

  • Class meetings: The classroom material will cover the difficult concepts and facilitate student discussions.

  • Exams: The midterm exam and a final exam (both closed-book) cover the material in the class meetings and labs.

  • Labs: Several lab programming assignments (mostly in C) explore various aspects of network applications.

    Section A

    Friday 2:15 - 3:45

    SCI 240

    Section B

    Friday 4:00 - 5:30

    SCI 240


iClicker (Required)

This course will use iClicker devices to facilitate feedback and discussion during class. For many upper level courses including CS 43, we are requiring that students purchase their own clicker for personal use. Clickers may be purchased at the college bookstore or online. Please register your clicker online as soon as possible!

Supplemental Textbook

Computer Networks: A Systems Approach by Larry Peterson and Bruce Davie

Note, this is a free, online textbook. There is a print edition available if you prefer to have a physical copy. I’ll be using the online version when mapping course content to book sections, but the 6th edition should be pretty similar.

Goals for the course:

By the end of the course, we hope that you will have developed the skills to:

  • Refine C programming skills in the context of systems design, development, and debugging.

  • Classify network functionality into the appropriate abstraction layer.

  • Characterize the behavior of popular network applications and protocols (HTTP, SMTP, DNS, etc.).

  • Construct distributed applications using various concurrency models.

  • Design and analyze network application protocols.

  • Identify the role of transport protocols in providing reliability and high performance.

  • Implement routing algorithms and analyze routing protocols.

  • Compare and contrast switching and forwarding platforms.

  • Test and debug networked applications.

Lab Schedule

Please familiarize yourself with the course’s partnership expectations before starting the lab.

Weeks Lab Topic


Lab 0: C Warm Up


Lab 1: A Basic Web Client


Lab 2: A Concurrent Web Server


Lab 3: Talking to DNS


Lab 4: Designing a Jukebox Protocol


Lab 5: Reliable Transport


Lab 6: Fast Reliable Transport

Class Schedule

This is a tentative schedule; it may change as we go.

All readings refer to the textbook unless otherwise indicated (e.g., there’s a link to some other source).

To access the recordings, you’ll need to be signed in to your @swarthmore.edu Google account.

Week Date Topic Supplemental Reading Slides Recordings





Jan 25

Course Introduction



Jan 27

Internet & OSI Models, Layering

1.3: Architecture




Feb 1

HTTP and the Web

9.1: World Wide Web (HTTP) through Uniform Resource Identifiers



Feb 3

Structure, Concurrency, and Blocking

1.4: Software




Feb 8

Network Applications and Distributed Systems




Feb 10

Naming and DNS

9.3: Infrastructure Applications through Name Servers




Feb 15

Email and SMTP

9.1.1: Electronic Mail through Message Format



Feb 17

BitTorrent, DHTs, and CDNs

There is lots of reference material here: 9.4 Overlay Networks, but I do not expect you to read it — it’s long.




Feb 22

Transport Protocols, UDP

5.0: Getting Processes to Communicate and 5.1: Simple Demultiplexor (UDP)



Feb 24

Reliable Transport





Mar 1

Reliable Transport in TCP

5.2.3: Connection Establishment and Termination



Mar 3

No class, Kevin at SIGCSE

Spring Break


Mar 15


Midterm Logistics

Mar 17

Reliable Transport in TCP

5.2.3: Connection Establishment and Termination




Mar 22

Flow and Congestion Control

6.3: TCP Congestion Control



Mar 24

Network Layer Introduction

3.3: Internet (IP) through 3.3.2: Datagram Delivery




Mar 29


Packet Format though IP Forwarding Revisited — This is long, so skim it, but it should be helpful as a reference later.



Mar 31






Apr 5

Routing Algorithms

3.4: Routing



Apr 7

Routing Algorithms

3.4: Routing




Apr 12

Routing on the Internet

4.1.2: Interdomain Routing (BGP)



Apr 14

Traffic Management

Sections 6.4 and 6.5 are good references, but they have way more detail than I expect you to know.




Apr 19

Link Layer Introduction

2.1: Technology Landscape



Apr 21

Media Access

2.6: Multi-Access Networks




Apr 26

Switches and LANs

3.2, 3.2.1, 3.2.4



Apr 28

Putting it All Together




Grades will be weighted as follows:


Lab assignments


Final Exam


Midterm Exam


Class Participation

Lab Policy

This course features regular lab assignments that account for the largest component of your course grade. Lab attendance is required by all students, unless you have already completed and submitted the lab assignment for the week. Additionally, the cs labs are open 24 hours a day, 7 days a week for you to use for CS 43 lab assignments. While you must attend the lab session for which you are registered, you may optionally attend additional lab sessions, provided space is available. In case of space constraints, students registered for the lab will have seating priority.

Lab assignments will typically be assigned during the lab sections on Friday and will generally be due by midnight on Thursday 2 weeks later. You are strongly encouraged to start early!

Even if you do not fully complete an assignment, you should submit what you have done to receive partial credit.

Accessing the CS labs after hours

You can use your ID to gain access to the computer labs at nights and on the weekends. Just wave your ID over the onecard reader next to the lab doors. When the green light goes on, just push on the door handle to get in (the door knob will not turn). If you have issues with the door locks, send an email to local-staff@cs.swarthmore.edu. If the building is locked, you can use your ID to enter the door between Martin and Cornell library. For this class, your ID will give you access to the labs in rooms SCI 238, 240, 256, and the Clothier basement.

Absence / Assignment Extension Policy

To help with cases of minor illnesses, athletic conflicts, or other short-term time limitations, we will drop your three lowest reading quizzes and participation grades. You are still responsible for the material, and you should review any missed materials via the class recordings as soon as you can.

All students start the course with two "late assignment days" to be used at your discretion, with no questions asked. To use your extra time, you must email your professor after you have completed the lab and pushed to your repository. You do not need to inform anyone ahead of time. When you use late time, you should still expect to work on the newly-released lab during the following lab section meeting. The professor will always prioritize answering questions related to the current lab assignment.

Your late days will be counted at the granularity of full days and will be tracked on a per-student (NOT per-partnership) basis. That is, if you turn in an assignment five minutes after the deadline, it counts as using one day. For partnered labs, using a late day counts towards the late days for each partner. In the rare cases in which only one partner has unused late days, that partner’s late days may be used, barring a consistent pattern of abuse.

If you feel that you need an extension on an assignment or that you are unable to attend class for two or more meetings due to a medical condition (e.g., extended illness, concussion, hospitalization) or other emergency, you must contact the dean’s office and your instructors. Faculty will coordinate with the deans to determine and provide the appropriate accommodations. Note that for illnesses, the College’s medical excuse policy, states that you must be seen and diagnosed by the Worth Health Center if you would like them to contact your class dean with corroborating medical information.

Academic Accommodations

If you believe you need accommodations for a disability or a chronic medical condition, please contact Student Disability Services (via email at studentdisabilityservices@swarthmore.edu) to arrange an appointment to discuss your needs. As appropriate, the office will issue students with documented disabilities or medical conditions a formal Accommodations Letter. Since accommodations require early planning and are not retroactive, please contact Student Disability Services as soon as possible.

For details about the accommodations process, visit the Student Disability Services website.

To receive an accommodation for a course activity, you must have an official accommodation letter from the Office of Student Disability Services and you need to meet with course staff to work out the details of your accommodation at least two weeks prior to the activity.

You are also welcome to contact any of the course staff privately to discuss your academic needs. However, all disability-related accommodations must be arranged, in advance, through Student Disability Services.

Academic Integrity

Academic honesty is required in all your work. Under no circumstances may you hand in work done with or by someone else under your own name. Discussing ideas and approaches to problems with others on a general level is encouraged, but you should never share your solutions with anyone else nor allow others to share solutions with you. You may not examine solutions belonging to someone else, nor may you let anyone else look at or make a copy of your solutions. This includes, but is not limited to, obtaining solutions from students who previously took the course or solutions that can be found online. You may not share information about your solution in such a manner that a student could reconstruct your solution in a meaningful way (such as by dictation, providing a detailed outline, or discussing specific aspects of the solution). You may not share your solutions even after the due date of the assignment.

In your solutions, you are permitted to include material which was distributed in class, material which is found in the course textbook, and material developed by or with an assigned partner. In these cases, you should always include detailed comments indicating on which parts of the assignment you received help and what your sources were.

When working on quizzes, exams, or similar assessments, you are not permitted to communicate with anyone about the exam during the entire examination period (even if you have already submitted your work). You are not permitted to use any resources to complete the exam other than those explicitly permitted by course policy. (For instance, you may not look at the course website during the exam unless explicitly permitted by the instructor when the exam is distributed.)

Failure to abide by these rules constitutes academic dishonesty and will lead to a hearing of the College Judiciary Committee. According to the Faculty Handbook:

Because plagiarism is considered to be so serious a transgression, it is the opinion of the faculty that for the first offense, failure in the course and, as appropriate, suspension for a semester or deprivation of the degree in that year is suitable; for a second offense, the penalty should normally be expulsion.

This policy applies to all course work, including but not limited to code, written solutions (e.g. proofs, analyses, reports, etc.), exams, and so on. This is not meant to be an enumeration of all possible violations; students are responsible for seeking clarification if there is any doubt about the level of permissible communication.

The general ethos of this policy is that actions which shortcut the learning process are forbidden while actions which promote learning are encouraged. Studying lecture materials together, for example, provides an additional avenue for learning and is encouraged. Using a classmate’s solution, however, is prohibited because it avoids the learning process entirely. If you have any questions about what is or is not permissible, please contact your instructor.