Unit 0: Get the Git

How can students utilize Github to manage projects and host a portfolio?

Timeline

~15 - 20 Days

This unit will ideally take the first month of school. Students will utilize these skills with every project and the skills themselves make most sense in the context of creating other things, so once students have a basic understanding, you can quickly move along.

NYS Computing Standards

  • 9-12.DL.1 Type proficiently on a keyboard

  • 9-12.DL.2 Communicate and work collaboratively with others using digital tools to support individual learning and contribute to the learning of others.

  • 9-12.DL.4 Independently select advanced digital tools and resources to create, revise, and publish complex digital artifacts or collection of artifacts.

  • 9-12.DL.5 Transfer knowledge of technology in order to use new and emerging technologies on multiple platforms.

While this unit does not directly address any computational thinking standards, it does grow the skills necessary to create an industry-standard programming portfolio.

Unit Focus Narrative

Nota Bene: This unit assumes that students are not entering the class with prior Github experience. If your students cover a Github workflow in earlier courses, this unit can be skipped or abbreviated and the time reassigned to the main portfolio projects.

ADDITIONALLY: You can certainly choose to skip this and not utilize Github this year. Repl.it and other platforms give a similar "professional feel" coding experience - we have included Github on the basis that it is a common industry tool, and a Github portfolio link is often a nice to have in job interview processes.

Classrooms utilizing repl.it can also push to Github repositories directly from repl.it.

In the ever-evolving landscape of computer science, the ability to collaborate, manage code versions, and work seamlessly with a team is indispensable. The GitHub and Git Workflow unit aims to equip high school students with essential skills that transcend mere programming proficiency. As students delve into the world of version control, repositories, branching, and collaboration on GitHub, they not only enhance their coding capabilities but also cultivate habits that align with industry-standard development practices.

Understanding GitHub and Git is more than just learning a tool – it's a gateway to professional collaboration and project management. By mastering these skills, students gain a fundamental understanding of version control, enabling them to track changes, manage conflicts, and contribute effectively to group projects. Beyond the technical aspects, GitHub fosters a culture of transparency, accountability, and collaboration, preparing students for real-world scenarios where teamwork and effective communication are paramount.

By the end of this unit, students will not only possess the technical prowess to navigate GitHub and Git but will also internalize the collaborative spirit that underlies successful software development projects. They will be able to manage their codebase efficiently, contribute meaningfully to group projects, and understand the importance of version control in a real-world context.

The GitHub and Git Workflow unit sets the stage for the subsequent modules, ensuring that students leave the classroom with not only coding expertise but also with the essential skills for seamless integration into the collaborative world of software development.

What is Github?

GitHub is a web-based platform that serves as a hub for version control and collaborative software development. It provides a centralized space for managing and tracking changes in code, making it an essential tool for both individual developers and teams working on projects.

Key Concepts:

  • Repositories: A repository, or "repo," is a container that holds a project's files and their entire revision history. It acts as a centralized hub where multiple contributors can collaborate on code.

  • Version Control: GitHub uses Git, a distributed version control system. Version control allows developers to track changes, revert to previous states, and collaborate seamlessly with others without overwriting each other's work.

  • Cloning: Cloning is the process of creating a local copy of a repository on your computer. This enables you to work on the project locally, make changes, and then synchronize those changes back to the central repository on GitHub.

  • Branching: Branches are independent lines of development within a repository. They allow developers to work on features or fixes without affecting the main codebase. Branches can later be merged to incorporate changes.

  • Commits: A commit is a snapshot of the changes made to the code at a specific point in time. Each commit comes with a message describing the changes, aiding in understanding the project's evolution.

  • Pull Requests: Pull requests (PRs) are proposed changes submitted by a developer. They allow others to review the changes, discuss modifications, and ultimately merge them into the main codebase.

  • Issues: Issues are used to track tasks, enhancements, bugs, or any discussion related to the project. They serve as a central communication point for contributors.

Workflow:

  1. Create Repository: Start by creating a repository on GitHub to house your project. This is where all project files and their version history will be stored.

  2. Clone Repository: Clone the repository to your local machine using Git. This creates a copy of the project on your computer, allowing you to work on it offline.

  3. Branching and Commits: Create branches for new features or bug fixes. Make changes to the code and commit them regularly, providing clear and concise commit messages.

  4. Push Changes: Once your changes are ready, push them to the GitHub repository. This updates the central repository with your local changes.

  5. Pull Requests: If working in a team, submit a pull request to propose changes. This opens the door for discussion, code review, and collaboration.

  6. Merge Changes: After the changes are reviewed and approved, merge the branch into the main codebase. This incorporates your changes into the project.

GitHub's user-friendly interface and integration with Git make it an invaluable tool for collaborative software development, fostering efficient communication and seamless project management.

Texts/Resources

Numerous resources are linked in each lesson - additionally, for those interested in working with AI to build projects this year, you may enjoy the Codecademy Introduction to Github Copilot.

Required Prerequisite Skills

Students entering this course should have two or more years of computer science courses; this unit assumes a basic familiarity with:

  • Web browsers

  • Typing and other basic digital fluencies

  • IDEs (any)

Unit Projects/Assements

Labs (Mini Projects/Unit Finals):

  • Codecademy Modules

  • Repository Exploration

  • Directory/File Warren

  • Partner Profile

  • End of Unit: Make a Wiki

Other:

  • [TBD]

Planned Lessons/Lesson Topics

NB: Lessons can be single period or mulit-day arcs that cover several activities. Please see individual plans for specific information.

  • 0: Start of Year - varies by teacher. This is your time to get to know your students and set the tone for your class.

  • 1: What is Github?

  • 2: Terminal Commands, Creating Files, Repo Cloning

  • 3: Introduction to Markdown

  • 4: Push to repo, making new repos

  • 5: Branches and Versioning in Git

  • 6: Final Project Ideation and Creation

Students will...

DO (Desired Skills derived from lesson Learning Objectives):

  • Clone a repository using Terminal commands

  • Navigate files using Terminal commands in a scavenger hunt activity

  • Create files using markdown

  • Complete a mini project using markdown (e.g., creating a profile or bio)

  • Push files to repositories

  • Create new repositories

  • Examine commit histories

  • Create and work with branches for versioning

  • Complete a task involving multiple branches

KNOW (Desired/Essential Knowledge):

  • Understanding of what Github is and how it is used

  • Knowledge of basic Terminal commands for navigating files and repositories

  • Understanding of markdown syntax and its use for formatting text

  • Knowledge of how to push files to repositories

  • Understanding of how commit histories track changes over time

  • Understanding of branching and versioning concepts

  • Knowledge of how to create and manage branches in Github

UNDERSTAND (Enduring Understandings):

  • Enduring understanding of the collaborative nature of Github and version control

  • Appreciation for the importance of clear file organization and documentation

  • Understanding of how version control facilitates collaboration and project management

  • Recognition of the iterative nature of software development and the value of versioning

  • Appreciation for the significance of protocol and best practices in using Github effectively

Last updated