|
|
| Line 1: |
Line 1: |
| CS 473/573 Computer Networks is required in the academic concentration of the CS BS and can be taken as an elective for others.
| | =Sets of Problems= |
| | * [https://indstate.instructure.com/courses/12565/quizzes/270466 ISU CTF 1 2024] - open this link in a private or incognito window. |
|
| |
|
| This page contains the syllabus for CS 473/573 for the most recent offering (fall 2025). Previous terms - [https://cs.indstate.edu/info/syllabi/cs473-f2022-cox.pdf fall 2022 Cox], [https://cs.indstate.edu/info/syllabi/cs473-f2021-kinne.pdf fall 2021 Kinne], [https://cs.indstate.edu/info/syllabi/cs473-s2019-baker.pdf fall 2019 Baker].
| | =Tools and Help= |
| | * [https://gchq.github.io/CyberChef/ CyberChef] |
| | * [https://ubuntu.com/tutorials/command-line-for-beginners#1-overview Linux Terminal] |
| | * Webpage - right-click, Inspect, check all of the different tabs in this window, when you are on the Network tab reload the page |
| | * Python - download from https://www.python.org/ or run online |
| | * telnet, ssh, ftp, sftp, nc, ping |
|
| |
|
| Note that all sections of the course will use the same homeworks and lab assignments. Quizzes and exams may be slightly different for the online versus face to face students.
| | =Types of Problems= |
| | | * Look at the source code for a webpage for a hidden message. |
| =General Information=
| | * Look at a hex dump of a file (docx, pdf, jpeg, etc.) to look for a hidden message. |
| '''Course website''' - https://cs.indstate.edu/web/index.php/CS_473
| | * Download and run a program to get an answer. |
| | | * Connect to a server to get an answer. |
| '''Important''' - If you are a graduate student who took CS 473 as an undergraduate, or had transfer credit for CS 473, then you should NOT take CS 573. The system would let you register, but the course would not count towards your MS degree.
| | * Whois lookup. |
| | | * Network scan (ping or similar). |
| '''Your Instructor'''
| | * Information about the system they are running on (whether it's hidden or not). |
| | | * Anything that can be done with the [https://gchq.github.io/CyberChef/ CyberChef] |
| [https://kinnejeff.com Jeff Kinne], [http://mailto:jkinne@indstate.edu jkinne@indstate.edu] <br>
| |
| ''Office:'' Myers Technology Center (TC) 301D and in Microsoft Teams, phone 812-237-3394 <br>
| |
| ''Instructor Office Hours:'' normally in my office - MW 10:30-1pm, R 9-11am, 12:30-3pm, F 9am-3pm; normally available for online meetings - MTWRF 8am-4pm, SMTWR 8-10pm if I am not in class or a meeting<br>
| |
| ''Meeting:'' https://cs.indstate.edu/jkinne-meeting
| |
| | |
| '''Graduate assistant help''' - TBD. See https://cs.indstate.edu/web/index.php/ISU_CS_People#CS_Departmental_Graduate_Assistants
| |
| | |
| '''Lecture, Exam'''
| |
| | |
| ''Lecture:'' TR 11am-12:15pm in Myers Technology Center (TC) 308, over Zoom (link in Canvas, see below), and recorded<br>
| |
| ''Exams:'' every three weeks on Thursdays (Sep 4, Sep 25, Oct 16, Nov 6) during lecture time (11am-12:15pm). ''(For those with another class at that time, we will arrange the time after the term starts.)''<br>
| |
| ''Final exam:'' Thursday, Dec 11, 10-11:50am. ''(For those with another class at that time, your exam time will be decided after the term starts.)''<br>
| |
| | |
| '''Prerequisites''' - For CS 473 the prereq is: A grade of C or better in CS 203 or CS 303, and in CS 351. For CS 573 the prereq is: C or better in CS 456 or CS 556 or A- or better in CS 500.
| |
| | |
| '''CRN numbers''' - 52629 (CS 473-001), 51234 (CS 473-301), 53103 (CS 573-003), 51235 (CS 573-301).
| |
| | |
| '''Required text'''
| |
| We will use selections from the following free online sources. We may add to this list as needed.
| |
| * [http://beej.us/guide/bgnet/ Beej's Guide to Network Programming], [https://beej.us/guide/bgnet0/ Beej's Guide to Networking Concepts]
| |
| * [https://en.wikipedia.org/wiki/Internet_protocol_suite Internet Protocol], [https://en.wikipedia.org/wiki/Transmission_Control_Protocol TCP Protocol], [https://en.wikipedia.org/wiki/IPv4 IPv4], [https://en.wikipedia.org/wiki/Ethernet_frame#Ethernet_II Ethernet II], [https://en.wikipedia.org/wiki/HTTP HTTP on Wikipedia], [https://developer.mozilla.org/en-US/docs/Web/HTTP HTTP on MDN], [https://datatracker.ietf.org/doc/html/rfc2616 HTTP 1.1 definition]
| |
| * [https://docs.freebsd.org/44doc/psd/20.ipctut/paper.pdf An Introductory 4.4BSD Interprocess Communication Tutorial]
| |
| * Unix Network Programming, Volume 1: The Sockets Networking API 3rd Edition by W. Richard Stevens (Author), Bill Fenner (Author), Andrew M. Rudoff (Author)
| |
| * The Unix Manual Pages (man)
| |
| | |
| '''Software/Programs'''
| |
| * [https://www.wireshark.org/download.html WireShark]
| |
| * Programming - probably some in Python and some in C
| |
| * Telnet: [https://blog.mrkeyshop.com/en/guides/how-to-enable-and-use-telnet-on-windows-11-and-10/ install/enable on Windows]. For Mac OS, first install [https://brew.sh/ homebrew] and then [https://formulae.brew.sh/formula/telnet#default brew install telnet].
| |
| ** If using the builtin Windows 10/11 telnet client, open a command prompt, then type telnet and Enter to start telnet. To open a connection, type something like: <code>open cs.indstate.edu 47300</code> and enter. The display is a little quirky - when you type it will overwrite characters already on the screen.
| |
| * Putty: can also be used as a telnet client on Windows. [https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html Download]. To use as a telnet client, when you run Putty, set the Hostname (e.g., cs.indstate.edu) and Port as desired (e.g., 47300), select Other for Connection Type, and click to change "Telnet" to "Raw", then click Open. | |
| * Netcat: there are various versions. One cross-platform version is: https://nmap.org/ncat/. | |
| | |
| '''Class notes''' - Notes during class will mostly be kept in the documents in '''[https://sycamoresindstate-my.sharepoint.com/:f:/g/personal/jeffrey_kinne_indstate_edu/EiJJbQVND3FMr25IAoHydnUBADrC7z-tZH_OTaD1h_A8Ow this OneDrive folder]'''. Note that you will need to authenticate with your ISU account to view the folder. Some files from lecture may be kept at https://cs.indstate.edu/~cs473/ which can also be seen when you are logged into the terminal by doing: <code>cd ~cs473/public_html/</code>.
| |
| | |
| =Announcements/Assignments/Quizzes/Exams=
| |
| '''HW'''
| |
| These are posted in Canvas or on the CS server. Some HWs are due the next lecture day, some are due a week after assigned. All times are Eastern US time.
| |
| | |
| '''Rules'''
| |
| Rules for HWs, quizzes, exams are in the course policies below.
| |
| | |
| '''Announcements'''
| |
| Announcements will normally be posted to the course in Canvas (and will probably be emailed to your ISU email address if you have the default settings for notifications in Canvas).
| |
| | |
| =Course Description and Content=
| |
| | |
| '''Course Description'''
| |
| | |
| The official description of this course from the catalog is
| |
| | |
| "The course is an introduction to networking and includes detailed study of Internet protocols and socket programming. Topics include a study of IP, UDP, and TCP protocols, as well as application layer protocols such as HTTP and SMTP. Students learn to program both a client and a server."
| |
| | |
| '''Course Outline'''
| |
| | |
| This course outline is subject to change.
| |
| | |
| Unit 1 Network protocols, the Internet
| |
| * IPv4, IPv6, UDP, TCP | |
| * Routing
| |
| * Client/server, ARP, DNS, HTTP, SSL
| |
| * Security, encryption
| |
| * How all of that works, and tools for looking at it
| |
| | |
| Unit 2 Network Programming
| |
| * Interprocess communication (BSD IPC paper)
| |
| * Processes, pipes, signals, socketpairs, asynch I/O
| |
| * Threads, shared memory, etc.
| |
| | |
| Unit 3 Selected topics
| |
| | |
| | |
| '''Learning Outcomes'''
| |
| * Able to use Linux systems and terminal - managing files, running code, using utility programs. | |
| * Understanding of data flow on the internet.
| |
| ** Can give precise details (diagrams, trace through examples, explain tradeoffs) of how data is transmitted between programs on a single machine and on different machines via the Internet.
| |
| * Understanding the fundamentals of network security and encryption.
| |
| * Ability to write client and server programs.
| |
| ** Completed multiple different client/server and related programs independently, can explain the overall design of the programs and the details of how they are implemented.
| |
| | |
| =Assignments=
| |
| | |
| '''Start Assignments and Exam Studying Early''' -
| |
| I suggest attempting an assignment the day it is given, or the day after, so that if you have a problem you can ask early. If you continue to have problems in trying to complete the assignment, you will have time to ask again. Many of the assignments require thought and problem solving, which takes "time on the calendar" not just "time on the clock". By that I mean that spending an hour on 3 consecutive days is likely to be more productive than trying to spend 3 hours at once on the assignment.
| |
| | |
| '''Expected Amount of Work''' -
| |
| If you take this class seriously and get what you should out of it, some weeks you will likely be spending around '''6-10 hours or more''' on the class. The students who get A’s in their CS courses and have an easier time finding jobs do spend this much time on this course. Not everyone would need to spend this much time and not all weeks will be the same, but you should plan on putting in whatever time it takes. Note that the federal government definition of 1 credit hour as requiring 2 hours worth of time on the course for each credit hour of lecture, so you should think of this as the default for all of your courses.
| |
| | |
| '''Note - your classes in your major should ideally be more important than your part-time job.'''
| |
| | |
| '''Each week''', you will normally have at least one assignment, often more than one (in particular at the beginning when the assignments are pretty small).
| |
| | |
| =Grade Meanings=
| |
| The letter grades are intended to have the following rough meaning. For letter grades I will use the usual breakdown as a starting point (90 is A-, 80 is B-, etc.), but will raise letter grades above this if I think it is needed (e.g., if assignments, exams, and quizzes are really tough).
| |
| * A+/A: You understand everything and probably could teach the course yourself. | |
| * B+/A-: You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.
| |
| * C/C+/B-/B: Some things you understand very well and others you don't (more towards the former for a B and more towards the latter for a C).
| |
| * D-/D+/C-: You did put some effort in, and understand many things at a high level, but you haven't mastered the details well enough to be able to use this knowledge in the future.
| |
| * F: Normally, students that get an F simply stopped doing the required work at some point, or cheated on something in the course.
| |
| | |
| {{:Jeff Kinne Course Policies}}
| |
| | |
| {{:Policies}}
| |
| | |
| {{:ISU Syllabus Items}}
| |