Course Calendar - Lectures Course Calendar - Labs

Computer Networks

CSC 332, Spring 2025
Lectures: Mon and Wed 1:00 - 2:30 PM, GICT 237
Labs: Fri 9:00 - 11:00 PM. GICT 207
Instructor: Shashi Prabh
Office: GICT 125
Office hour: Wed 3:00-4:00 PM, or by appointment
Email: shashi.prabh @ ahduni
Prerequisites: Operating systems, knowledge of programming in C
Introduction and course objectives
This is a first course on computer networks. The course provides a rigorous introduction to computer networks, focusing on the principles, architectures, and protocols that underpin the modern Internet. Students will study how networks are designed to be scalable and robust. They will also learn the performance characteristics of networks and how these design goals are achieved through layered abstractions and well-defined protocols.

The course examines the Internet's protocol stack in depth, covering the physical, link, network, and transport layers, with emphasis on core mechanisms such as addressing, routing, error control, congestion control, and end-to-end reliability. Students will learn not only how networking protocols work, but why they are designed the way they are, and the trade-offs involved in real-world systems.

Practical aspects of networking are integrated. By the end of the course, students will be able to reason about network behavior, analyze protocol performance, and build networked applications that interact directly with Internet protocols. The course bridges theory and practice, preparing students to understand and engineer modern distributed and networked systems.

Learning outcomes
After successfully completing this course, students will be able to:
  • Understand the fundamental concepts and principles of computer networking
  • Utilize practical tools to observe, debug, and evaluate network behavior
  • Design and implement networked applications using standard networking APIs
  • Apply networking concepts to reason about scalability, reliability, and efficiency in real-world systems
Reference Books
  • Computer Networks, Andrew Tanenbaum, Nick Feamster and David Wetherall, 6th edition, Pearson, 2022 (5th edition can be used.)
  • Computer Networks: A Systems Approach, Larry L. Peterson and Bruce S. Davie, 5th edition, MK Publishers, 2011 (Available online here.)

Supplementary reading
  • An Engineering Approach to Computer Networking, S. Keshav, Addison-Wesley, 1997.
    Basic concepts are described very well though the book is somewhat dated.
  • Data Networks, Dimitri P. Bertsekas and Robert G. Gallager, 2nd Edition, Prentice Hall, 1992
    Classic advanced level text. Authors have made the book available online here.
  • Unix Network Programming, Vol. 1: The Sockets Networking API, Stevens, Fenner and Rudoff, 3rd edition, Addison-Wesley Professional, 2003
Grading
  • Lecture
    • Quizzes (2): 10%
    • Midterm exam: 35%
    • Final exam: 35%
  • Laboratory
    • Lab work and assignments: 10%
    • Lab exam: 10%
Helpful Advice ( a.k.a. expectation from the students! )
Pay attention and take notes! Get doubts cleared during the lecture itself -- do not hesitate to ask questions in class. Before attending a lecture, review your notes and scan the portion of the textbook that will be covered (see the course calendar page here). Do assignments on your own. If you happen to miss some session(s), do talk to someone else who attended or the TA to find out the topics covered and any announcement made. Spend 6-10 hours per week on the course.