Description

Instructor:
Dr. Joseph Gersch
Office: 464 CS Building
Office Hours: 1-2 T, TH or by arrangement
Email: gersch [at] cs.colostate.edu
GTA:
Athith Amarnath
Office: CSB 120
Office Hours: Tuesdays - 9AM to 11AM Thursdays - 4PM to 6PM
Email: athith.amarnath@colostate.edu
Lecture Time and Place:
9:30 – 10:45 am, Tue, Thur, CSB 130
Recitation 1 Time and Place:
9:00 am – 9:50 am, Wednesdays, Rm 315 CSB
Recitation 2 Time and Place:
11:00 am – 11:50 am, Wednesday, Rm 315 CSB

This senior level undergraduate course covers principles of data communications, local area networks, communications protocols, TCP/IP, and the Internet.

CS457 is now being offered in both the Fall and Spring semesters. This course is also offered as an online course for distance learning students.

If you want to learn how the Internet and its applications work, you should take this class. Note, however, that it is not an easy class as there is a wide variety of material that will be covered. Typically there are three programming assignments, weekly homework, a midterm and final exam. All programming is done in C/C++, Python and GO, so make sure you are comfortable with these languages. If you don't know them, learn them NOW! There are lots of tutorials and videos on the web. Each Project will take between 10 and 50 hours to complete.

Course Objectives

Upon completion of this course, students will be able to:

  • Understand network communication principles, service models and packet switching
  • Learn about internetworking, transport protocols, IPv4 and IPv6 and Network Address Translation
  • Learn about network routing and the BGP protocol
  • Learn how congestion control is handled
  • Learn about DNS, Multicast and Multimedia streaming
  • Review an alternative networking architecture (Named Data Networks)
  • Learn how the internet continues to evolve, including Software Defined Networks (SDN)
  • Examine various internet application protocols such as VOIP and real-time streaming
  • Review wireless networking and network security principles

Prerequisites

CS 370 with a C [2.0] or better. STAT 301 or STAT/ECE 303 or STAT/ERHS 307 or STAT 309 or STAT 315 or STAT 311 (all with a C [2.0] or better). CS 253 with a C [2.0] or better.

Textbook

Optional Textbook: Computer Networks, A Systems Approach; 5th Edition by Larry Peterson and Bruce Davie. You may use other versions, but make sure you get the homework assignments correct. Even though this textbook is optional, it is worth purchasing by anyone serious about networking.

Attendance

Students are expected to attend lectures, where information will be given that is not available at any other place. Attendance at recitations is recorded and contributes to your grade. Students are expected to:

  • to be on time to class and stay until the class is complete,
  • silence cell phones,
  • to be alert and attentive,
  • to participate in class meetings,
  • to use laptops only for class purposes.

Excused absences are handled in accordance with CSU policies. If you are ill please let us know right away. CSU requires verifiable proof (e.g. a note from the health center) for students who wish to not be penalized for missed classes and work.

We also do not want you to come to class ill. Makeup work will need to be explicitly negotiated. The objectives include: getting students to class; not spreading illness; and making sure students who are ill receive appropriate treatment. The material in this course (including learning to come to class and stay awake) is important. Excessive absences will impact your grade.

Grading

Here are the formally graded elements of the course and associated weighting:

Activity Weight
Weekly Homeworks 10 %
Programming Projects 40 %
Midterm 20 %
Final Exam 30 %

Recitations

Recitations will typically cover elements and fundamentals of Socket Programming. We will initially begin by introducing some basic UNIX concepts required for networking, a small makefile tutorial and a little overview of the GNU debugger. From then onwards we will cover socket programming and related material for homeworks and projects.

Programming Projects

There will be 3 programming projects. The grading policies related to the projects are mentioned on this page. The projects will primarily deal with socket programming. However, socket programming will only be the base technology used in each of the projects. On a high level, each project will represent a different problem. C and C++ are to be used as the language of coding with the exception of one small sub-project to be written in Python. The projects will basically reflect topics taught in class. Note: we may use the GO language for some of the projects, as well as the MININET emulation system. The recitation sections will cover the needed tutorials.

Late and Makeup Policy

Midterms: Make-up exams are only given for extraordinary circumstances (e.g., illness, death of family member). Students must consult with the instructor as soon as possible, preferably before the start of the exam. Examination dates are listed in the syllabus; be aware of them and plan accordingly.

