+ All Categories
Home > Documents > Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel...

Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel...

Date post: 01-Oct-2020
Category:
Upload: others
View: 1 times
Download: 0 times
Share this document with a friend
48
Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany http://www.softlang.org/ Making a failing project succeed?!
Transcript
Page 1: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

Ralf LämmelSoftware Languages Team

University of Koblenz-Landau, Germany http://www.softlang.org/

Making a failing project succeed?!

Page 2: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

101companies is asoftware chrestomathy

Chrestomathy; Greek vs. English

chresto — useful

mathein — to learn

A chrestomathy collecting software systems

Page 3: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

Chrestomathies in linguistics and philology

A collection of literary passages in typically one language from

one or more authors compiled by one or more chrestomathy authors as an aid in learning a language.

Page 4: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

Program and software chrestomathies

The Evolution of a Haskell programmer99 Bottles of BeerOO ShapesRosetta CodeBeautiful CodeNOPThe Computer Language Benchmarks Game

101companies (The `101’ project)

http://softlang.uni-koblenz.de/chrestomathy/

Page 5: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© Ralf Lämmel, 2015, Software Languages Team, Faculty of Computer Science, University of Koblenz-Landau

http://www.roesler-ac.de/wolfram/hello.htm

Page 6: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© Ralf Lämmel, 2015, Software Languages Team, Faculty of Computer Science, University of Koblenz-Landau

99 bottles of beer

Page 7: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© Ralf Lämmel, 2015, Software Languages Team, Faculty of Computer Science, University of Koblenz-Landau

The evolution of a Haskell programmer http://www.willamette.edu/~fruehr/haskell/evolution.html

Freshman Haskell programmer

Sophomore Haskell programmer, at MIT

Junior Haskell programmer

Senior Haskell programmer

Memoizing Haskell programmer

Pointless Haskell programmer

Iterative Haskell programmer

Accumulating Haskell programmer

Continuation-passing Haskell programmer

Boy Scout Haskell programmer

Combinatory Haskell programmer

List-encoding Haskell programmer

Interpretive Haskell programmer

...

Implementing factorial

Page 8: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© Ralf Lämmel, 2015, Software Languages Team, Faculty of Computer Science, University of Koblenz-Landau

$ more Program.java

class Program {

public static void main(String[] args) {

}

}

$ javac Program.java

$ java Program

$

NOP in Java

Page 9: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© Ralf Lämmel, 2015, Software Languages Team, Faculty of Computer Science, University of Koblenz-Landau

NOP in Python (interpreted)

$ more Program.py

$ python Program.py

$

Page 10: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© Ralf Lämmel, 2015, Software Languages Team, Faculty of Computer Science, University of Koblenz-Landau

NOP in Python (scripted)

$ more Program.py

#! /usr/bin/env python

$ ./Program.py

$

Page 11: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

What’s 101?

“101” is short for “101project” which is short for“101companies Project”

“101companies” refers to “101 ways of building a Human-resources management systemfor a conceived company”.

Page 12: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

What’s 101? 101 = 101system+ 101contributions+ 101repo+ 101wiki+ 101worker+ 101explorer+ 101people+ ...

Page 13: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

101 = 101system+ 101contributions+ 101repo+ 101wiki+ 101worker+ 101explorer+ 101people+ ...

A conceived human resources management system (HRMS) to be

modeled and implemented time and again, thereby collecting community knowledge about

software languages, technologies, and

concepts

What’s 101?

Page 14: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

101 = 101system+ 101contributions+ 101repo+ 101wiki+ 101worker+ 101explorer+ 101people+ ...

Data model with companies, departments, and employees. Functional requirements such

as “salary total”. Non-functional requirements such

as “distribution”.

What’s 101?

Page 15: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

What’s 101? 101 = 101system+ 101contributions+ 101repo+ 101wiki+ 101worker+ 101explorer+ 101people+ ...

Page 16: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

101 = 101system+ 101contributions+ 101repo+ 101wiki+ 101worker+ 101explorer+ 101people+ ...

Mostly, these are implementations of the

101system; they vary in the following dimensions:

• Used programming languages• Used libraries/frameworks• Implemented features sets• Applied design patterns• ...

What’s 101?

Page 17: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

101 = 101system+ 101contributions+ 101repo+ 101wiki+ 101worker+ 101explorer+ 101people+ ...

What’s 101?Company X:

Swing + JDBC

Company Y: SWT + Hibernate

Company Z: GWT + MongoDB

...

Page 18: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

101 = 101system+ 101contributions+ 101repo+ 101wiki+ 101worker+ 101explorer+ 101people+ ...

What’s 101?

Different featuresDifferent designs

Different technologiesDifferent languages

Page 19: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

101 = 101system+ 101contributions+ 101repo+ 101wiki+ 101worker+ 101explorer+ 101people+ ...

What’s 101?

Technologies / Languages

Page 20: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

101 = 101system+ 101contributions+ 101repo+ 101wiki+ 101worker+ 101explorer+ 101people+ ...

A confederated (GitHub-based) open-source

repository which holds all code artifacts:

• Code for contributions• Other illustrative code• Infrastructure of 101• Version history of 101wiki• ...

What’s 101?

Page 21: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

101 = 101system+ 101contributions+ 101repo+ 101wiki+ 101worker+ 101explorer+ 101people+ ...

What’s 101?Files of a contribution

Page 22: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

What’s 101? 101 = 101system+ 101contributions+ 101repo+ 101wiki+ 101worker+ 101explorer+ 101people+ ...

Page 23: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

101 = 101system+ 101contributions+ 101repo+ 101wiki+ 101worker+ 101explorer+ 101people+ ...

A highly structured, semantically enriched, and

linked-data enabled wiki for text and triples along different namespaces:

• Docs for contributions• Feature model of 101system• Entries for sw languages• Entries for sw technologies• Entries for sw concepts• ...

What’s 101?

Page 24: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

101wiki’s namespaces4 Software Languages Team, University of Koblenz-Landau

Fig. 1. Namespaces managed on the 101wiki (shortlisted).

2.3 The 101wiki

The wiki comprises of wiki pages, which in turn break down into sections, whichmay also be addressed, in principle, in a URI-based manner. Pages refer to eachother via plain links or semantic properties (see below). All pages are organizedin namespaces to distinguish major content categories on the wiki; see Figure 1.

The namespace-based organization of the 101wiki and the virtual layout ofthe 101repo are designed to be in sync. That is, the top-level folders of the repocorrespond to the namespaces on the wiki. The second-level folders of the repocorrespond to the member pages on the wiki. Beyond that level, all files andfolders are conceptually associated with the member page.

2.4 Semantic properties

Recently, the 101wiki has been turned into a semantic wiki, inspired by SemanticMediaWiki [10]2. Semantic properties are used specifically for assigning ‘types’to links. Consider, for example, the following links as rendered on the 101wikipage for the Prolog language:

‘this’ proxies for the current page (i.e., the page for Prolog). There are threelinks in which ‘this’ is involved. First, ‘this’ is said to be an ‘instance of’ theconcept ‘Logic programming language’. Second, ‘this’ is said to be an ‘instanceof’ (as in ‘element of’) the namespace ‘Language’. Third, a certain contribution,i.e., ‘prologStarter’ is said to ‘use’ ‘this’ (i.e., Prolog). The first two links (with

2 http://semantic-mediawiki.org/

Page 25: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

101 = 101system+ 101contributions+ 101repo+ 101wiki+ 101worker+ 101explorer+ 101people+ ...

What’s 101?A wiki page

for a contribution

Page 26: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

101 = 101system+ 101contributions+ 101repo+ 101wiki+ 101worker+ 101explorer+ 101people+ ...

What’s 101?

Top 2 sections ofthe earlier page

Page 27: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

101 = 101system+ 101contributions+ 101repo+ 101wiki+ 101worker+ 101explorer+ 101people+ ...

What’s 101?

The metadata section ofthe earlier page

Page 28: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

101 = 101system+ 101contributions+ 101repo+ 101wiki+ 101worker+ 101explorer+ 101people+ ...

An open, extensible, computational infrastructure for analyzing 101repo&wiki

and synthesizing information:

• Dump of 101wiki• Facts extracted from 101repo• Inferred metadata of 101repo • ...

What’s 101?

Page 29: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

101 = 101system+ 101contributions+ 101repo+ 101wiki+ 101worker+ 101explorer+ 101people+ ...

What’s 101?Derived metrics data

for a source file

{size: 769,loc: 25,ncloc: 26,relevance: "system"}

Page 30: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

101 = 101system+ 101contributions+ 101repo+ 101wiki+ 101worker+ 101explorer+ 101people+ ...

A linked data layer on top of 101 to surface all entities in a systematically discoverable

and connected manner:

• List of all namespaces ➭ List of namespace members ➭ List of subfolders and files• Links to GitHub, 101wiki, ...• Support for JSON, RDF, HTML• ...

What’s 101?

Page 31: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

101 = 101system+ 101contributions+ 101repo+ 101wiki+ 101worker+ 101explorer+ 101people+ ...

What’s 101?Members of

contributions namespace

Page 32: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

What’s 101? 101 = 101system+ 101contributions+ 101repo+ 101wiki+ 101worker+ 101explorer+ 101people+ ...

Members of contributions namespace

Page 33: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

What’s 101? 101 = 101system+ 101contributions+ 101repo+ 101wiki+ 101worker+ 101explorer+ 101people+ ...

The root folder of a contribution

Page 34: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

What’s 101? 101 = 101system+ 101contributions+ 101repo+ 101wiki+ 101worker+ 101explorer+ 101people+ ...

Fragments of a particular source file

Page 35: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

101 = 101system+ 101contributions+ 101repo+ 101wiki+ 101worker+ 101explorer+ 101people+ ...

Various stakeholders:

• Contributors (development)• Technologists (demonstration)• Ontologists (formalization)• Teachers (utilization)• Learners (utilization)• ...

What’s 101?

Page 36: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

What’s 101 good for?

Page 37: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

What’s 101 good for?The guide through the software galaxy

Technology comparison

Programming education

Test-harness for language technology

Feature detection

Fact extraction

Page 38: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

The Hitchhiker's Guide to the Software Galaxy

Wannabe Wikipedia for Software Developers. :-)

What is 101 good for?

Page 39: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

Too much software technologies. Too much software languages.

Too little time.

101 supports examples, abstractions, and analogies.

EMF

SQL

TENEO

Java

XSD

DOM

Antlr

OWL

UML

XMI

Ecore

SQL DDL

XLSTSaxon

Hibernate

Awk

Json

Yacc

JAXP

RestOWL

RDF

ATOM

SparQLXSLT

DTD

BNF

XSD

OCL

Prolog

grep

MOF

OMG

QVT

jDOMRose

Protegé

XQuery

ODM

XMLSpy

JPA

JAXB

JDBC

ODBC

MySQLArgoUML

Jean

Jena

Jena

Ralf

Dragan

TXL

VLDB

EMF.gen

ORACLE

TCS

XText

Teneo

Jersey

GWT

Sesame

Stratego

XPATH

JeanBeans

UTF8

ASCII

RDFa

RDF(S)

RDFS

CFG

LALR

ER

SLE2010xerces

xalan

saxonsax

sed

XSD

JMI JMF

SBVR

What is 101 good for?

Page 40: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

101 is a knowledge resource for technological space travel.

http://upload.wikimedia.org/wikipedia/en/thumb/6/66/E_t_the_extra_terrestrial_ver3.jpg/220px-E_t_the_extra_terrestrial_ver3.jpg

Page 41: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

101 is a knowledge resource for technological space travel.

Sesame

XMIModelwareXMLware

JavawareJDBC

Dataware

JDOM

Ontoware

JenaHibernate

EMF.genJMITeneo JAXB

JPA

Page 42: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

101 is a knowledge resource for technology comparison.

Page 43: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

101 is a knowledge resource for programming education.

• Lecture First steps• Lecture Basic software engineering• Lecture Searching and sorting• Lecture Basic data modeling• Lecture Higher-order functions• Lecture Type-class polymorphism• Lecture Functors and friends• Lecture Monads• Lecture Parsing and unparsing• Dry run for final• Lecture Generic functions• Final

Figure 9. Lectures in the functional programming course.

6.2 Course contentMost of the content is readily available via the wiki pages for con-tributions, concepts, and others. The only course-specific content isthe lineup of all lectures and per-lecture scripts for the itemized andlinked content of the lectures.

Figure 9 shows the lineup of the lectures for the course. Twolecture slots are repurposed for the final exam and its dry-run. Inthe next edition of the course, we expect to make space for anextra lecture slot, in which case we plan to cover functional datastructures as an additional topic.

Figure 10 shows a particular lecture script, as it is rendered onthe 101wiki. Thus, each lecture comes with a headline (a title), asummary, a longer list of concepts, and a shorter list of 101haskellcontributions covered by the lecture. This also clarifies the modusoperandi of the lecturer: the listed concepts are illustrated in someorder; the listed contributions are eventually explored. The exactorder is unspecified; it may be influenced by the dynamics ofthe lecture. If time turns out to be insufficient, some concepts orcontributions may also be delegated to the lab.

6.3 EvaluationThe authors’ university runs evaluations for all courses. However,student participation in the polls is voluntary. The questionnairesare relatively complex, which may add to the low turnout. 10 outof 73 enrolled students submitted their scores for the functionalprogramming course. All results are available from this paper’swebsite. The authors’ experience with other introductory courses(first or second semester) suggests that these courses tend to beless well received. (A significant percentage of students cancelstheir studies during this period; there is no ‘numerus clausus’ forcomputer science.) The present course received mostly favorablescores. The course received an overall score of 2.3 (‘good’) on a1-5 (very good to insufficient) scale.

In Figure 11, we show poll results for a question related tothe use of practical examples. We take the results to mean thatthe balanced use of the 101system as the running example wasappreciated.

The written final contained basic tasks for the first seven lecturetopics of Figure 9 and almost all the students succeeded in theexam. (This is rather surprising for a first/second semester course.)As we have not held the course previously, we cannot comparelearning results.

7. Related workWe set up a scope for the related work discussion. The presentpaper is concerned with aggregating, organizing, accessing, andmaintaining knowledge in the programming domain, to be useful,

Figure 10. The script for a lecture on higher-order functions.

�53*���5���%0*��>11)0���582(0%+)2�()5�*82/7-32%0)2��53+5%11-)582+

������ �9% <6��86:)5782+ )-7)�

�)5��-)��),5)2()�,%7�)-2)2�*0@66-+)2�82(�/0%5)2 45)',67-0�

75-**7�9300�=875-**7�+%5�2-',7�=8 2�1:����6���

��

��

�)5��-)��),5)2()�:%5�&)5)-7��%8*��)67%0782+69356',0>+)()5� 78(-)5)2()2�)-2=8+),)2�

75-**7�9300�=875-**7�+%5�2-',7�=8 2��1:��6�������

��

��

��

�)5��-)��),5)2()�)5187-+7)�(-)� 78(-)5)2()2�=8�3**)2)2�-6/866-32)2�

75-**7�9300�=875-**7�+%5�2-',7�=8 2� 1:� ��6�������

���

���

���

���

�)5��-)��),5)2()�+%&�%8*��)-75>+)�()5� 78(-)5)2()2�)-2,-0*5)-',)6��))(&%'/�

75-**7�9300�=875-**7�+%5�2-',7�=8 2��1:����6�������

���

���

��

�2:)2(82+6��82(��5%;-6&)=8+�2:)2(82+6��82(��5%;-6&)=8+

�1��%,1)2�()5�")5%267%0782+�-67�)6�+)082+)2��)-2)2�)=8+�=:-6',)2�7,)35)7-6',)1�#-66)2�82(�()66)2�2:)2(82+�,)5=867)00)2�

75-**7�9300�=875-**7�+%5�2-',7�=8 2�1:� � 6���

��

��

��

�-)��2,%07)�()5�")5%267%0782+�:85()2�-2�%2+)1)66)2)1!1*%2+�(85',�45%;-62%,)��)-64-)0)��=����26',%882+61%7)5-%0���%00&)5-',7)�)7'���9)5%26',%80-',7�

75-**7�9300�=875-**7�+%5�2-',7�=8 2��1:���6�������

���

�����

�����

�',�:85()�=85�/5-7-6',)2��86)-2%2()56)7=82+�1-7�()2�2,%07)2�()5�")5%267%0782+�%2+)5)+7�

75-**7�9300�=875-**7�+%5�2-',7�=8 2��1:� 6������

�����

����

�����

����

�)-2�#-66)2667%2(�-67�2%',�()5��),59)5%267%0782+:)6)270-',�,?,)5�%06�935,)5�

75-**7�9300�=875-**7�+%5�2-',7�=8 2�1:� ��6���

��

��

�8*:%2(�%2�$)-7�82(��5&)-7�67%2()2�-2�%2+)1)66)2)1")5,>072-6�=81��)52)5*30+�

75-**7�9300�=875-**7�+%5�2-',7�=8 2�1:� ��6��

��

��

��

#)-7)5)��5%+)2�=85�")5%267%0782+#)-7)5)��5%+)2�=85�")5%267%0782+

�',�,%&)�()2�(-)��),5)2()�2�%8A)5,%0&�()5�")5%267%0782+�/327%/7-)57�2�.% �

2)-2 ��

#)22�.%���-7�()5��55)-',&%5/)-7�()6�()5��),5)2()2%8A)5,%0&�()5�")5%267%0782+)2�:%5�-',�=8*5-)()2�

75-**7�9300�=875-**7�+%5�2-',7�=8 2�1:��6�

#)22�.%���8',�%8A)5,%0&�932�")5%267%0782+)2�:85()2�5%+)2�(85',�()2�(-)��),5)2()�2�=8*5-)()267)00)2(&)%27:357)7��

75-**7�9300�=875-**7�+%5�2-',7�=8 2�1:��6�

Figure 11. Course evaluation: satisfaction of the students withpractical illustrations on 1-6 scale (higher is better).

specifically, for learning. Our approach is worked out well in thefunctional programming context.

MOOCs Massive open online courses (MOOCs [36, 48]) providea ‘content delivery model’, which optimizes the aspects of accessi-bility of course content and group experience. Our research focusesinstead on ontology development and knowledge integration.

E-Learning Semantic enrichment of teaching content, is alsoan established idea in E-learning [31, 32]. Our approach makesan original contribution in so far that external resources andchrestomathy-based source-code examples are integrated as well.

A functional programming

course

Page 44: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

101 is a knowledge resource for programming education.

Concept coverage of contributions

Terms in [46] only: Local scope, Value, Complexity, Proof , Calcula-tion, Equational reasoning, Head, Equality, Programming, Queue, Ar-gument, Result, Base case, Partial application, Program, Tuple, Set,Program design, Type checking, Higher-order function, Name, Alge-braic data type, Infinite list, Float

Terms in [21] only: Haskell script, too generic term, Equation, Func-tion application, Parser combinator, Identity element, Declaration,Function definition, Product function, Lambda abstraction

Terms in [39] only: Foreign function interface, Predicate, Opera-tor precedence, Polymorphism, Thread, Performance, MVar, Profiling,TCP, Directory, Property, Loop, Technology:Parsec, Parsing, Monadtransformer, Pointer, Technology:HPC, Type system, User interface,Language:XML, Core, Technology:Glade, Exception, Error, Process,Type signature, Type definition, Program optimization, Data type, Tech-nology:GHC, Pure function, Association list, Query, Output, UDP, Ta-ble

Terms in [34] only: Fmap function, Accumulator, type-class instance,Functor, Data structure, Monadic value, Import, Factorial, Zipper,Condition, Expression, Sum function, Applicative functor

Terms in more than one book: Monoid, Character, Type-class in-stance, Bit, List comprehension, Testing, Fold function, Operator, Lazyevaluation, Recursion, I/O system, Number, State, Input, Haskell pack-age, Type, String, Type class, Random number, Tree, Command, Parser,Filter function, Code, Data constructor, Pattern, Integer, Database,Catamorphism, Evaluation strategy, Action, Technology:GHCi, Text,Tail, Regular expression, Map function, Language:Haskell, Induction,Function, Pattern matching, Prelude, Stack, Eager evaluation, List,Maybe type, Monad, Module, Guard, Boolean, File

Figure 7. Comparison of the different Haskell textbooks

Figure 8. Vocabulary usage for [21] at a given point in time.

Figure 8 illustrates monitoring of vocabulary usage. Such ta-bles are computed from a given state of the wiki. Derived terms(shown here for one book only) are listed vertically and ordered bythe number of referring contributions. Contributions are listed hor-izontally and ordered by the number of referenced terms. The bigbullets indicate direct references, whereas the small bullets reporton indirect references. For each term, the counts of directly and in-directly referring contributions are shown. For each contribution,the counts of directly and indirectly referenced terms as well asuniquely (directly) referenced terms are shown. For brevity, the ta-

ble is cut off horizontally and vertically not to show more terms andcontributions without any direct references.

Such monitoring tables can be used to drive improvement ofcoverage/interlinkage. We use guidelines as follows. Each reifiedtextbook term should be referenced directly by some number ofcontributions (e.g., 1). Each contribution should refer directly tosome number of terms (e.g., 3). Each contribution should referuniquely to some number of terms (e.g., 1).

Clearly, the figure shows the situation at a point in time, whennot yet many textbook terms are directly referenced. Thus, the fig-ure suggests that the cut-off terms need to be referenced from ex-isting contributions, or perhaps suitable contributions are missing.Likewise, the cut-off contributions need to be better linked to thevocabulary, unless they address concepts out of the scope for thebook at hand.

6. A chrestomathy-based course101haskell, as described in the present paper, was used in an intro-ductory functional programming course during summer semester2013 at the authors’ university.12 (2/3 of the students were in thesecond semester and had already basic Java programming skills.The remaining students were in the first semester.) The presentsection describes the underlying teaching concept, motivates desig-nated course content on top of 101haskell, and discusses a limitedcourse evaluation.

6.1 Teaching conceptWe highlight aspects that set apart the present teaching conceptfrom common practice. These aspects relate to the use of the101haskell and infrastructure of 101.

“Favor live programming.” Most of the lecture time is dedicatedto live programming, where all relevant concepts are systematicallyillustrated. The list of concepts for each lecture is published onthe 101wiki. The illustrations given during live programming areessentially variations on the illustrations readily available on thewiki. More complex examples, such as non-trivial 101haskell con-tributions, are not developed from scratch. They are readily demon-strated, as available from the 101repo. Slides are not used. Someamount of wiki content may be projected, though. Also, 101wikipages may contain embedded media.

“Embrace multiple external resources.” Past teaching experi-ence has suggested that our students are hardly willing to followgiven textbook recommendations; instead, unstructured search ispopular. In this course, we respond to this attitude by helping thestudents leverage available online resources more systematically.In particular, Wikipedia, HaskellWiki, and Haskell textbooks arereadily linked from the course material, as discussed in §5.

“Complement the running example.” The lectures spend consid-erable time on explaining all concepts with the help of diverse, ba-sic examples which are unrelated to the 101system. Even these ex-amples are available through the 101repo. Implementations of the101system serve typically as less basic illustrations. The home-work assignments are not necessarily tied to the 101system. Occa-sionally, an assignment could be concerned with the modificationof a given contribution.

“Open source and open linked data.” Absolutely all course ma-terial is open. Reuse in courses and collaborative advancement isappreciated and straightforward. In particular, reuse does not causeany copyright issues whatsoever because lecturers may reuse wikicontent and repo content simply by linking to it, without copy-and-paste as needed for slide-based reuse.

12 http://101companies.org/wiki/Course:Lambdas_in_Koblenz

Page 45: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

101 is a playground for student projects.

Machine learning for document structure

Clustering to find relevant API subsets

IR (IDF etc.) to check wiki completeness

Cosine/Spearman-based similarity of code

Feature location and machine learning

Comment sentiment analysis

Page 46: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

How is / was the project failing?

The contribution process is unclear.

The quality of the contributions “varies”.

We stopped attracting more contributions.

Several capabilities became defunc.

Page 47: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

How / why was / is / will the project succeed(ing)?

Several papers leveraged the project.

There is increase in # students on the project.

Several courses depend on the project.

This Dagstuhl is quite inspiring / helpful.

Page 48: Making a failing project succeed?! - Uni Koblenz-Landausoftlang/160622-dagstuhl.pdf · Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Making a failing

© 2010-16 101companies Project

Thanks!


Recommended