The Q-CTRL Back-end Engineering Challenge is a way for applicants to roles within the Q-CTRL Back-end Engineering team to demonstrate their skills and overall approach to back-end application development.
The requirements are intentionally sparse (the devil is in the detail). We don't want you to do a lot, but what you do should be your best work and should clearly demonstrate you embody the Three Virtues.
- Read and understand The Challenge
- Create a solution that satisfies the Requirements
- Send the link to the repository containing your solution to [email protected]
There's a new set of product features being planned for BLACK OPAL whereby a customer will be able to create and manage quantum controls. You can think of these controls as being the individual inputs a customer may employ to manipulate their quantum system using the Q-CTRL App.
Create a RESTful API using Django. The API should be backed by a PostgreSQL database, conform to the JSON:API specification and should implement endpoints that provide the following functionality:
- Create a new control
- List all controls (five per page)
- Get a specific control
- Update a specific control
- Delete a specific control
- Bulk upload controls in CSV format
- Download controls in CSV format
Below are the attributes of a control. All attributes are required.
Name | Description |
---|---|
Name | The name of the control (e.g. "Single-Qubit Driven"). |
Type | Valid control types are Primitive, CORPSE, Gaussian, CinBB and CinSK. |
Maximum Rabi Rate | The maximum achievable angular frequency of the Rabi cycle for a driven quantum transition. This is a number between 0 and 100. |
Polar Angle | An angle measured from the z-axis on the Bloch sphere. This is a number between 0 and 1 (units of pi). |
The below assets have been provided to help complete the challenge.
Name | Description |
---|---|
controls.csv | Sample CSV file |
See Contributing.
See Contributors.
See LICENSE.