COSC 315A
Computer Networks

Fall 2021

Syllabus

Instructor

David A. Sykes, Ph.D.

Class sessions

TR 1:00–1:50 P.M. in Olin 213

Office hours

TR 8:30–9:20 A.M., 2:30–3:30 P.M.
MWF 9:30–11:00 A.M, 1:00–2:30 P.M.
Or by appointment or happenstance.

Telephone / e-mail

(864) 597-4524 / sykesda@wofford.edu

An introduction to computer networks including network architecture, communication protocols, algorithms, and network applications. Prerequisite: COSC 350.

By the end of the course, you should be able to:

  • Explain the structure and operation of the internet, including concepts including layers, packets, and encapsulation.
  • Understand a variety of protocols, including HTTP, TCP, and IP.
  • Understand basic issues concerning network security.
  • Implement network applications using libraries for the application layer and libraries at the transport layer.
Required textbook

Computer Networking: A Top-Down Approach, 7th Edition by James F. Kurose and Keith W. Ross, ©2017, Pearson Education, Inc., ISBN 978-0-13-359414-0.

Web resources

We will use these websites (and others) this semester:

  • The Piazza class page will host announcements, descriptions on homework assignments, handouts, and discussions about class topics and projects. If a question about a project arises, post it at Piazza. Note: You may post anonymously, but be aware that your post will be anonymous only to classmates and not to the instructor.
  • You will submit some project files to the COSC 315 Moodle page. Your scores for graded work (quizzes and projects) will be recorded there. Note: The cumulative grade shown in Moodle should reflect your final weighted score based on work graded so far. If you suspect an inaccuracy, please let me know and I will correct it.
  • Mimir Classroom. You will need to create an account (free) using your Wofford email address. Homework exercises and some projects will be administered from within Mimir Classroom.
Software

We will use a variety of software application, including Atom, PyCharm [be sure to get a free educational license], and Wireshark. All are free. All of them will be installed on the computers in the CS Lab (Olin 112A).

Your grade for the course will be based on a weighted average of scores for homework, tests, projects and labs, and a final exam. The usual grading scale applies: 93–100: A, 90–92: A-, 87–89: B+, 83–86: B, 80–82: B-, 77–79: C+, 73–76: C, 70–72: C-, 60–69: D, 0–59: F.

A final average will be calculated using two methods using weightings shown in the table. The higher of the two values will be mapped to a letter grade. Under Method #2, the homework scores are not factored into the calculation, the test scores are weighted less, and the final exam is weighted more. Note: The Moodle Gradebook will reflect Method #1 weightings.

Component Weighting #1 Weighting #2
Homework 0% 0%
Projects 45% 45%
Test 1 20% 10%
Test 2 20% 10%
Final exam 15% 35%
TOTAL 100% 100%
Homework

Homework assignments get you prepared for class. Homework will usually consist of some reading and some exercises. Be sure you read actively. Take notes. Some assignments will have you run some experiments and analyze data. Homework is due at the start of the class meeting for which it was assigned.

You are allowed to use any resources you find useful for completing homework assignments, including working with other students in the class. Your primary goal should be to get a perfect score on every homework assignment so you will be prepared for the next class meeting.

The homework component of the final weighted average is computed using a simple weighted mean of scores: the percentage obtained by dividing the sum of points you earned by the sum of point values for the assignments. For example, let's say there are two assignments, the first worth 15 points and the second worth 25 points. If your score on the first assignment is 9 and your score on the second is 21, then your score for both is (9 + 21) ÷ (15 + 25) = 75%. Note that the result can be different from averaging the percentage scores for the two assignments, ((9 ÷ 15) + (21 ÷ 25)) ÷ 2 = (60% + 84%) ÷ 2 = 72%.

Tests

You will take two tests. The first test will be after we cover network basics, the application layer, and the transport layer. The second will be after we cover the network and link layers.

You may bring an index card, maximum size 6"×9", containing handwritten notes to each test.

Projects

Projects play a central role in this course. You will do a lot of coding this semester, mostly in Python 3. It is important to complete each project successfully and for you to understand what you did in completing it.

Remember the 90-90 rule:

The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time.

The Rule of Credibility attributed to Tom Cargill. See Ninety-Ninety Rule See also, Bumper-Sticker Computer Science.

Starting early gives you time to ask questions. While you need to write your own code, having a conversation with other people facing the same challenges can be very useful. Come to office hours if you like.

Final exam

The final exam is comprehensive, covering the material on the first and second tests as well as material covered after the second test. The objective of the final exam is to assess how well you reached the objectives for the course.

You may bring an index card, maximum size 6"×9", containing handwritten notes to the final exam.

Logistics

Most class meetings will start with a brief review of the homework assignment and continue with discussions and/or exercises based on what has been covered so far. Some in-class exercises will require you to work on a laptop computer or work with another student in the class. You may have a laptop computer open on your desk only if I direct you to use it. Most projects will be started during a class meeting.

You are encouraged to take copious notes during class. Take handwritten notes on paper or on a tablet.

Handwritten notes engage more of the senses. The brain is more active, so the learning process is enhanced. This is actually part of an area of study called “haptics.” Researchers in this arena are studying the way our minds and bodies interact in the learning process.

It’s the “tactile” or “kinesthetic” learning idea in action. The more physically active you are, including taking handwritten notes, the more likely you are to remember information well.

Attendance

You are expected to attend class meetings. The Class Attendance Policies described in the Wofford College Student Handbook (pp. 81ff) makes you responsible for catching up on missed classes. I suggest you find a “buddy” from whom you can get notes in the event you are absent. I will post links to handouts in Piazza.

