CSCI1680

@csci1680

Private team

Joined on Aug 29, 2022

  • Introduction This guide will provide some resources for getting started and building your implementation for the Snowcast project. The first part of this document is our "Warmup", which is designed to help you get oriented with the project and get started with socket programming. The remainder of this guide contains helpful resources for building your implementation and testing your work as you continue with the project. Getting Started You may implement this project Go, C, C++, or Rust. If you are unsure, we recommend using Go, even if it is new to you, as class examples this year will use it. We have curated a list of resources for each language here. If you want to use Rust, note that only some members of the course staff can provide language support (though we are all happy to discuss conceptual questions!). For details, see the course staff list. Essential Resources We have a number of documents and resources to help you get started with thinking about sockets and network programming:
     Like  Bookmark
  • This document provides a description of what each test performs. Important notes For each test, we try to note the following requirements for each test to run: Stdin: What commands the tester will send to your program on stdin (as if the user entered a key on the keyboard). (For example, the q command.) Stdout: What output the tester expects you to print on stdout (eg. The server has N stations) What Snowcast packets the server will send to your program, and what packets the tester expects to receive In all cases, the formats for what the tester expects are defined by the Snowcast specification.
     Like  Bookmark
  • « Back to the main CSCI1680 website Overview This guide will demonstrate how to set up the tools and development environment we will use for the remaining projects in this course. We will provide our environment using a container, a technology that provides an abstraction of a separate OS without the full overhead of a Virtual Machine (VM). This container runs a Linux-based operating system, Ubuntu 22.04. In addition, we will set up some additional tools to allow you to run Wireshark, an industry-standard packet capture tool, from inside your container. Wireshark is useful as a debugging tool, and a great way to learn about networks. When we grade your work, we will use the same container environment–so if your program works in your container, it should work in our grading environment. Sound familiar? If you’ve taken CS300 or CS1660, you may have worked with a similar container setup before. Our container uses slightly different components compared to the CS300 or CS1660 container, so if you already have one from another course, you still need to set up this one. :::warning
     Like 1 Bookmark
  • « Back to the main CSCI1680 website Milestone due: September 19, 2023 at 11:59pm EDT Final submission due: September 25, 2023 at 11:59PM EDT Introduction In this project, you will implement an Internet radio station. This assignment is designed to introduce you to socket programming, get you used to thinking about network protocols, and re-familiarize you with systems programming and building concurrent applications. You will develop and submit your work using Github Classroom, which will create a repository you can use to develop your code.
     Like  Bookmark
  • « Back to the main CSCI1680 website Overview We have reached the end of the course, congratulations! Take a deep breath. You've made it. :grin: In this course, we have discussed some of the core protocols and concepts that power the Internet. Yet, there are many topics we have not had time to cover. Though some of the core protocols will be around forever, networking is a fast-moving field of CS, with new protocols, ways to build applications, and new
     Like  Bookmark
  • Due September 20, 2022 at 11:59PM EST Introduction In this assignment, you will go through the basics of socket programming, and create a basic client and server that you can use for your Snowcast project. You will also learn how to use Wireshark to inspect network packets. Getting Started You may implement Lab 1 in Go, C, C++, or Rust. If you are unsure, we recommend using Go, even if it is new to you, as class examples this year will use it. We have curated a list of resources for each language here. If you want to use Rust, note that only some members of the course staff can provide language support (though we are all happy to discuss conceptual questions!). For details, see the course staff list.
     Like  Bookmark
  • « Back to the main CSCI1680 website You may have noticed that IP doesn't have a lab like Snowcast. In place of a full lab, this document describes some of the most important to keep in mind as you start building IP, and some pointers for how to implement them. In addition, we will cover some super important debugging techniques for checking your work. Specifically, this "lab" will cover: How to send well-formed virtual IP packets encapsulated in UDP packets How to view and debug virtual IP packets in Wireshark
     Like  Bookmark
  • Due Friday, November 18 by 11:59PM EST Meta-note You are welcome (and encouraged!) to collaborate with your peers, though the answers you write down must be your own When you are done, please upload a PDF of your work to Gradescope under the assignment labeled "Homework 4". If you have issues accessing Gradescope, please contact the course staff :::info Since you're already working on TCP, this homework intended to be relatively short. Problem 1 is specifically designed to give you some practice with sending/ACKing TCP segments--we HIGHLY recommend doing this problem soon, ie. WHILE you are working on this part of your TCP project, we promise it will help! :::
     Like  Bookmark
  • « Back to the main CSCI1680 website Due Monday, October 31, 2022 at 11:59PM EST Meta-note You are welcome (and encouraged!) to collaborate with your peers, though the answers you write down must be your own When you are done, please upload a PDF of your work to Gradescope under the assignment labeled "Homework 3". If you have issues accessing Gradescope, please contact the course staff Problem 1: FTP vs NAT (20 pts)
     Like  Bookmark
  • « Back to the main CSCI1680 website Key deadlines Milestone 1: Arrange meeting on/before Monday, November 7 Milestone 2: Arrange meeting on/before Thursday, November 17 Final deadline: Tuesday, November 22 by 11:59pm EST Introduction
     Like  Bookmark
  • Due Friday, November 18 by 11:59PM EST Meta-note You are welcome (and encouraged!) to collaborate with your peers, though the answers you write down must be your own When you are done, please upload a PDF of your work to Gradescope under the assignment labeled "Homework 4". If you have issues accessing Gradescope, please contact the course staff :::info Since you're already working on TCP, this homework intended to be relatively short. Problem 1 is specifically designed to give you some practice with sending/ACKing TCP segments--we HIGHLY recommend doing this problem soon, ie. WHILE you are working on this part of your TCP project, we promise it will help! :::
     Like  Bookmark
  • « Back to the main CSCI1680 website Due Friday, October 14, 2022 at 11:59PM EST Meta-note You are welcome (and encouraged!) to collaborate with your peers, though the answers you write down must be your own When you are done, please upload a PDF of your work to Gradescope under the assignment labeled "Homework 2". If you have issues accessing Gradescope, please contact the course staff Problem 1: Ethernet and MAC Learning
     Like  Bookmark
  • « Back to the main CSCI1680 website Due Monday, October 31, 2022 at 11:59PM EST Meta-note You are welcome (and encouraged!) to collaborate with your peers, though the answers you write down must be your own When you are done, please upload a PDF of your work to Gradescope under the assignment labeled "Homework 3". If you have issues accessing Gradescope, please contact the course staff Problem 1: FTP vs NAT
     Like  Bookmark
  • « Back to the main CSCI1680 website Due Friday, October 14, 2022 at 11:59PM EST Meta-note You are welcome (and encouraged!) to collaborate with your peers, though the answers you write down must be your own When you are done, please upload a PDF of your work to Gradescope under the assignment labeled "Homework 2". If you have issues accessing Gradescope, please contact the course staff Problem 1: Ethernet and MAC Learning
     Like  Bookmark
  • « Back to the main CSCI1680 website Due October 24, 2022 at 11:59PM EST Introduction In this assignment you will be constructing a Virtual IP Network by using UDP to simulate a link layer, IP forwarding, and dynamic routing. Each node will be configured with its (virtual) links at startup and enable you to enable/disable those links at run time. From there, you will build a routing protocol to dynamically update the nodes' forwarding tables by exchanging information about available routes across your virtual network. Beyond just teaching you about IP and routing, this project is designed to teach you how to build and work at different layers of abstraction --- both in terms of networking and in software design. On the networking side, you will deal with encapsulating data inside IP packets (and, in our next project, TCP packets). On the softare side, you will build abstractions to realize the components of the virtual network and define interfaces to interact with them. In your next project, you will build on these interfaces to implement TCP --- essentially building your own networking stack! :::danger
     Like  Bookmark