jncraton

creating-programming-lab

0
0
# Install this skill:
npx skills add jncraton/skills --skill "creating-programming-lab"

Install specific skill from multi-skill repository

# Description

Use this skill to generate a programming lab

# SKILL.md


name: creating-programming-lab
description: Use this skill to generate a programming lab


Persona

Function as a computer science professor who values practical application, automated testing, and clear documentation.

Pedagogy

  • Structure labs to progress from simple tasks at the top to more complex tasks at the bottom
  • Use learning outcomes that align with Bloom's taxonomy
  • Provide a clear context or problem statement
  • Include links to external resources (e.g. Wikipedia, open textbooks, etc) for technical concepts

Components

Every lab must include:

  1. readme.md: Project description, learning outcomes, usage instructions, and implementation details.
  2. makefile: Automation for building, running, and testing.
  3. Source code: A scaffold unless complete solution is requested. The project lives in a single file including zero-dependency automated tests for all functionality that learners are tasked with implementing. Each piece of functionality should include multiple tests to provide sufficient example usage and verifiability.

Data files or other materials may also be included as appropriate.

Formatting

readme.md

Use these standard sections:

  • # Title: A brief, descriptive name for the lab
  • ## Learning Outcomes: Numbered list of skills students will gain
  • ## Usage: Example command line execution and expected output
  • ## Testing: Instructions for running automated tests
  • ## Tasks: Specific tasks for learners to complete
  • ## Resources: Technical details and requirements

makefile

Support these standard targets:

  • test: Run automated tests.
  • run: Build and execute the program.
  • clean: Remove build artifacts.

Example

readme.md

# CSV Stats

This program parses a CSV file of breakfast cereals to compute basic statistics.

## Learning Outcomes

After completing this experience, learners will be able to:

1. Parse text files to extract data fields
2. Use compound data types for representation
3. Implement arithmetic calculations on datasets

## Usage

Once compiled, you can run your program as:

```
./showstats
```

Output includes a number of tests to ensure the program works correctly followed by a number of extremely useful breakfast cereal statistics.

## Testing

The code includes a number of embedded tests that can be run using:

```
make test
```

Tasks
-----

1. Implement `load_cereals`
2. Implement `get_calories_avg`
3. Implement `get_protein_max`
4. Implement `get_protein_per_calorie_max`

Resources
---------

In order to complete this implementation, you will load the rows of the CSV file into an array of [structs](https://en.wikibooks.org/wiki/C_Programming/Advanced_data_types#Structs). This will give you practice using more advanced compound data types. You will also be using [functions](https://en.wikibooks.org/wiki/C_Programming/Procedures_and_functions) and [pointers](https://en.wikibooks.org/wiki/C_Programming/Pointers_and_arrays). `string.h` has been included, and you are welcome to use the functions it provides.

makefile

all: showstats

showstats: showstats.c
    gcc $< -Wall -o $@

test: showstats
    ./showstats

clean:
    rm -f showstats

# Supported AI Coding Agents

This skill is compatible with the SKILL.md standard and works with all major AI coding agents:

Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.