Programming Projects: Programs are submitted electronically. Details of how this is done appears with the first assignment. Always check the progress page for due dates. The due date will include a day and time. The assignment will also specify a late acceptance period which will include a late penalty of 50%. After the late period, electronic submission is closed; students that have not submitted programs receive no points for the assignment.

Homeworks: Homeworks must be submitted per the instructions in the assignment and are due at the beginning of class on Tuesdays. Handwritten and scanned is acceptable, but the handwriting must be legible. The instructors and TAs reserve the right to decide whether or not a paper is legible. Late homeworks may be turned in at beginning of class on Thursday, and are subject to a 50% late penalty.

Important Dates

Description Date
First day of class Tuesday, January 16
Last Day to Add/Drop Wednesday, January 31
Midterm Exam Tuesday, March 6
Spring Break!!! Saturday, March 10 through Sunday, March 18
Last day to Withdraw ("W") Monday, March 19
Last Lecture Thursday, May 3
Final Exam Thursday, May 10, 2-4PM

Class Schedule

Note: this schedule is subject to change.

Week Dates Topics
Week 1 1/16, 1/18 Intro and Networking Overview
Week 2 1/23, 1/25 Service Models
Week 3 1/30, 2/1 Packet Switching
Week 4 2/6, 2/8 Internetworking, Transport Protocols
Week 5 2/13, 2/15 Transport Protocols (continued), Forwarding, NAT, IPv6
Week 6 2/20, 2/22 NAT, IPv6 (continued), Routing
Week 7 2/27, 3/1 Routing (continued), Review
Week 8 3/6, 3/8 Midterm Exam, DNS
Week 9 3/13, 3/15 Spring Break; no classes
Week 10 3/20, 3/22 Midterm Review, BGP
Week 11 3/27, 3/29 BGP (continued), route hijacking
Week 12 4/3, 4/5 Congestion Control
Week 13 4/10, 4/12 Congestion Control (continued), Software Defined Networks - SDN
Week 14 4/17, 4/19 Multicast Networking, Peer-to-Peer Networking
Week 15 4/24, 4/26 Traditional and Multimedia Applications
Week 16 5/1, 5/3 Named Data Networks Overview, WIFI and/or Network Security, Final Exam Review
Week 17 5/10 Final Exam on Thursday, 2 to 4 PM

Professional Conduct

In addition to responsibilities enumerated in the Colorado State University Student Conduct Code, the Computer Science Department advocates rights and responsibilities of conduct for all its Members: faculty, staff and students, in accordance with the intent of the Code of Ethics of the Association of Computing Machinery.In particular, all department members are obligated to

  1. Respect the rights of others and protect fundamental human rights including respect of the diversity of all cultures, and to foster a safe and comfortable social environment.
  2. Avoid harm to others:
    1. All members are expected to treat one another with professional courtesy at all times. Harassment or humiliation of one member by another will not be tolerated.
    2. Members will dress appropriately for an educational and professional setting, refraining from modes of dress that may shock or disturb others.
    3. Members will refrain from using offensive or abusive language.
    4. Members will refrain from offensive public displays, including on computer monitors, wall posters, or engaging in overt public disturbances.
  3. Be honest and trustworthy:
    1. Members will relate honestly with one another, will not submit work that is not their own (unless properly cited), will keep their promises, and will act to merit the trust of others.
    2. Members should adhere to the ACNS policy on acceptable use of computing resources.
  4. Be fair and take action not to discriminate:
    1. Members will treat others fairly, evenhandedly and without capriciousness. a. Members will not single out any other Members or groups of Members for discrimination or criticism or unwelcome treatment especially based on race, physical characteristics, age, gender, religious convictions, or membership in any cultural group.
  5. Honor property rights:
    1. Members will respect the personal property of others.
  6. Give proper credit for intellectual property:
    1. Members will respect the work product of others, and will never claim ownership of intellectual work of others as their own.
  7. Respect the privacy of others:
    1. a. Members will respect the rights of others to be left alone, and will refrain from unwelcome actions towards them, and unwanted intrusions into their affairs.

For questions, explanations, or to report violations, contact your instructor or appropriate department administrator. Mediation of violations will be conducted within the Department and may be referred to the CSU Student Conduct and Conflict Resolution Office.

Colorado State University students should be familiar with the University Honor Pledge.