Skip to content

Commit

Permalink
added challenges page
Browse files Browse the repository at this point in the history
  • Loading branch information
josh146 committed May 1, 2018
1 parent 6509d49 commit d42e722
Show file tree
Hide file tree
Showing 3 changed files with 109 additions and 13 deletions.
75 changes: 75 additions & 0 deletions .github/CHALLENGES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
# :trophy: Strawberry Fields Challenges :trophy:

Looking for inspiration for contributing to the Strawberry Fields community? Or just in it for the
Xanadu Swag™? Check out some ideas below to get started. If you get stuck, or have any questions,
simply ask over at our [Slack community](https://u.strawberryfields.ai/slack).

For more details on contributing to Strawberry Fields, see our
[contributing guidelines](.github/CONTRIBUTING.md).

## Community :strawberry:

* **Blog post/tutorial**
- Write a blog post or tutorial exploring your experience with Strawberry Fields, highlighting
any cool results you generate, or unique applications for Strawberry Fields. Send us the link
when you're done at support@xanadu.ai, and we may even add it to the Strawberry Fields gallery.

## Quantum theory and research :mortar_board:

* **Publish results using Strawberry Fields**
- If you've published a paper that utilizes Strawberry Fields for simulations, let us know,
and we will add it to our Strawberry Fields gallery.

* **Contribute continuous-variable theory or algorithms to our documentation**
- Our aim is for the [Strawberry Fields documentation](http://strawberryfields.readthedocs.io) to
become an open-access online resource for everything continuous-variable. If you have any particular
algorithms or theory you wish to include, simply chat to us on our Slack channel.

* **Write a non-physicist introduction to CV quantum computation**
- Quantum computation is a tricky field to break into for newcomers. One thing we are currently
missing in our documentation is a non-physicist introduction to CV quantum computation.
That is, a page that introduces the idea of quantum computation with no equations (or very few equations),
few references, lots of figures and pictures, and discusses more the application and potential than the theory.
The main goal for this challenge would be to introduce continuous-variable quantum computing
without having to first introduce the discrete-variable qubit model.

## Coding contributions :computer:

*Note*: please contact us, either via the [Slack channel](https://u.strawberryfields.ai/slack) or at support@xanadu.ai,
to let us know if you want to start working on any coding challenges currently marked as *open*, as well as the
corresponding GitHub repository. We will update the status below with a link to your repository.

* **Add common expectation values to the state module**
- *Status: open*
- Currently, Strawberry Fields supports the `state.quad_expectation()` method to calculate the quadrature expectation
values x and p, as well as the quadrature variance \Delta x and \Delta p. In this challenge, modify the
Strawberry Fields `states.py` module to calculate other common expectation values, such as <x^2>, <p^2>, and others.

* **Find an accurate and numerically efficient implementation of the cubic phase gate**
- *Status: open*
- This challenge would involve
finding a more accurate and numerically efficient method of implementing the cubic phase gate
in the Fock and/or Tensorflow backends of Strawberry Fields.

* **Create a new Strawberry Fields backend**
- Strawberry Fields currently includes 3 backends; two Fock-basis backends (using NumPy and Tensorflow),
and one Gaussian backend (using NumPy). Some ideas for a new backend include:
- **Gaussian-Tensorflow**: (*status: open*) Duplicate the included Gaussian backend, and add Tensorflow support
- **MPI support**: (*status: open*) Add MPI support (using mpi4py) to one of the backends
- **Circuit drawer**: (*status: open*) Create a backend that outputs a circuit diagram of the executed command queue.
This circuit diagram output could be in the form of TeX code, or an svg/eps/png image.

* **Turn circuits into operators**
- *Status: open*
- Modify Strawberry Fields such that a function returning a sequence of gates can be converted into a
quantum `Operator`. One suggestion is to use a decorator to convert the circuit function into an operator:
```python
@operator
def Circuit([x, y,...], q):
Op1(x) | (q[0], q[1])
Op2(y) | q[0]

with eng:
Op3() | q[1]
Circuit(0.1, 0.2) | q
```
25 changes: 22 additions & 3 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ community - while we will continue working on adding new and exciting features t
we invite you to join us and suggest improvements, research ideas, or even just to discuss how
Strawberry Fields fits into your workflow.

If your contribution becomes part of Strawberry Fields, or is highlighted in our Gallery, we will
send you some exclusive Xanadu Swag™ - including t-shirts, stickers, and more.

## How can I get involved in the community?

If you want to contribute but don't know where to start, start by checking out our
Expand Down Expand Up @@ -36,7 +39,7 @@ It's up to you!
provide exciting updates of the projects/experiments you are investigating with Strawberry Fields

You can even write your own Strawberry Fields tutorials, or blog about your simulation results.
Send us the link, and we may even add it as an external resource in our documentation!
Send us the link, and we may even add it to our Gallery or our documentation as an external resource!

* **Test the cutting-edge Strawberry Fields releases** - clone our GitHub repository, and keep up to
date with the latest features. If you run into any bugs, make a bug report on our
Expand All @@ -51,13 +54,16 @@ It's up to you!

* **Contribute to our documentation, or to Strawberry Fields directly** - we are hoping for our documentation
to become an online, open-source resource for all things continuous-variable. If you would like to add
to it, or suggest improvements/changes, let us know - or even submit a pull request directly.
to it, or suggest improvements/changes, let us know - or even submit a pull request directly. All authors
who have contributed to the Strawberry Fields codebase will be listed alongside the latest release.

* **Build an application on top of Strawberry Fields** - have an idea for an application, and Strawberry Fields
provides the perfect computational backbone? Consider making a fully separate app that builds upon Strawberry Fields
as a base. Ask us if you have any questions, and send us a link to your application so we can highlight it in
as a base. Ask us if you have any questions, and send a link to your application to support@xanadu.ai so we can highlight it in
our documentation!

For some inspiration, you can also check out some preprepared [contribution challenges](.github/CHALLENGES.md).

Appetite whetted? Keep reading below for all the nitty-gritty on reporting bugs, contributing to the documentation,
and submitting pull requests.

Expand Down Expand Up @@ -149,6 +155,19 @@ Before submitting a pull request, please make sure the following is done:
Based on these reports, we may ask you to make small changes to your branch before merging the pull request into the master branch. Alternatively, you can also
[grant us permission to make changes to your pull request branch](https://help.github.com/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork/).

## I've made a contribution! Now how do I claim my Xanadu Swag?

* If you've contributed code to Strawberry Fields, we'll contact you shortly after merging your pull
request to organise delivery of your Xanadu Swag™.

* If you've created a Strawberry Fields application, produced content using Strawberry Fields, or simply
written an awesome Strawberry Fields tutorial, and we have linked it to our Gallery, you are eligible for some
Xanadu Swag™. We will contact you to organise delivery of your swag.

If you haven't heard back from us, don't panic! Here at Xanadu we are working on projects on the cutting edge of
quantum technology, and sometimes get a little sidetracked. Simply send a reminder email to support@xanadu.ai regarding your
swag, and we'll get back to you ASAP.

:strawberry: Thank you for contributing to Strawberry Fields! :strawberry:

\- The Strawberry Fields team
22 changes: 12 additions & 10 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,18 @@ To build the HTML documentation, go to the top-level directory and run the comma
The documentation can then be found in the ``doc/_build/html/`` directory.


Contributing to Strawberry Fields
=================================

We welcome contributions - simply fork the Strawberry Fields repository, and then make a
`pull request <https://help.github.com/articles/about-pull-requests/>`_ containing your contribution. All contributers to Strawberry Fields will be listed as authors on the releases.

We also encourage bug reports, suggestions for new features and enhancements, and even links to cool projects or applications built on Strawberry Fields. If your contribution becomes part of Strawberry Fields, or is highlighted in our Gallery, we will send you some exclusive Xanadu Swag™ - including t-shirts, stickers, and more.

See `Contributing to Strawberry Fields <https://github.com/XanaduAI/strawberryfields/blob/master/.github/CONTRIBUTING.md>`_
for more details, and then check out some of the Strawberry Fields `challenges <https://github.com/XanaduAI/strawberryfields/blob/master/.github/CHALLENGES.md>`_ for some inspiration.


Authors
=======

Expand All @@ -128,16 +140,6 @@ If you are doing research using Strawberry Fields, please cite `our whitepaper <
Nathan Killoran, Josh Izaac, Nicolás Quesada, Ville Bergholm, Matthew Amy, and Christian Weedbrook. Strawberry Fields: A Software Platform for Photonic Quantum Computing. *arXiv*, 2018. arXiv:1804.03159


Contributing to Strawberry Fields
=================================

We welcome contributions - simply fork the Strawberry Fields repository, and then make a
`pull request <https://help.github.com/articles/about-pull-requests/>`_ containing your contribution.

See `Contributing to Strawberry Fields <https://github.com/XanaduAI/strawberryfields/blob/master/.github/CONTRIBUTING.md>`_
for more details.


Support
=======

Expand Down

0 comments on commit d42e722

Please sign in to comment.