Welcome to the GitHub Copilot Workshop Projects repository! This repository contains seven projects designed to help you gain hands-on experience with GitHub Copilot's features, from basic coding assistance to advanced workflows.
Each project is intended to showcase different uses of GitHub Copilot, and can be completed individually or as part of a guided learning experience.
Individual project build prequisities are listed below the project.
- Install Visual Studio Code or use Codespaces
- Install Copilot and sigin in with GitHub credentials
- Install Python 3.x
- Brew is recommended for Macintosh users
- Install VS Code Python language support extension pack
- Install JDK 21+
- SDKMan is recommended for Macintosh users
- Install Maven or Gradle using SDKman
sdk install maven
orsdk install gradle
- Install VS Code Java language support extension pack
- Project 1: Hello World
- Project 2: Tic Tac Toe Analyzer (including conversion to Browser-based)
- Project 3: Vulnerable Code Analysis and Documentation - mini project
- Project 4: Contact Book with JSON Persistence
- Project 5: Run-time Analysis Tool
- Project 6: Translation and Modernization Project
- Project 7: ADO to GitHub Actions Translation
Description:
This is a simple "Hello World!" project that introduces you to the basics of using GitHub Copilot. With this project, you will test your setup and practice using Copilot to complete simple code and get comfortable with how it suggests functions and snippets.
Description:
In this project, you will analyze a java based Tic Tac Toe game. You’ll use Copilot to analyze the code, document what the code does, look for vulnerabilities and then use GH Copilot to convert the project to run in a browser.
Description:
This project is focused on analyzing vulnerable code snippets using GitHub Copilot. You will analyze known security vulnerabilities and document the code. Copilot will assist you in identifying potential issues and generating proper documentation for the code.
Learning Objectives:
- Learn how Copilot can assist in code review and vulnerability analysis/detection.
- Document insecure code and recommend fixes using Copilot’s suggestions.
Description:
This project involves building a simple contact book application where contact details are stored using a JSON persistence layer. The contact book allows adding, viewing, and removing contacts, and all data is saved in a JSON file for persistence across sessions.
Learning Objectives:
- Use Copilot to build a contact management system.
- Understand how to read and write data using JSON for persistent storage.
Description:
In this project, you will build a run-time analysis tool that measures the performance of functions. The tool will track execution time for specific algorithms. You’ll use GitHub Copilot to build the tool.
Learning Objectives:
- Building tools with GitHub Copilot.
Description:
This project focuses on the steps involved, at a high level, of translating legacy code (COBOL) to a modern language. GitHub Copilot will assist in all phases of this project.
Learning Objectives:
- Use GitHub Copilot for code modernization
Description:
In this project, you will interpret and document what an Azure DevOps (ADO) configuration file. Then translate it into a GitHub Actions YAML file. You’ll use GitHub Copilot to confirm the translated GitHub Actions YAML file performs the same tasks.
Learning Objectives:
- Analyze an ADO pipeline configuration file.
- Translate the configuration file.
- Validate that the translated GitHub Actions YAML performs the same tasks as the original ADO file.
Each project folder contains:
- The source code for the project.
- A detailed README for each project outlining the steps, expected outputs, and learning goals.
- Sample input files or configurations where applicable.
- Ability to execute either Python, JavaScript (using node) or Java programs.
- Access to GitHub Copilot business license.
Feel free to contribute improvements to these projects by submitting a pull request or opening an issue with suggestions.
Happy Coding with GitHub Copilot!