This repository contains a series of exercises intended to introduce early learners to simple software engineering. The exercises will build into a functional enigma machine.
- Command line access
- Python and git installed
- pytest module available
- No internet required (except to download the repository)
- Previous programming experience
- Some basic python
The main branch contains the initial state that learners should
begin with. With each exercise, the student is asked to implement some
code based on a simple specification. The instructions will be in an
exerciseXX directory. The student should save and commit their code in
the src directory. There will be some verification involved
during each lesson.
When progressing to the next lesson, the learner should merge from the
relevant exerciseXX branch, and follow the exercise
instructions. These merges will not modify the src directory.
-
Open a terminal. On windows this will be "Command Prompt" or "Powershell". On Linux and macOS this will be a program called "Terminal".
-
Clone this repository with git by typing the following:
git clone https://github.com/kilroyd/enigma- Change to the new directory created by git
cd enigma-
Open
intro/index.htmlin a browser for an introductory presentation about what we will be doing. -
Open
intro/README.mdfor a guide to get familiar with the tools we will be using. -
Each exercise in an
exerciseXXdirectory contains:-
a presentation in
index.htmlintroducing the background and outline of the exercise. This can be used when a group of students are doing the exercise together. -
a
README.mdgoing into more detail. It should be possible for students working on their own to just refer to these files. -
a
main.pyfile demonstrating how the code the exercise is intended to produce will be called. This can be used as a basic test by runningexerciseXX/main.pyfrom a terminal. -
a
template.pyfile containing a skeleton function or class that is intended to be copied tosrc/enigma.py. It contains some documentation about what needs to be implemented. It effectively defines the interface that the student must adhere to in their implementation.
-