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

Thursday, October 8, 8pm

Project 1A

(Note: Assignment 4 builds on Assignment 1)

Thursday, October 15, 8pm

Project 1B

(Note: Assignment 5 builds on Assignment 4)

Thursday, October 22, 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 Team Repository for Project 1#

Make sure that you have read the Getting Started page 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 the CS GitLab server and navigate to your project repository (you can also find a direct link from the CS Course Repositories website). Then, click on the “Code” button and copy the URL that appears under “Clone with SSH”. It should look something like this: git@gitlab.cs.uchicago.edu:courses/aut-26/cmsc23320/cnetid1-cnetid2.git

git init
git commit --allow-empty -m "Initial commit"
git branch -M main
git remote add -f origin $REPO_URL
git remote add -f chirc-upstream https://github.com/uchicago-cs/chirc.git
git subtree add --prefix chirc chirc-upstream main --squash
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 chirc-upstream https://github.com/uchicago-cs/chirc.git

Pulling changes to the upstream code

If we make any changes to the upstream repository, and you want to merge them into your repository, you need to run the following command:

git subtree pull --prefix chirc chirc-upstream main --squash

Submission#

Before submitting, make sure you’ve added, committed, and pushed all your code to Git. You will submit your code through Gradescope, which you can access through our Canvas site.

When submitting through Gradescope, you will be asked to select a repository to submit. Make sure that you select the correct repository and branch. Please note that you can submit as many times as you want before the deadline.

Please note that you must make a single submission per pair of students (do not make two submissions, one per student). When making your submission, you will be allowed to add “team members” to your submission. Make sure you add your project partner in your submission.

In this project, Gradescope will only fetch the following files from the chirc/ directory in your repository:

  • All .c and .h files inside the src/ directory (including any subdirectories you may have added in that directory)

  • The CMakeLists.txt file

  • The DOCUMENTATION.md file

  • The RESUBMISSION.md file (when making a resubmission)

Once you submit your files, an “autograder” will run. This autograder should produce the same test results as when you run the code yourself; if it doesn’t, please let us know so we can look into it.