Learning objectives¶
This page defines the learning objectives for individual sections. These are skills that the reader should be able to demonstrate after reading through the relevant section, and completing any exercises in that section.
Version control concepts¶
After completing this section, you should be able to identify how to apply version control concepts to your existing work. This includes being able to:
-
Identify projects and tasks for which version control would be suitable;
-
Categorise recent work activities into one or more commits;
-
Write commit messages that describe what changes you made and why you made them; and
-
Identify pieces of work that could be carried out in separate branches of a repository.
Effective use of git¶
After completing this section, you should be able to:
-
Create a local repository;
-
Create commits in your local repository;
-
Search your commit history to identify commits that made a specific change;
-
Create a remote repository;
-
Push commits from your local repository to a remote repository;
-
Pull commits from a remote repository to your local repository;
-
Use tags to identify important milestones;
-
Work in a separate branch and then merge your changes into your main branch; and
-
Resolve merge conflicts.
Collaborating¶
After completing this section, you should be able to:
-
Share a repository with one or more collaborators;
-
Create a pull request;
-
Use a pull request to review a collaborator's work;
-
Use a pull request to merge a collaborator's work into your main branch; and
-
Conduct peer code review in a respectful manner.
Project structure¶
After completing this section, you should be able to:
-
Understand how to structure a new project;
-
Understand how to separate "what to do" from "how to do it"; and
-
Structure your code to enable new experiments and analyses.
Writing code¶
After completing this section, you should be able to:
-
Divide your code into functions and modules;
-
Ensure that your code is a clear expression of your ideas;
-
Structure your code into reusable packages; and
-
Take advantage of code formatters and code linters.