README.md Files


Code projects are required to include a README.md file in the root directory of the repository. The README is the front page of the project: it should allow someone who opens the repository to quickly understand what the project does and how to build and run it.

The following requirements apply to any and all courses that use version control for programming work, including courses not primarily focused on programming, unless an assignment specifically states otherwise.

A README should be complete, accurate, and concise. More documentation is not automatically better. Do not add filler simply to make the README longer.


Required Content

Unless an assignment specifies additional requirements, every README.md must contain the following:

  1. Project Title
    Give the project a clear title that identifies the software.

  2. Description
    Briefly explain what the program does and its purpose. This should describe the completed project, not simply repeat or copy the assignment instructions.

  3. Requirements
    Identify the language, runtime, compiler, libraries, or other software needed to build or run the project. Examples include Python 3, g++, C++20, or a required external library. If there are no special external dependencies, say so when appropriate.

  4. Build and Run
    Provide the exact command or commands needed to build and run the project. For an interpreted program, this may only require the run command. For a compiled program, include both the build and execution commands.

  5. Usage
    Explain what input the program expects and what output or behavior the user should expect. Include an example of the program's output or behavior showing how the program runs in the terminal. Format the example as a code block using Markdown syntax.

Standards

  • The file must be named README.md and placed in the root directory of the repository.
  • README files must use Markdown syntax and should be organized with appropriate headings, lists, code blocks, and other formatting where useful.
  • The README must describe the project that was actually submitted. Commands, requirements, examples, and other technical information must be accurate.
  • Build and run commands must work in the environment required by the course or assignment.
  • Keep the README concise and professional. Do not add unnecessary sections or generic filler simply to make it appear more complete.
  • Individual assignments may require additional sections or information when appropriate to the project.
  • Generative AI may be used to help create or improve the README when permitted by the course. You remain responsible for verifying that everything in the README accurately describes the software you submitted.

Generic README Examples

The following examples show complete README files for two hypothetical versions of a small program. Each includes all five required elements. The examples display the Markdown source, including the headings and fenced code blocks that would be in README.md. These are NOT examples of how the README would look when rendered on GitHub or another platform that supports Markdown. These are raw Markdown files, not rendered Markdown. Make sure your README.md file is formatted correctly and renders properly on GitHub or other platforms that support Markdown.

Use these examples as a guide to structure and level of detail. Your README must describe your own program, including its actual filenames, requirements, commands, input, and output. You may have more sections and detail than these examples, but you may not have less. The README must be complete and accurate.

Python Example
# Number Summary

## Description

A Python terminal program that reads five integers and displays
their smallest value, largest value, and arithmetic mean.

## Requirements

- Python 3
- No external libraries are required; only the standard library is used.

## Build and Run

No compilation step is required. From the repository's root directory,
run:

```bash
python3 main.py
```

## Usage

Enter five integers separated by spaces when prompted. The program
displays the smallest and largest values and the mean rounded to
two decimal places, then exits.

Example terminal session:

```text
$ python3 main.py
Enter five integers separated by spaces: 8 3 12 5 7
Smallest: 3
Largest: 12
Mean: 7.00
```
C++ Example
# Number Summary

## Description

A C++ terminal program that reads five integers and displays
their smallest value, largest value, and arithmetic mean.

## Requirements

- A Linux terminal
- g++ with C++20 support
- No external libraries are required; only the standard library is used.

## Build and Run

From the repository's root directory, compile the source files
`main.cpp` and `functions.cpp` into an executable named `summary`:

```bash
g++ -std=c++20 -Wall -Wextra -pedantic main.cpp functions.cpp -o summary
```

Run the program:

```bash
./summary
```

## Usage

Enter five integers separated by spaces when prompted. The program
displays the smallest and largest values and the mean rounded to
two decimal places, then exits.

Example terminal session:

```text
$ ./summary
Enter five integers separated by spaces: 8 3 12 5 7
Smallest: 3
Largest: 12
Mean: 7.00
```

Resources and Examples

The following resources can help with Markdown formatting and README organization:

You may also look at the following in-class examples for ideas about structure and presentation:

These examples are not templates or minimum-length requirements. The appropriate amount of documentation depends on the project. A small program may need only a short, well-organized README, while a larger project may require more detail.