<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Project Index on CS 4700</title><link>/docs/projects/</link><description>Recent content in Project Index on CS 4700</description><generator>Hugo</generator><language>en-US</language><copyright>Copyright (c) 2020-2024 Thulite</copyright><lastBuildDate>Wed, 25 Aug 2021 15:24:08 -0400</lastBuildDate><atom:link href="/docs/projects/index.xml" rel="self" type="application/rss+xml"/><item><title>Project 1: Socket Basics</title><link>/docs/projects/project-1-socket-basics/</link><pubDate>Wed, 25 Aug 2021 15:24:08 -0400</pubDate><guid>/docs/projects/project-1-socket-basics/</guid><description>&lt;div class="alert alert-info" role="alert"&gt;
 &lt;b&gt;This project is due at 11:59pm on January 20, 2026.&lt;/b&gt;
&lt;/div&gt;
&lt;h2 id="description"&gt;Description&lt;/h2&gt;
&lt;p&gt;This assignment is intended to familiarize you with writing simple network code. You will implement a client program that plays a variant of the recently-popular game &lt;a href="https://www.powerlanguage.co.uk/wordle/"&gt;Wordle&lt;/a&gt;. Your program will make guesses for the secret word, and the server will give you information about how close your guess is. Once your client correctly guesses the word, the server will return a &lt;em&gt;secret flag&lt;/em&gt; that is unique for each student. If you receive the &lt;em&gt;secret flag&lt;/em&gt;, then you know that your program has run successfully.&lt;/p&gt;</description></item><item><title>Project 2: FTP Client</title><link>/docs/projects/project-2-ftp-client/</link><pubDate>Wed, 25 Aug 2021 15:24:08 -0400</pubDate><guid>/docs/projects/project-2-ftp-client/</guid><description>&lt;div class="alert alert-info" role="alert"&gt;
 &lt;b&gt;This project is due at 11:59pm on February 3, 2026.&lt;/b&gt;
&lt;/div&gt;
&lt;h2 id="description"&gt;Description&lt;/h2&gt;
&lt;p&gt;The goal of this project is to deepen your ability to write network code. At this point you can open a socket and send and receive simple messages. In this project, you will implement a client for a more complex protocol, that has more features, and uses two sockets rather than one.&lt;/p&gt;</description></item><item><title>Project 3: BGP Router</title><link>/docs/projects/project-3-bgp-router/</link><pubDate>Wed, 25 Aug 2021 15:24:08 -0400</pubDate><guid>/docs/projects/project-3-bgp-router/</guid><description>&lt;div class="alert alert-info" role="alert"&gt;
 &lt;b&gt;The final project is due at 11:59pm on February 24, 2026.&lt;/b&gt;
&lt;/div&gt;
&lt;h2 id="description"&gt;Description&lt;/h2&gt;
&lt;p&gt;In this project, you will implement a simple BGP router. There are several educational goals of this project:&lt;/p&gt;</description></item><item><title>Project 4: Reliable Transport Protocol</title><link>/docs/projects/project-4-reliable-transport-protocol/</link><pubDate>Wed, 25 Aug 2021 15:24:08 -0400</pubDate><guid>/docs/projects/project-4-reliable-transport-protocol/</guid><description>&lt;div class="alert alert-info" role="alert"&gt;
 &lt;b&gt;This project is due at 11:59pm on March 17, 2026.&lt;/b&gt;
&lt;/div&gt;
&lt;h2 id="description"&gt;Description&lt;/h2&gt;
&lt;p&gt;You will design a simple transport protocol that provides reliable datagram service. Your protocol will be responsible for ensuring data is delivered in order, without duplicates, missing data, or errors. Since the local area networks at Northeastern are far too reliable to be interesting, we will provide you with access to a virtual environment that will emulate an unreliable network.&lt;/p&gt;</description></item><item><title>Project 5: Web Crawler</title><link>/docs/projects/project-5-web-crawler/</link><pubDate>Wed, 25 Aug 2021 15:24:08 -0400</pubDate><guid>/docs/projects/project-5-web-crawler/</guid><description>&lt;div class="alert alert-info" role="alert"&gt;
 &lt;b&gt;This project is due at 11:59pm on April 7, 2026.&lt;/b&gt;
&lt;/div&gt;
&lt;h2 id="description"&gt;Description&lt;/h2&gt;
&lt;p&gt;This assignment is intended to familiarize you with the HTTP protocol. HTTP is (arguably) the most important application level protocol on the Internet today: the Web runs on HTTP, and increasingly other applications use HTTP as well (including Bittorrent, streaming video, Facebook and Twitter&amp;rsquo;s social APIs, etc.).&lt;/p&gt;</description></item><item><title>Project 6: DNS Server</title><link>/docs/projects/project-6-dns-server/</link><pubDate>Wed, 25 Aug 2021 15:24:08 -0400</pubDate><guid>/docs/projects/project-6-dns-server/</guid><description>&lt;div class="alert alert-info" role="alert"&gt;
 &lt;b&gt;This project is due at 11:59pm on April 21, 2026. &lt;/b&gt;
&lt;/div&gt;
&lt;h2 id="description"&gt;Description&lt;/h2&gt;
&lt;p&gt;You will design and implement an recursive DNS server. Your server will be (a) the authoritative server for a specified domain, and be (b) responsible for serving as a recursive resolver for a number of local clients. In doing part (b), your server will be required to interact with other DNS servers, maintain an (accurate) DNS cache, and avoid succumbing to any security vulnerabilities. You will use the real DNS protocol, though you should &lt;em&gt;not&lt;/em&gt; communicate directly with any real DNS servers.&lt;/p&gt;</description></item></channel></rss>