COSC 6377: Introduction to Computer Networks


Mondays and Wednesdays 4-530 PM

Instructor: Omprakash Gnawali

Office Hour: T 4pm

TAs: Alireza Ansaripour and Nour Smaoui

Office Hour: AA (R 4pm), NS (F 11am)


The goal of this course is to understand the technologies that power the Internet. We will cover the core concepts, philosophies, and read old and new papers to get a feel for the challenges and opportunities for the future Internet. We will also build and use several networked systems to get practical experience related to Internet technologies.


There is no required textbook. If you have not taken prior networking course at the undergraduate level, reading through Computer Networks: A Systems Approach by Peterson and Davie or Computer Networking: A Top-Down Approach by Kurose and Ross is highly recommended.


The first three weeks will cover the basics of networking. Remainder of the class will be paper discussion, first mostly classical papers in networking, then a few papers from selected topics in networking, including routing, transport, quality of service, wireless networks, security, and Internet services. There will be opportunities for hands-on learning through homework and projects during the course.


There will be two exams. The exams will cover everything covered or mentioned during the class. You can bring any notes or material to the exam. There will be no make-up exams. The exams will be administered during lecture hours.


Homework will involve reading papers, doing simple calculations, and writing short programs. There will be approximately 3 homework assignments.


You will build a networking service or an application that has a significant networking component. The project likely will involve significant network programming in Python (preferred) or a language of your choice. The program must compile on a department provided Linux machine. PhD students are strongly encouraged to design their own projects. There will be a single project but will have one mid-project checkpoint.

Class participation

You are expected to participate actively during the class. We will also allocate a few minutes in each class to discuss topical news articles related to networking. We want to learn not only technical topics but also how to discuss them. Use that as your opportunity to engage with the class.


Component Percentage
Homework 15%
Midterm Exam 20%
Final Exam 20%
Project M1 20%
Project Final 20%
Class participation 5%

Recommended prerequisites

The class expects that you have prior exposure to the basic concepts in networking or operating systems. If none of your undergraduate courses covered these topics, you should thoroughly read the recommended textbook because we will breeze through the basic topics in the first few lectures. The projects will involve programming a networked system. The expectation is you have some familiarity with systems or network programming (e.g., socket programming). We will do our project in Linux environment.


Lectures will take place on Microsoft Teams group for the class. The lectures will be recorded and made avaialble in the class channel.


If you cannot submit your homework, projects or be in class for the exam due to family, personal, or medical emergencies, you must document your case with the appropriate UH officials in advance of the relevant deadlines.

Academic Honesty

You are encouraged to collaborate with others but all the work you submit should be yours. If we find any evidence of plagarism, you will get an F in the course. Please refer to the Student Handbook for details: