Course Syllabus - Fall 2025

About the Course

This course provides an introduction to computer networks, with a special emphasis on Unix interprocess communication (IPC) and network programming. We will study the principles of computer networking, including the OSI reference model, key protocols such as TCP and UDP, and common application-layer protocols. We will learn both the theoretical foundations and the hands-on skills needed for programming in C++ and Python, covering topics from socket programming and concurrency to DNS, HTTP, and modern frameworks such as gRPC.

Pre-requisites

CSCI 4210 Operating Systems or equivalent

Grading

The grades will be broken down as follows:

  • Homework Assignments: 4 at 12.5% each = 50%

  • Mid-Term Exam: 20%

  • Post-Lecture Questions (not every lecture): 10%

  • Team lab-style mini-assignments: 20%

I will use the following chart to convert your semester-end average (rounded to the nearest 0.01 using bankers’ rounding method) to a letter grade:

A: 92.00–100.00

B+: 85.00–88.99

C+: 77.00–79.99

D+: 67.00–69.99

A-: 89.00–91.99

B: 82.00–84.99

C: 73.00–76.99

D: 60.00–66.99

B-: 80.00–81.99

C-: 70.00–72.99

F: 0.00–59.99

All grades are rounded only before applying the cutoffs. Rounding is performed to the nearest 0.01 using the bankers’ rounding method. Cutoffs may end up lower than this but will notbe raised from here. Thus, for example, if you earn 91.9950 it is rounded to 92.00. After applying the cutoff of 92, you are assured of earning an A, regardless of what other students earn. If your average grade is 91.9949, it is rounded to 91.99. If the cutoff for an A is 92, you will get an A-. Grade disputes must be made within 10 days. After 10 days have elapsed, the grade on record will stand.

Attendance

The class is in person. Attendance is required. You are responsible for all announcements made in lecture (e.g., changes in due dates). Labs will be released two days before the corresponding “lab day,” and are due by 11:59 PM on that day.

After each lecture, there will be some lecture exercises on Submitty. Each lecture exercise will be available for about two days, starting with the end of class. Each lecture exercise must be completed individually.

Late Policies

All due dates refer to 11:59:59 PM unless otherwise specified.

Late Assignments: Five total late days across the semester (max 3 per assignment), counted in whole-day increments. Once exhausted, late assignments will not be graded. For team assignments, all team members are charged the late days.

Late Labs: Late labs are not accepted.

Late Lecture Exercise: Late submissions are not accepted.

Assignment Grading Criteria

Your submission must include:

  • A Makefile that will build your program

  • One or more .c files

  • One or more .h files

  • Any other files necessary for proper compilation

  • A README (plain text is fine) describing your program, issues encountered, time spent, and work breakdown for group assignments

Programming assignments are graded as follows:

  • 25% for proper comments (e.g., each function indicates what it does)

  • 75% for a correct, working implementation

Correctness points are typically divided among key functions. For example:

  • Reading — 20 points

  • Writing — 20 points

  • Doing the calculation correctly — 35 points

Programs that don’t compile or that core dump typically earn no more than 20 of the 75 correctness points (so even perfectly commented code that fails fundamentally maxes out at 45/100).

Compatibility

All assignments MUST compile with clang/clang++ and run on Ubuntu 20.04. This matches the Submitty environment. Not all valid C programs are valid C++ programs; all C files must compile cleanly with clang++. Be careful not to rely on undefined behavior in C library calls.

Accommodations

If you require disability-related accommodations, obtain an authorizing memo from Disability Services for Students via the Student Health Center. Provide your memo to the professor well in advance of any affected exam or assignment. Information about students’ special needs is confidential.

Academic Integrity

The Rensselaer Handbook of Student Rights and Responsibilities defines the full list of forms ofAcademic Dishonesty and you should make yourself familiar with these. In this class, allassignments that are turned in for a grade must represent the student’s own work. In cases wherehelp was received, or teamwork was allowed, a notation on the assignment should indicate yourcollaboration. If you have any questions concerning this policy before submitting an assignment, please ask for clarification.

Study groups are encouraged, but programming assignments are individual unless otherwise specified. Ensure your work remains your own. Copying the code from online resources such as github is in violation of Academic Integrity policy. Sharing or duplicating work results in an automatic zero for the first offense; a second offense leads to failure in the course and a report to the Dean of Students. Undergraduate offenders cannot mentor in the future. Graduate students caught cheating will fail the course.

Additional policy: Homework files or file excerpts should never be shared electronically (by email, text, LMS, Dropbox, GitHub, etc.) Homework solution files from previous years (either instructor or student solutions) should not be used in any way. Students must not leave their code (either electronic or printed) in publicly-accessible areas.

Learning Outcomes

  • Understand the OSI reference model and a variety of network protocols.

  • Implement network programming constructs on Unix platforms to create robust sockets-based applications.

  • Design and implement client/server programs using a variety of protocols and platforms.

  • Apply concepts of the C programming language to moderately complex software implementation problems.

  • Make use of at least one RPC framework.