Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
342 lines (239 sloc) 12.8 KB

Software Carpentry's Idea Page

To be clear, your own ideas are most welcome!

Table of contents

  1. A survey responses visualizer application
  2. Write a result-aggregation server for the installation-test scripts
  3. Manage workflow for instructor training

A survey responses visualizer application

Please ask questions as issues here.

Abstract

Write a web application that presents any survey results, grabbed from SurveyMonkey API, and aggregates them by the workshop ID.

The key features are:

  • survey selection,
  • results aggregation by workshop ID,
  • visual presentation of all of the results (there are questions of different kinds: some may be shown as histograms, some may require other chart or even a text display),
  • caching of the results (we only have about 15000 API queries a day)
  • a view for workshop hosts to see the survey results,
  • if time allows, integration with AMY (workshop management tool for Software Carpentry).
Intensity Involves Mentors
Moderate Python, Django, REST API, HTML, CSS @pbanaszkiewicz, @rgaiacs

Background

For every Software Carpentry workshop, the organization hosts attendee surveys:

  1. "pre-workshop" anonymous survey that helps instructors get insight into attendees computing experience, and details of their machines like operating system,
  2. "post-workshop" anonymous survey that gets attendees' feedback on the workshop.

There are also two surveys for instructors and one long-term survey for workshop attendees.

These surveys are shared among all of the workshops, and answers from specific workshops are aggregated in two ways:

  1. via query parameter (/link/to/survey?workshop_id=2016-01-24-Boston),
  2. via explicit question in the survey ("Which workshop do you attend?").

The hard part here is creating aggregated view with the results for workshop hosts. It takes a lot of clicks in the SurveyMonkey web interface to do this task, but thanks to their API we can do this automatically in our application.

Technical details

Due to the fact that AMY is a Django application, it is suggested to have experience with both Django and Python since creating the project as Django application will allow faster integration with AMY and easier maintenance in the future.

Project's interface will probably use one of many JavaScript plotting libraries, e.g. Metrics-Graphics or plotly.js, so it is required to research them and select one most promising.

Finally, SurveyMonkey API uses OAuth for authentication. Prospect students should get to know this method (see below).

Open Source Development Experience

Skills required to complete the project (you can apply without some of them):

  • Knowledge of Python and basics of Django.
  • Basic knowledge of how to use JavaScript plotting library of your choice
  • Knowledge of Git for storing your work on GitHub
  • Knowledge of SurveyMonkey OAuth.

Any of these skills could be learned during the project and we will help you with them, but you probably can't learn all of them during GSoC.

This project will be a single application, but you'll be designing and writing it from scratch.

First steps

If you want to show interest in making this project, we would like to see your sample Django project. As a bonus, you can implement grabbing responses from your SurveyMonkey survey and presenting them.

Mentoring process

You'll meet with your mentor(s) every week on Skype/Hangouts. They'll review all your changes, and suggest project design.

Weekly or biweekly you'll have to provide a blog post with updates on your project.

Additional perks

If you're interested in what Software Carpentry does, we may be able to offer you a place at online instructor training, if there is one taking place during Google Summer of Code 2016.

Contact

Questions: please create an issue here.

Project proposal: please create a pull request to this repository.

Other: please use our mailing list.


Write a result-aggregation server for the installation-test scripts

Please ask questions as issues here.

Abstract

