- Most announcements will be on Piazza.
TuTh 1:15–2:30, Science Center 101
Professor: Kevin Webb
Piazza: Q&A Forum
GitHub: Swarthmore GitHub Enterprise
Gradesource: Grade listing
Wednesdays 11:00 - Noon, Thursdays 2:30 - 4:00
Welcome to CS43. This course will introduce fundamental ideas in
computer networking. The structure of this course may be different from
most 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.
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.
Labs: There are several lab programming assignments (mostly in C) that will
explore various aspects of network programming.
Exams: There is a midterm exam and a final exam (both closed-book)
covering the material in the class meetings and labs.
Computer Networking: A Top-Down Approach
by Kurose and Ross
We'll be using the sixth edition.
Goals for the course:
By the end of the course, we hope that you will have developed the
- 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.
This is a tentative schedule; it may change as we go. You should read the assigned sections before
class to prepare for the reading quiz. All readings refer to the Kurose and Ross textbook unless otherwise indicated (e.g., there's a link to some other source).
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 CS43 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 will generally be due by midnight on Thursday 1-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.
Weekly Lab Sessions
|| Fridays 2:15—3:45
|| Science Center 256
|| Fridays 4:00—5:30
|| Science Center 256
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 microprox 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 the green light doesn't go
on, then we need to enter your microprox number into the system. If you have
issues with the door locks, send an email to email@example.com.
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 238, 240, and 256.
Grades will be weighted as follows:
|35%||Lab assignments (3% for the first, 7% for the last, 5% for the rest)|
| 5%||Reading Quizzes (I will drop your three lowest quizzes.)|
| 5%||Class Participation|
How to Succeed in CS 43
Read the material before you come to class.
Don't worry about total comprehension, but at least get a feel for
what we will be covering that week. If you have some understanding of
the material coming into class, it will be easier for you to ask
questions during class, rather than later when help may not be
- Attend class and participate in discussions.
In class, we'll
cover new topics and dig into the more challenging details of the material.
Class discussions are a critical part of the learning process, as these
exercises give you immediate experience with the material we are covering.
Also, we'll have frequent reading quizzes, so you need to be present!
Ask questions if you don't understand.
This means both during class and while doing lab assignments. This class
continually builds on previous material, so if you don't understand something
one week, it will continue to be a problem the next week, and the week after
that, and so on. If you need help, ask your classmates (make sure you have
read the "Academic Integrity" section below first), post on Piazza, or come
talk with me during my office hours.
Start the lab assignments early.
I realize this one is not always easy to do, but if you can get in the
habit of doing this, you will be much better off. If you get
stuck early (i.e., not two hours before it is due), there will be time
to look for help. In addition, if you start early enough, you can
take a break, go do something else, and come back later. I find I
always have at least a few new ideas when I come back to a problem
after a break. If you wait until the last minute, you can't do this.
Practice, practice, practice.
The only effective way to
learn the material and pass the quizzes and exams is to consistently
do the labs. Finish all of the assigned programs (and do some extras,
for fun!). Even if you don't get them done on time, they will still
help you learn the material.
Seek help early and often.
Because course material builds
on previous material, it is essential to your success in this class
that you keep up with the course material. If you are having difficulty
with a programming assignment, if you didn't follow something covered
in class, if you feel you need some extra help understanding or
practicing some of the course material, or if you just want to discuss
something from a class, an assignment, or the text, please come to
my office hours.
Attend CS43 Labs.
Lab attendance is required, and the labs constitute the largest portion of your grade. You should be there!
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. Your code
should never be shared with anyone; you may not examine or use code belonging
to someone else, nor may you let anyone else look at or make a copy of your
code. This includes, but is not limited to, obtaining solutions from students
who previously took the course or code that can be found online. You may not
share solutions after the due date of the assignment or make them publicly
available anywhere (e.g. public GitHub repository).
Discussing ideas and approaches to problems with others on a general
level is fine (in fact, we encourage you to discuss general strategies
with each other), but you should never read anyone else's code or
let anyone else read your code. All code you submit must be your own
with the following permissible exceptions: code distributed in class,
code found in the course text book, and code worked on with an assigned
partner. In these cases, you should always include detailed comments
that indicates on which parts of the assignment you received help, and
what your sources were.
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."
Please contact me if you have any questions about what is
permissible in this course.
If you believe that you need accommodations for a disability, please contact Leslie Hempling in the Office of Student Disability Services (Parrish 113) or email lhempli1 to arrange an appointment to discuss your needs. As appropriate, she will issue students with documented disabilities a formal Accommodations Letter. Since accommodations require early planning and are not retroactive, please contact her as soon as possible. For details about the accommodations process, visit the Student Disability Service website
To receive an accommodation for a course activity, you must have an Accomodation
Authorization letter from Leslie Hempling and you need to meet with me to work
out the details of your accommodation at least one week prior to the activity.
You are also welcome to contact me privately to discuss your academic needs. However,
all disability-related accommodations must be arranged through Leslie Hempling in
the Office Of Student Disability Services.
Links that are related to the course may be posted here. If you have suggestions for links, let me know.
Beej's Guide to Network Programming