Project 1: chirc

In this project, you will implement a simple Internet Relay Chat (IRC) server called chirc. This project has three goals:

  1. To learn how to program with sockets, as well as some basic concurrent programming (including refreshing some concepts covered in CMSC 14300/14400 or 15400)

  2. To implement a system that is (partially) compliant with an established network protocol specification.

  3. To allow you to become comfortable with high-level networking concepts before we move on to the lower-level concepts in this course.

Please refer to the following documents to complete this project:

Submission Timeline

This project has the following submissions:

Submission

Requirements

Due Date

Project Warmup

Assignment 1 of chirc

Wednesday, March 27, 8pm

Project 1A

(Note: Assignment 4 builds on Assignment 1)

Wednesday, April 3, 8pm

Project 1B

(Note: Assignment 5 builds on Assignment 4)

Wednesday, April 10, 8pm

Resubmission (Optional)

Address feedback received in Project 1

One week after Project 1B is graded

Please see Project 1 rubric for more details on how each submission will be graded.

Initializing your Project 1 Repository

Make sure that you have read the Getting Started page as well as the Project Registration instructions before following the instructions below.

One-time setup instructions

Only one team member needs to run these commands. Create an empty directory and, inside that directory run the following commands. In the commands below, $REPO_URL refers to the SSH URL of your repository. To get this URL, log into GitHub and navigate to your project repository. Then, under “Quick setup — if you’ve done this kind of thing before”, make sure the “SSH” button is selected, and copy the URL that appears next to it. It should look something like this: git@github.com:uchicago-cmsc23320-spr-24/chirc-jdoe-jrandom.git

git init
git remote add origin $REPO_URL
git remote add upstream https://github.com/uchicago-cs/chirc.git
git pull upstream main
git branch -M main
git push -u origin main

Cloning instructions

Once the repository has been set up, you can clone the repository in other locations as follows:

git clone $REPO_URL
git remote add upstream https://github.com/uchicago-cs/chirc.git