Do not attend class if you are not feeling well and might have a contagious illness. Seek appropriate medical attention at the Wellness Center. A doctor’s note concerning absences is not required.

The final exam period is scheduled for 2:00–5:00 P.M. on Tuesday, December 14, 2021. You must be present for the exam.

Late work

You are expected to complete all assigned work on time.

I understand that sometimes you must miss a class, a test, or a project or homework deadline. As long as such occurrences are not excessive, I will work with you as best I can to help you succeed in the course.

You must meet homework and project deadlines. To submit your work late, you must contact me at least 18 hours before the deadline to request an extension. Your request must indicate how much more time you need. I will still expect you to submit by the deadline the work you have completed so far even if you are given an extension.

Communication

Piazza

All questions about coursework, including about projects, must be posted at the Piazza Q&A page. If you send me a question via email or via private post that should be posted publicly at Piazza, I will direct you to post your question publicly. After you post it publicly, I will reply to the question.

Do not post working code at Piazza. Do not include in a response either “fixed” code or a detailed description of how to change code to get it to work. It is acceptable to post non-working code.

Feel free to respond to a question or to edit a response to a question. We are all learning together.

Note: Anonymous Piazza posts are anonymous to classmates but not to me.

Email

It is appropriate to send me email messages for private matters, such as letting me know you will be absent or that you’d like to schedule a meeting.

I usually respond to email messages sent Sunday through Thursday within 24 hours and within 48 hours when sent on a Friday or a Saturday. I usually respond much sooner to Piazza posts since I have the Piazza app on my phone and receive notifications.

Academic integrity

The Honor Code requires faculty, staff, and students to maintain a high standard of individual honor and integrity. Work represented as your own must be your own.

I encourage you to help others in the class or get help from others on projects. However, you may not write code for another student or provide code to copy. Conversely, you may not get code from another student. Doing any of these things is a violation of the Honor Code.

There is a distinction between collaborating and cheating.

When collaborating,

  • One person may discuss a problem or algorithm with another person.
  • One person may work with another person to figure out how to attack a problem.
  • One person may describe a problem and get suggestions for solving it.
  • One person may describe to another person what some code must do, but not provide that code.
  • One person may help another person to debug code, but must not type the working code.

Ultimately, you must implement a solution to the problem yourself.

On the other hand, cheating occurs when

  • One person copies code from another person or copies code available on the internet.
  • One person allows another person to copy code.
  • One person edits another person’s code, either to write new code or fix a bug in existing code.
  • Two people are working along with another and decide together what code to write, even if they are working on separate computers.

For some projects, you might be given an option to work with one other student in the class. In this case, you are allowed to share all your work with your teammate. However, you are expected to do all of the work together. One student should not work without the other present. However, one of you may meet with me without the other being present.

Don’t cheat because you are up against a deadline. Manage your time effectively. Start each assignment as soon as it is given. If you run into a glitch:

  • Seek help from me.
  • Submit on time the work you have done, even if it is not fully completed. You will likely get partial credit for your work.

Access and Accommodations

It is the policy and practice of Wofford College to create an inclusive and accessible learning environment. This course is intended for all students, including those with mental or physical disabilities, illness, injuries, impairments, or any other condition that tends to negatively affect one’s equal access to education.

If you have not yet established services through Accessibility Services, but have a temporary health condition or permanent disability that keeps you from fully accessing the space, content, and experience of this course, you are welcome (but not required) to visit the Accessibility Services Accomodations channel in my.wofford.

If you have already established accommodations with Accessibility Services, please communicate your approved accommodations to me at your earliest convenience so we can discuss your needs in this course.

This is the plan for the semester. It is subject to change, although I will do everything I can to stay on schedule.

If the schedule shows a chapter for a class meeting, then you should have read that chapter and completed any homework associated with that chapter before the start of the class meeting on that date. If the schedule shows a project, then we will spend at least part of the class meeting on that date getting started on that project.

Meeting Date Content
02 SEP
Getting started.

Course overview, working with bit strings, bit streams, Python standard library documentation, bit masks, byte strings in Python, HTML documents.

07 SEP – 09 SEP
Chapter 1. Computer Networks and the Internet

Network basics: concepts and terminology. Network performance. Internet protocol stack. History of computer networking and the internet. Wireshark lab.

14 SEP – 16 SEP
21 SEP – 23 SEP
Chapter 2. Application Layer

Common protocols (HTTP and SMTP), client-server and peer-to-peer network applications, domain name system (DNS), and socket programming. Wireshark Labs.

28 SEP – 30 SEP
05 OCT – 07 OCT
12 OCT – 14 OCT
19 OCT
Chapter 3. Transport Layer

TCP and UDP, reliable data transmission, connection-oriented transport, principles of congestion control.

21 OCT – 22 OCT Fall Academic Holiday
26 OCT – 28 OCT
02 NOV – 04 NOV
09 NOV – 11 NOV
Chapters 4 and 5. Network Layer

Network service models, routers, IP addressing (IPv4, IPv6), IPv4 datagrams, network address translation (NAT), routing algorithms, ICMP

16 NOV – 18 NOV
Chapter 6. Link Layer

Error detection and correction, link-layer addressing and ARP, Ethernet, A day in the life of a web page request.

23 NOV – 25 NOV Thanksgiving break
30 NOV – 02 DEC
07 DEC – 09 DEC
Chapter 8. Security in Computer Networks

Cryptography, SSL, virtual private networks.

14 DEC
Final exam: 2:00pm–5:00pm