Collaborations Workshop 2019 (CW19) #CollabW19          2019-04-01 to 2019-04-03

Group 10 Idea - CI13-CW2CC

Reporter

Niall Beard - niallbeard@gmail.com

Participants

Jakob S. Jørgensen - jakob.jorgensen@manchester.ac.uk

Lucy Whalley - lucywhalley@gmail.com

David Pérez-Suárez - d.perez-suarz@ucl.ac.uk

Sarah Stewart - sarah.stewart@bl.uk

Benjamin Lee - benjamin_lee@college.harvard.edu


This document should be used to capture the information for a Collaborative Session / Hack Day Idea. (The total amount of text should ideally be between 100-300 words and you can include a diagram or two). The document should be no larger than two pages of A4. Don’t delete the details at the top of the document but you should delete all the hint text once you no longer need it.

Context / Research Domain

Please describe the context or research domain to which the problem applies

Training about Programming

Problem

Description of the problem you are trying to solve

There was a wonderful flash talk on Monday about hovercraft and eels. The concept was that people try out new coding languages by using the paradigms and concepts of languages they’re already familiar with. However, this often doesn’t take advantage of the powerful features of the new language. This can mean they don’t get the benefits, they could suffer worse performance, and/or they find it difficult to write efficient and functioning code.

Storyboarded problem

Solution

Explanation of the solution to the problem you have identified

My hovercraft is full of eels

A hovercraft full of eels.

A training page that surfaces the different programming idiosyncrasies by offering them in the context of a language familiar to the learner.

A developer seeking to learn a new language will:

  1. Select their target language (the language they’re seeking to learn)
  2. Select their home language (the language they’re most comfortable with)
  3. Select their current proficiency in the target language. \

The site then presents a code implementation example in the target language side-by-side with the same implementation in the home language.

About the implementation

The examples can easily be harvested from a website called Rosetta Code which offers example code in multiple implementations. We can select some examples that match the different tiers of proficiencies (e.g. beginner, intermediate, advanced).

Possible Extension

Semantic Annotations

Additionally, we could add semantic data to WikiData for the Rosetta Code page in order to specify what program concepts each example covers. This would enable a user to select something like ‘show me how to thread/make a web-server/iterate in Ruby as someone who knows Python’.

Performance

Display benchmarking data for each of the examples.

Community annotations

There are lots of ways of implementing things. Some are better than others in different usages, languages, constraints, and contexts. A community effort could be initiated to create a cumulative knowledge-base that allows users to discover the algorithms most useful for their use case. The community can contribute new example implementations, refine existing ones, and

Jupyter Notebooks

Have these snippets as executable notebooks within the page

Diagrams / Illustrations

You can include one or two diagrams in this section. Please ensure you have the right to use the image(s), and include an attribution if applicable.

>>>>> gd2md-html alert: inline image link here (to images/image2.jpg). Store image on your image server and adjust path/filename/extension if necessary.
(Back to top)(Next alert)
>>>>>

alt_text

Rosetta Code data here:

https://github.com/acmeism/RosettaCodeData

Links to existing collections of guides on how to go from one language to another.

A number of resources already exist providing introductions to features of a specific programming language, targeted at programmers familiar with other programming languages, for example

These resources are helpful but limited to non-interactive, simple lists of commands in isolation.

What “My hovercraft is full of eels” provides is a dual side-by-side interactive notebook with comparisons of a feature implemented in the language a user is familiar with and a reference implementation done The Right Way in the new language.

Ideas for design

Table format

>>>>> gd2md-html alert: inline image link here (to images/image3.jpg). Store image on your image server and adjust path/filename/extension if necessary.
(Back to top)(Next alert)
>>>>>

alt_text

Select box & Visualisation

>>>>> gd2md-html alert: inline image link here (to images/image4.jpg). Store image on your image server and adjust path/filename/extension if necessary.
(Back to top)(Next alert)
>>>>>

alt_text _ of Options_