1 Syllabus


1.1 General syllabus

Note: click on this, and actually read it; it’s part of the syllabus:
../../ClassGeneral/Syllabus.html

1.2 Course description

This course focuses on the Internet and the general principles of computer networking. It covers the TCP/IP model from the application layer to the link layer in a top-down approach. It also exposes students to multimedia networking, network security, wireless and mobile networks. This course includes performance modeling and analysis, development and implementation of complex communication protocols. Prerequisite: A “C” or better grade in Comp Sci 3800.

1.2.1 Prerequisite

A good attitude, work ethic, and an interest in computing!
Grade of “C” or better in CompSci 3800 - Operating systems.

1.3 Assignments

In general, in this class, you are welcome to propose some variant of these assignments that benefits you.
For example, setting up a DNS server for something you actually need to do,
in a different environment that the class uses, setting up your own real web server, DHCP server, etc.
It will often, but not always overlap enough.

1.3.0.1 Real-world assignments

These are intended to cover the IT side of actually setting up networks themselves,
and applications, for both personal, and small corporate settings.
By the end of the semester, you should know how to set up:
a website, DNS server, firewall, intrusion prevention and detection system,
wifi access point, local router, DHCP server, and more, enough for a small company’s network.

1.3.0.2 Socket programming assignments in Python

These are intended to help you learn to actually program network applications.

1.4 Textbook

If you can’t find a paywalled research paper or book:
https://en.wikipedia.org/wiki/Sci-Hub

This is a nice search engine to find non-open textbooks ;)
https://en.wikipedia.org/wiki/Library_Genesis

I normally try very hard to not require a “paid” textbook.
This one is the best in the field, and is a great book
The 6th edition is actually better, in my opinion, and the 7th edition is actually worse…).
It is optional, though you can just duck it:
https://duckduckgo.com/?t=ffab&q=filetype%3Apdf+Kurose+Computer+Networking+A+Top+Down+Approach+6th

Open/free textbooks:
https://www.computer-networking.info/ (http://cnp3book.info.ucl.ac.be/)
free, 2 different versions; 1st ed explicitly mimics the above book

http://intronetworks.cs.luc.edu/

https://www.homenethowto.com/

https://www.wikipendium.no/ID203012_Computer_Networks_and_network_programming

http://etutorials.org/Networking/

1.5 Which programming language for this class?

Multiple!
Python, Python-Scapy, a hint of bash, SQL, Haskell