Welcome to the Pre-Course for the Sigma Labs’ Technical Programme.
At the top of this page, you will find links to Levels 1, 2 and 3 that should be completed sequentially.
➡️ Please read all of this page before getting started. ⬅️


The aim of this pre-course isn’t to complete all of the tasks and finish all of the challenges. The aim is to attain Mastery of all of the Learning Objectives. This website contains resources and exercises to help you do this but ultimately you will be the ultimate judge for your own understanding. We encourage you to use resources outside of the ones listed here.
The reason we give you this coursework is to make sure you have covered all of the required material before we start as we don’t cover the basics of the course.
There is a strong correlation between people who take this pre-work seriously and those that excel not only in the course but also in their careers.

Getting Support

The only way you can fail this pre-course is if you can’t do the work AND you don’t ask for help. To get help at any time you can reach out to all coaches in the Train team.
Our number one priority is to prepare you as much as possible before you join us full-time. We are 100% committed to this goal.


If you do not submit all three levels of this course before you join and haven’t reached out for help, your training may be deferred to the next cohort or the offer may be withdrawn.
We do this because if all of our trainees’ technical skills are not aligned before the course starts, then one or two trainees can take up all of our coaches’ time, leading to a poorer outcome for everyone on the course.

Learning Objectives

By the end of this pre-course, you should be able to:

Command Line

CL01: Move around your computer’s directories in the command line using cd and cd ...
CL02: Create files and folders from the command line using touch and mkdir
CL03: Use ls to list everything in a directory in the command line
CL04: Use grep to search for a file
CL05: Use cat to view the content of a file
CL06: Use ps to view the running processes
CL07: Use head /tail to view the start or end of a file
CL08: Use wc to calculate the word count of a file
CL08: Combine commands using pipes
CL09: Give different levels permissions using sudo


G01: Commit changes to a repository
G02: Create a branch and commit to it
G03: Undo mistakes by discarding changes
G04: Use Github to fork a repository
G05: Clone a repository from Github to your laptop
G06: Push your changes to Github

Python Fundamentals

PY01: Run a Python program in the terminal
PY01.1: Successfully navigate to a Python file in the terminal
PY01.2: Install Python via the terminal
PY01.3: Run a program using Python3
PY02: Write code that interacts with all of the built-in Python types
PY02.1: Write code that creates and manipulates collections of data in arrays
PY02.1.1: Create and initialise an empty list
PY02.1.2: Declare a list and fill it with data
PY02.1.3: Retrieve an element from an array using an indices
PY02.1.4: Add an element to an array using append
PY02.1.5: Remove an element from an array using pop
PY02.2: Write code that uses a Boolean type
PY02.2.1: Define the two states that a Boolean type can be in - True or False
PY02.2.2: Write a statement using logical operators and / or / not to evaluate to a Boolean
PY02.3: Numbers
PY02.3.1: Explain the difference between an Integer and a Float
PY02.3.2: Manipulate numbers stored in variables using arithmetic operators
PY02.4: Strings
PY02.4.1: Create and initialise a string in a variable
PY02.4.2 Use f-strings to create strings with dynamic values
PY02.4.3: Manipulate strings using string methods
PY02.4.4: To access characters in a string using [] notation
PY02.5: Dictionaries
PY02.5.1: Create and initialise an empty dictionary
PY02.5.2: Call an Dictionary’s method using dot notation
PY02.5.3: Store data as a property of a dictionary
PY02.5.4: Retrieve dictionary properties using dot notation
PY02.5.5: Access dictionary properties using [] notation
PY02.5.6: Create an dictionary property that is a function
PY02.6: Use type to find the type of a variable’s value
PY02.6.1: To predict the type of a variable given its value
PY03: Write code that can create and manipulate variables
PY03.1: Define what a constant variable is and when they should be used
PY04: Write code that iterates
PY04.1: Use a for loop to iterate a fixed number of times
PY04.1.1: Define the correct syntax for a for loop in Python
PY04.1.1: Use the range function to create an iterator
PY04.2: Use a while loop to iterate until a condition is met
PY04.2.1: Define the correct syntax for a while loop in Python
PY04.3: Iterate over a list using a loop
PY04.3.1: Use the elements of a list to iterate through an array
PY05: Write code that is executed in the desired order
PY05.1: Predict the output of a function given an input
PY05.2: Predict the values of variables after manipulation
PY05.2.1: Predict the value of a variable after it has been initialised
PY06: Know when to appropriately use coding tools (such as loops /if /else etc)
PY07: Write code that declares and calls functions with return statements
PY07.1: Write code that accepts a parameter, mutates it and returns it
PY07.1.1: Define what a parameter is and why it is useful
PY07.2: Write code to call a function and expect a return value
PY07.2.1: Define what a return statement is and why it is important
PY07.2.2: Write code that returns a value
PY07.2.2.1: Define when a return can or cannot be used
PY07.2.3 Predict the output of a function with explicit and implicit returns
PY07.3: Write code that calls a function and stores the returned data in a variable
PY08: Write code that interacts with variables at different levels of scope
PY08.1: Define the different types of scope (global scope and local/block scope)
PY08.2: Manipulate the value of a variable in a nested scope


D01: Read and understand an an error message
D02: Use an error message to debug a problem in Python code
D03: Use console.logs to deduct the state of their code
D03.1: Use print to print the value of variables
D03: Compare the expected output of code compared to what they’re currently getting


P01: Seeks help when has been stuck for a period of time
P01.1: Know when to ask for support with technical problems
P02: Know how long to spend working through a problem before asking for help
P03: Ask for help from a coach when stuck
P03.1: Knows how to ask for help from a coach
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
) instead.