CSCI-3650 Network Programming I
ECE-4245 Computer Network Design

Saint Louis University

Basic Information

If you wish, you may download a printable version of the original syllabus. However, all of that information is also on this web page and the web page will be updated as the course proceeds, whereas the printed syllabus will not.

Instructor: Flavio Esposito

Office: Ritter Hall (RTH) 217
Email: espositof AT slu DOT edu
Phone: 314-977-2334


Time and Days: Mon/Wed/Fri 12:00pm - 12:50 pm

Where: Ritter Hall 202 (Campus Map)

Date Range: Jan 17, 2017 - May 16, 2017

Though attendance in class is not explicitly required, it is certainly expected. Lectures are designed to be interactive and class participation is most welcome. These meetings will offer learning opportunities that cannot be recreated purely from readings.

I may occasionally depart from the textbook and its flow to explain more modern notions of networking currently under active research (topics that haven't made it in any book yet), or more details on more standard topics. I may not always provide backup lecture notes on such additional details. That said, for those who miss a lecture, information on the lecture topic can often be found on the course schedule web page.

Office Hours and Tutoring

Wed and Thu: 1:30pm - 2:30pm or by appointment
Room: RTH-217

Tutoring Resources at SLU: Our department employees many CS majors to help out in our department labs. Those students are also available to provide assistance with course materials at such times. Our department webpage maintains a current list of available times and locations. As stated in the section on Academic Integrity below, these tutors are an acceptable resource for help, yet you should still document both the source of the help as well as the extent, if significant.

Required Resources

This class uses online resources, handouts and the following textbook:
“Computer Networking, A Top-Down Approach 7th Edition” by Kurose and Ross.

Other Good References

Computer Networking: Principles, Protocols, and Practice
2nd Edition (2015) By Olivier Bonaventure - Free download!

Computer Networks: A Systems Approach
5th Edition (2011), By Larry L. Peterson and Bruce S. Davie

Computer Networks
5th Edition (2010), By Andrew S. Tannebaum and David J. Wetherall

Course Overview and Learning Objectives

Computer networks have become embedded in our everyday lives, enabling applications such as multi-players online games, electronic commerce and trading, video streaming and conferencing, peer-to-peer file sharing and computations, social networking, cloud computing, Internet-of-Things, and of course, text messaging and cellphone calls.

The course introduces the underlying concepts and principles of computer networks. It presents the building blocks of a network and how these blocks fit together. The course emphasizes the design and implementation of network software that transforms raw hardware into a richly functional communication system. Real networks (such as the Internet, Ethernet, Wi-Fi) will be used as examples to reinforce the concepts and demonstrate various protocols and architectures. The course also covers notions of network management and modern networking, such as Software-Defined Networks and Data Center networking.

After taking this class, students will acquire the basics of computer network architectures and protocols, and they will understand classical and modern aspects of computer networks. Moreover, students will reinforce theoretical notions with hands-on programming and other practical assignments.

Course Prerequisites and Expectations

  • CSCI 3500 is a prerequisites. If you did not take CSCI 3500, please ask permission to the instructor before enrolling.

  • Solid programming skills in a high-level language (such as C, C++, Java, Python) are required. If the instructor provides a skeleton of code in some language (mainly, C or Java) as part of an assignment, you will be expected to incorporate your code in that language to implement specific networking functions. In this case, the code is mostly straightforward and does not need knowledge of advanced features of the language.

  • A rudimentary understanding of algorithms and their mathematical foundations is required.

  • A rudimentary understanding of computer architecture and operating systems is required.  You are expected to already have the background to read and understand code, write and debug reasonably large (1000-line) programs, and learn new syntax and apply it without much difficulty. You are also expected to learn new tools/programs and run them to test and analyze network protocols. If you are in doubt of your background, please talk to the instructor.

Preliminary Lecture Outline

  1. Overview: introduction to communications connectivity (Chapter 1)

    1. Links and nodes

    2. LANs amd WANs

    3. Internets

    4. Multiplexing

    5. End-to-end channels

    6. Standards, protocol and architectures (OSI, TCP/IP)

  2. Applications (Chapter 2)

    1. Application programming interface (sockets)

    2. Client-server, Email (SMTP, POP, IMAP)

    3. Web (HTTP, cookies, caches)

    4. DNS, P2P (file sharing, Skype)

  3. Transport services and protocols (Chapter 3)

    1. UDP and TCP

    2. Basics of reliable communication (stop-and-wait, go-back-n, selective-repeat)

    3. Flow control (sliding window)

    4. End-to-end challenges (TCP reliability and flow control)

    5. Connection management and adaptive retransmission

    6. Congestion control: (AIMD, slow start, fast retransmit and recovery, fairness)

  4. Network Layer: Data Plane (Chapter 4)

    1. IPv4 and IPv6

    2. Packet Scheduling

    3. Datagram fragmentation and reassembly

    4. Network Address Translation (NAT)

    5. Generalized Forwarding and Software-Defined Networks (SDN)

    6. The OpenFlow Protocol

  5. Network Layer: Control Plane (Chapter 5)

    1. Packets vs. virtual circuits

    2. Distance-vector routing (loops)

    3. Link-state routing

    4. Border Gateway Protocol (BGP)

    5. Network Managemnt (ICMP, SNMP, CMIP)

  6. The Link Layer and LANs (Chapter 6)

    1. Point-to-point links

    2. LANs: encoding, framing, error detection (parity, CRC)

    3. MAC protocols (Ethernet CSMA/CD), internetworking (spanning-tree switches, forwarding)

    4. Link Virtualization

    5. Data Center Networking

  7. Wireless and Mobile Networks (Chapter 7)

    1. Challenges, elements, characteristics (hidden terminals, signal fading)

    2. IEEE 802.11 and Wi-Fi

    3. Mobility Management

    4. Introduction to 4G and 5G Notions

Grading Criteria

There will be one midterm exam and one final exam. Both exams will be closed books and notes. Also, there will be a few written assignments, and a few programming assignments. Final grades will be approximately based on the following criteria:

  • Written and Lab Assignments: 30%

  • Programming Assignments: 20%

  • Midterm Exam: 20%

  • Final Exam: 30%

Letter Grades

Student percentage above 90% will result in a grade of A or better.
Student percentage above 87% will result in a grade of A- or better.
Student percentage above 83% will result in a grade of B+ or better.
Student percentage above 80% will result in a grade of B or better.
Student percentage above 77% will result in a grade of B- or better.
Student percentage above 73% will result in a grade of C+ or better.
Student percentage above 70% will result in a grade of C or better.
Student percentage above 67% will result in a grade of C- or better.
Student percentage above 60% will result in a grade of D or better.
Student percentage below 60% will result in a grade of F.

Late submission policy

Assignments submitted late will have a score reduced of 20% per day for the first 2 days after the deadline. No submissions will be accepted after the second day. Upon request to the Dean of Students (, students shall be given up to five (5) consecutive days (not including weekends or holidays) of excused absence for bereavement.

Technology in class

  • Cell phones are allowed in vibration mode during class. If you have a personal emergency, feel free to step out quietly from the classroom and take the call. Cell phones are not allowed during exams. Recording audio or video (frames) during class is not recommended. Learning how to take notes effectively is useful: train for that.

  • Laptops: Laptops are not recommended but not forbidden during theory sessions.

Student Success Center

In recognition that people learn in a variety of ways and that learning is influenced by multiple factors (e.g., prior experience, study skills, learning disability), resources to support student success are available on campus. The Student Success Center assists students with academic and career related services, and is located in the Busch Student Center (Suite, 331) and the School of Nursing (Suite, 114). Students can visit to learn more about:

  • Course-level support (e.g., faculty member, departmental resources, etc.) by asking your course instructor.

  • University-level support (e.g., tutoring services, university writing services, disability services, academic coaching, career services, and/or facets of curriculum planning).

University Writing Services Support

We encourage you to take advantage of university writing services in the Student Success Center; getting feedback benefits writers at all skill levels. Trained writing consultants can help with writing projects, multimedia projects, and oral presentations. University Writing Services offers one-on-one consultations that address everything from brainstorming and developing ideas to crafting strong sentences and documenting sources. For more information, call 314-977-3484 or visit

Disability Services Academic Accommodations

Students with a documented disability who wish to request academic accommodations must contact Disability Services to discuss accommodation requests and eligibility requirements. Once successfully registered, the student also must notify the course instructor that they wish to access accommodations in the course.

Please contact Disability Services, located within the Student Success Center, at or 314.977.3484 to schedule an appointment. Confidentiality will be observed in all inquiries. Once approved, information about the student’s eligibility for academic accommodations will be shared with course instructors via email from Disability Services and viewed within Banner via the instructor’s course roster.  

Note: Students who do not have a documented disability but who think they may have one are encouraged to contact to Disability Services.

Title IX

Saint Louis University and its faculty are committed to supporting our students and seeking an environment that is free of bias, discrimination, and harassment. If you have encountered any form of sexual misconduct (e.g. sexual assault, sexual harassment, stalking, domestic or dating violence), we encourage you to report this to the University. If you speak with a faculty member about an incident of misconduct, that faculty member must notify SLU’s Title IX coordinator, Anna R. Kratky (DuBourg Hall, room 36;; 314-977-3886) and share the basic facts of your experience with her. The Title IX coordinator will then be available to assist you in understanding all of your options and in connecting you with all possible resources on and off campus.   If you wish to speak with a confidential source, you may contact the counselors at the University Counseling Center at 314-977-TALK. To view SLU’s sexual misconduct policy and for resources, please visit the following web addresses: and

Academic Integrity

Academic integrity is honesty, truthful and responsible conduct in all academic endeavors. The mission of Saint Louis University is “the pursuit of truth for the greater glory of God and for the service of humanity.” Accordingly, all acts of falsehood demean and compromise the corporate endeavors of teaching, research, health care, and community service via which SLU embodies its mission. The University strives to prepare students for lives of personal and professional integrity, and therefore regards all breaches of academic integrity as matters of serious concern.

The governing University-level Academic Integrity Policy can be accessed on the Provost's Office website. A more detailed policy statement is given by the College of Arts & Science, also applying to this course.

In addition to those general statements, we wish to discuss our policy in the context of this course. When it comes to learning and understanding the general course material, you may certainly use other reference materials and you may have discussions with other students in this class or other people from outside of this class. This openness pertains to material from the text, practice problems, general syntax and use of any language or other computing tools.

However, when it comes to work that is submitted for this course, you are not to use or to search for any direct or indirect assistance from unauthorized sources, including but not limited to:

  • other students in this class

  • past students, whether from this school or other schools

  • other acquaintances

  • other texts or books

  • online information other than that referenced by course materials

Acceptable sources of information include consultations with the instructor, teaching assistants, or members of organized tutoring centers on campus, as well as any materials explicitly authorized for a project description. Even in these cases, if you receive significant help you should make sure to document both the source of the help as well as the extent.

On certain assignment, we may explicitly allow students to work in pairs. In this case, conversations between partners is both permissible and required. Furthermore, both students are expected to contribute significantly to the development of the submitted work. It is unethical to allow a partner to “sign on” to a submission if that partner did not significantly contribute to the work.

Any violations of these policies will be dealt with seriously. Penalties will apply as well to a student who is aiding another student. Any such violations will result in a minimum penalty of a zero on the given assignment that cannot be dropped, and severe or repeated violations will result in an immediate failing grade in the course. Furthermore all incidents will be reported in writing to the Department and/or the Dean, as per the College procedure.