Write a server for storing results of installation-testing scripts (ie. platform people use, which software dependency worked and which didn't). Enhance the testing scripts by adding an option for users to collect results and send them to the server.

Intensity Involves Mentors
Hard Python, REST API, Testing, Statistics @pbanaszkiewicz, @rgaiacs

Background

Software Carpentry has installation-test scripts so students can check that they've successfully installed any software required by their workshop. However, we don't collect the results of student tests, which makes a number of things more difficult than they need to be. Statistics about installed versions would make it easy to:

  • figure out how much trouble our students are having with installation (for a given workshop or in general),
  • make informed decisions about deprecating older versions of our various dependencies or modernizing our lessons to catch up with current systems.

Technical details

Challenges for this project: designing and implementing a simple API for storing tests results, error messages, diagnostic system information, etc.

We want a robust, flexible system that's small and easy to maintain going forward.

Requirements:

  • Create a model for installed packages, failed package checks, and diagnostic system information.
  • Design an API so clients can submit the results of their installation-test script.
  • Write a small server to serve the API, store the results in a relational database, and allow administrators to analyze the content.
  • Update the installation-test scripts to (optionally) submit their results to the new server.

The preferred software for this project: Python (since testing scripts are written in it), and Django or Flask web framework. If you prefer a different framework, it's fine as long as it takes care of the boilerplate and lets you focus on the high-level tasks.

We like SQLite database system, but it may be inefficient when ~40--80 people (a worst-case scenario estimate) try to send their results at once.

Open Source Development Experience

Skills required to complete the project (you can apply without some of them):

  • Knowledge of Python, to write client-side code for the installation test scripts.
  • Knowledge of a web framework and basic API design.
  • Knowledge of relational databases or a wrapping library for storing the results.
  • Knowledge of Git for storing your work on GitHub

Any of these skills could be learned during the project and we will help you with them, but you probably can't learn all of them during GSOC.

This project will consist of single server application you'll be designing and writing from scratch, and you'll also make changes to existing scripts too.

First steps

Have a look at Software Carpentry's installation-test scripts and make suggestions of how to improve them.

As a bonus, you can implement a demo consisting of a client and web server, where the client sends platform (e.g. operating system) details to the server, and servers stores that in the database.

Mentoring process

You'll meet with your mentor(s) every week on Skype/Hangouts. They'll review all your changes, and suggest project design.

Weekly or biweekly you'll have to provide a blog post with updates on your project.

Additional perks

If you're interested in what Software Carpentry does, we may be able to offer you a place at online instructor training, if there is one taking place during Google Summer of Code 2016.

Contact

Questions: please create an issue here.

Project proposal: please create a pull request to this repository.

Other: please use our mailing list.

Acknowlegements

Thanks to @xuf12 for the initial idea behind this project and for @wking for providing this idea for GSOC'15.


Manage workflow for instructor training

Please ask questions as issues here.

Abstract

Extend AMY to manage the process of training people to be instructors.

Intensity Involves Mentors
Moderate Workflow Design, Interface Design, Python, Django, Testing @pbanaszkiewicz, @gvwilson

Background

Software Carpentry has built a Django-based web application called AMY to keep track of who's qualified to teach, what workshops have run, who taught and attended, and so on. This project will extend it to manage all aspects of our instructor training course, an intensive two-day workshop that introduces people to basic ideas in educational psychology and instructional design and shows them how to apply those ideas to teaching basic coding skills to researchers. For more information on the instructor training program, see the course notes (under construction).

Instructor training is currently managed using a mish-mash of Etherpads and Google Docs spreadsheets. The main requirements for its replacement are:

  • recording applications from individuals and groups who wish to become trainers
  • matching those applications to upcoming instructor training workshops
  • keeping track of which stages of instructor training have been completed by specific individuals

Technical details

Challenges for this project: analyzing the current workflow (which relies on a lot of email, some Etherpads, and a Google Docs spreadsheet) to determine what we're actually doing; translating that workflow into new pages in AMY that can be used by administrators, trainers, and mentors; making that workflow's implementation flexible so that it can easily be reconfigured as our process evolves; testing both the usability and functionality of the new interface.

The software stack for this project is Python, Django, and Javascript.

Open Source Development Experience

Skills required to complete the project (you can apply without all of them):

  • Knowledge of Python.
  • Knowledge of Django or a similar three-tier web application framework.
  • Knowledge of Javascript for front-end user interface development.
  • Familiarity with GitHub workflows.

Any of these skills could be learned during the project and we will help you with them, but you probably can't learn all of them during GSOC.

First steps

  1. Have a look at AMY's existing code.
  2. Get it running on your own machine.
  3. Submit a pull request with a small fix or addition...
  4. ...or file a bug report if you find something that doesn't work.

Mentoring process

You'll meet with your mentor(s) every week on Skype/Hangouts. They'll review all your changes and make project design suggestions.

Weekly or biweekly you'll have to provide a blog post with updates on your project.

Additional perks

If you're interested in what Software Carpentry does, we may be able to offer you a place at online instructor training, if there is one taking place during Google Summer of Code 2016.

Contact

Questions: please create an issue here.

Project proposal: please create a pull request to this repository.

Other: please use our mailing list.