Skip to content

lambda-feedback/IsSimilar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IsSimilar

This function checks whether a student's numeric response is within an acceptable tolerance of the correct answer, using absolute (atol) and relative (rtol) tolerance parameters. The comparison follows the formula: |response - answer| ≤ atol + rtol × |answer|. By default both tolerances are 0, requiring an exact match (within floating-point precision).

For more information, look at the docs in app/docs/.

Deployment

Create Release Request

Getting Started

  1. Clone this repository

  2. Change the name of the evaluation function in config.json

  3. The name must be unique. To view existing grading functions, go to:

  4. Merge commits into the default branch

    • This will trigger the staging-deploy.yml workflow, which will build the docker image, push it to a shared ECR repository, then call the backend grading-function/ensure route to build the necessary infrastructure to make the function available from the client app.
  5. You are now ready to start developing your function:

    • Edit the app/evaluation.py file, which ultimately gets called when the function is given the eval command
    • Edit the app/evaluation_tests.py file to add tests which get run:
      • On every pull request, via the test-lint.yml workflow, before the image is built and deployed
      • Whenever the healthcheck command is supplied to the deployed function
    • Edit the app/docs/ files to reflect your changes. These files are baked into the function's image, and are made available using the docs command. This feature is used to display this function's documentation on our Documentation website once it's been hooked up!

How it works

The function is built on top of a custom base layer, BaseEvaluationFunctionLayer, which tools, tests and schema checking relevant to all evaluation functions.

Docker & Amazon Web Services (AWS)

The grading scripts are hosted AWS Lambda, using containers to run a docker image of the app. Docker is a popular tool in software development that allows programs to be hosted on any machine by bundling all its requirements and dependencies into a single file called an image.

Images are run within containers on AWS, which give us a lot of flexibility over what programming language and packages/libraries can be used. For more information on Docker, read this introduction to containerisation. To learn more about AWS Lambda, click here.

Middleware Functions

In order to run the algorithm and schema on AWS Lambda, some middleware functions have been provided to handle, validate and return the data so all you need to worry about is the evaluation script and testing.

The code needed to build the image using all the middleware functions are available in the BaseEvaluationFunctionLayer repository.

GitHub Actions

Whenever a pull request is opened or updated, the new code will go through a pipeline, where it will be tested for syntax errors and code coverage. The pipeline used is called GitHub Actions and the scripts for these can be found in .github/workflows/.

On top of that, when starting a new evaluation function, you will have to complete a set of unit test scripts, which not only make sure your code is reliable, but also helps you to build a specification for how the code should function before you start programming.

Once the code passes all these tests, it will then be uploaded to AWS and will be deployed and ready to go in only a few minutes.

Pre-requisites

Although all programming can be done through the GitHub interface, it is recommended you do this locally on your machine. To do this, you must have installed:

  • Python 3.8 or higher.

  • GitHub Desktop or the git CLI.

  • A code editor such as Atom, VS Code, or Sublime.

About

IsSimilar Evaluation Function

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors