# How to Contribute to the AI-For-Beginners Project: A Complete Guide

> Yes you can contribute to the AI-For-Beginners project. Follow our guide to fork the repo, sign the CLA, and submit pull requests for curriculum updates, translations, or quiz enhancements.

- Repository: [Microsoft/AI-For-Beginners](https://github.com/microsoft/AI-For-Beginners)
- Tags: how-to-guide
- Published: 2026-08-11

---

**Yes, anyone can contribute to the AI-For-Beginners project by following the standardized workflow defined in [`CONTRIBUTING.md`](https://github.com/microsoft/AI-For-Beginners/blob/main/CONTRIBUTING.md), which requires signing the Microsoft CLA, forking the repository, and submitting pull requests for curriculum updates, translations, or quiz application enhancements.**

The Microsoft AI-For-Beginners repository is an open-source educational initiative that teaches fundamental artificial intelligence concepts through a modular curriculum of Jupyter notebooks and interactive Vue.js quizzes. Whether you are fixing documentation typos, implementing new computer vision lessons, or expanding the project's global accessibility through translations, contributing to AI-For-Beginners follows a structured process designed to maintain educational consistency and code quality.

## Understanding the Repository Structure

The AI-For-Beginners codebase is organized into distinct functional areas. Understanding this architecture helps you locate the correct files for your specific contribution type.

### Core Curriculum (`lessons/`)

The heart of the project resides in the `lessons/` directory, which contains 24 self-contained educational modules covering symbolic AI, neural networks, computer vision, natural language processing, and AI ethics. Each lesson includes a [`README.md`](https://github.com/microsoft/AI-For-Beginners/blob/main/README.md), Jupyter notebooks (`.ipynb`), and optional `lab/` subdirectories for hands-on exercises. When contributing new lessons, you must follow the existing folder structure and pedagogical templates found in this directory.

### Interactive Quiz Application (`etc/quiz-app/`)

The `etc/quiz-app/` directory houses a Vue 2 front-end application that renders multiple-choice quizzes for each lesson. This component is built with npm and enforces code quality through ESLint. Contributors working on the quiz interface must ensure all changes pass the linting suite before submission.

### Translation Infrastructure (`translations/`)

With support for over 40 languages, the `translations/` directory contains localized versions of READMEs, quizzes, and documentation. Each language maintains its own subfolder (e.g., `translations/es/` for Spanish), allowing contributors to improve global accessibility without modifying the core English curriculum.

### Supporting Resources

The `examples/` directory contains small, runnable Python scripts that illustrate specific AI concepts, while [`environment.yml`](https://github.com/microsoft/AI-For-Beginners/blob/main/environment.yml) defines a reproducible conda environment with pinned package versions. These resources ensure that all code examples execute consistently across different local setups.

## Step-by-Step Contribution Workflow

According to the AI-For-Beginners source code, the contribution process follows these eight stages:

1. **Review the Contribution Guidelines** – Read [`CONTRIBUTING.md`](https://github.com/microsoft/AI-For-Beginners/blob/main/CONTRIBUTING.md) carefully to understand the Microsoft Contributor License Agreement (CLA) requirements, branching model, and review criteria.

2. **Fork the Repository** – Create a personal fork of `microsoft/AI-For-Beginners` through the GitHub interface.

3. **Create a Feature Branch** – Use descriptive naming conventions such as `feature/add-new-lesson-gan` or `fix/translation-typos-spanish` to isolate your changes.

4. **Implement Changes** – Modify notebook files, Python scripts, Vue components, or translation files. Keep changes atomic and focused on a single logical improvement.

5. **Configure Your Local Environment** – Execute the reproducible setup defined in the repository root:

   ```bash
   conda env create -f environment.yml
   conda activate ai4beg
   jupyter lab
   ```

   For quiz app development, navigate to the application directory:

   ```bash
   cd etc/quiz-app
   npm install
   npm run serve
   ```

6. **Validate Your Changes** – Ensure all notebooks run from start to finish without hidden errors (e.g., missing imports or broken file paths). For Vue modifications, run the linter:

   ```bash
   cd etc/quiz-app
   npm run lint
   ```

7. **Submit a Pull Request** – Push your branch to your fork and open a PR against the `main` branch. The PR template automatically requests your CLA confirmation and a brief change description.

8. **Complete Code Review** – Maintainers will evaluate code style, documentation completeness, and alignment with educational goals. Once approved, your contribution merges into the live curriculum.

## Specialized Contribution Paths

### Adding New Curriculum Lessons

To expand the 24-lesson curriculum, create a new folder under `lessons/` containing a [`README.md`](https://github.com/microsoft/AI-For-Beginners/blob/main/README.md), one or more `.ipynb` notebooks, and an optional `lab/` subfolder for exercises. Follow the existing lesson templates for consistent formatting and pedagogical flow.

### Contributing Translations

Improve the project's multilingual reach by editing files within the appropriate `translations/` subfolder (e.g., `translations/fr/` for French). **Important:** Do not translate code blocks; only translate surrounding prose and quiz text to preserve functionality across languages.

### Enhancing the Quiz Application

Modify Vue components within `etc/quiz-app/src/` to improve user interaction or fix UI bugs. When adding new quiz questions, update the JSON data structures in the component files. For example, to add a question in [`etc/quiz-app/src/components/Quiz.vue`](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/components/Quiz.vue):

```javascript
questions.push({
  id: 42,
  lesson: '4-ComputerVision',
  prompt: 'Which layer reduces spatial dimensions?',
  options: ['Convolution', 'Pooling', 'Fully-Connected', 'Dropout'],
  answer: 1
});

```

Always run `npm run lint` after Vue modifications to ensure style compliance.

## Testing and Quality Assurance

Before submitting your pull request, verify that your local environment matches the production specifications defined in [`environment.yml`](https://github.com/microsoft/AI-For-Beginners/blob/main/environment.yml). Test notebooks sequentially to catch execution errors, and confirm that the quiz application compiles without ESLint warnings. This validation step prevents broken code from entering the main branch and ensures a smooth learning experience for global users.

## Summary

- **AI-For-Beginners** welcomes contributions to its curriculum, translations, and interactive quiz application through a standardized GitHub workflow.
- The repository is organized into `lessons/` (curriculum), `etc/quiz-app/` (Vue front-end), and `translations/` (localization) directories.
- All contributors must sign the Microsoft CLA and follow the guidelines in [`CONTRIBUTING.md`](https://github.com/microsoft/AI-For-Beginners/blob/main/CONTRIBUTING.md) before submitting pull requests.
- Local development requires a conda environment created from [`environment.yml`](https://github.com/microsoft/AI-For-Beginners/blob/main/environment.yml) for Python content and npm for Vue app modifications.
- Changes must pass quality checks including ESLint for JavaScript and full execution validation for Jupyter notebooks.

## Frequently Asked Questions

### Do I need to sign a CLA to contribute to AI-For-Beginners?

Yes, all contributors must sign the Microsoft Contributor License Agreement (CLA) before their pull requests can be merged. This requirement is enforced automatically when you open a PR, and the process is initiated through the GitHub interface. The CLA ensures that Microsoft can legally distribute your contributions under the project's open-source license.

### What types of contributions are most needed?

The project actively seeks corrections to existing lesson content, improvements to the 40+ language translations in `translations/`, new runnable examples in `examples/`, and enhancements to the Vue.js quiz application. Educational content contributions—such as clarifying neural network explanations or adding visual aids to notebooks—are particularly valuable for maintaining the repository's teaching effectiveness.

### How do I test Jupyter notebooks before submitting?

After activating the conda environment (`conda activate ai4beg`), run `jupyter lab` and execute each cell in your modified notebooks sequentially. Verify that all imports resolve correctly, that data file paths point to existing resources, and that outputs render as expected. The environment defined in [`environment.yml`](https://github.com/microsoft/AI-For-Beginners/blob/main/environment.yml) pins exact package versions to ensure your local testing matches the production runtime.

### Can beginners contribute to the AI-For-Beginners project?

Absolutely. While advanced AI knowledge helps for curriculum contributions, beginners can contribute significantly by fixing documentation typos, improving translations, or enhancing the quiz application's user interface. The [`CONTRIBUTING.md`](https://github.com/microsoft/AI-For-Beginners/blob/main/CONTRIBUTING.md) file provides detailed guidance suitable for first-time open-source contributors, and the modular structure allows you to work on isolated components without understanding the entire codebase.