Dedicated Programming Compiler

This is a proposal in response to the following announcement at the Colloquium:

"Greetings! The Individual Engagement Grants program is accepting proposals for funding new experiments from September 1st to 30th. Your idea could improve Wikimedia projects with a new tool or gadget, a better process to support community-building on your wiki, research on an important issue, or something else we haven't thought of yet.

Whether you need $200 or $30,000 USD, Individual Engagement Grants can cover your own project development time in addition to hiring others to help you.

* Submit your proposal

* Get help: In IdeaLab or an upcoming Hangout session PEarley (WMF) (discuss • contribs) 16:09, 3 September 2014 (UTC)"

Objective: The project sets up dedicated programming compilers within Labs or a dedicated standalone for teaching computer programming at the Wikiversities.

The strategic priority "allows students, teachers, and researchers to learn and run dedicated language programs".

## Project idea[edit | edit source]

## Contents

* 1 Project idea
* 1.1 What is the problem you're trying to solve?
* 1.2 What is your solution?
* 2 Project goals
* 3 Project plan
* 3.1 Activities
* 3.2 Budget
* 3.3 Community engagement
* 3.4 Sustainability
* 3.5 Measures of success
* 4 Get involved
* 4.1 Participants
* 4.2 Community Notification
* 4.3 Endorsements
* 5 Reviewer's comments
* 6 External links

### What is the problem you're trying to solve?[edit | edit source]

While there are many computer languages that have free compilers or interpreters available from the web, many may not as yet. Users/editors/contributors may want to learn how to program in any of the languages that may help them attain career goals or simply get a job. Even if they download a compiler to their own laptop or cell phone, learning to program takes some effort. How do I communicate with the compiler/interpreter? How do I execute a program? Where should my data be stored? How do I write a simple but effective graphics routine?

### What is your solution?[edit | edit source]

This project makes available programming languages such as Ada (here used as an example) that allow registered editors/contributors to begin to program in any of these languages. The input and output files may be in user space as would be the test programs. These same compilers could be used to run more advanced programs for more advanced programmers.

## Project goals[edit | edit source]

Let's say someone wants a job at Raytheon programming guided missiles. Raytheon, for example, still uses Ada. Here at Wikiversity a potential applicant can learn Ada, run simple programs, build bigger ones, perhaps use or create small simulations designed to operate equipment (firmware), or activate a sensor to view the local geography. Or, a database may only be accessible using FORTRAN. What is that? How can I learn such an arcane language? We upload a FORTRAN compiler either to a dedicated space within the Labs or in a standalone. We, or other contributors at Wikiversity (any of the Wikiversities) construct the necessary execution protocols. The learner begins to learn. They can even learn how to set up what this project is designed for.

Wikipedia per se does not teach programming. Links set up by the Wikipedia:WikiProject Computer science for specific entries of such languages as Ada (programming language) could link to the Wikiversity Ada language resources. The learner begins to learn and program in Ada, eg.

## Project plan[edit | edit source]

### Activities[edit | edit source]

For a dedicated compiler, the first and probably most important experiment is to establish appropriate firewalls, or the latest such programming, to defend against harmful hackers. This needs a dedicated professional to spend some time being sure the compiler is safe from harm or from harming the dedicated standalone or through any servers. At Wikiversity volunteers and I will be setting up input, compiling, execution, and outputting methods for ourselves and potential users.

Compilers for many programming languages already exist on tool labs but direct or round about access from students to run test or learning programs does not. The first activity is to set up a reliable and protected student access.

### Budget[edit | edit source]

* Wikiversity and Labs compiler/interpreter installation or standalone setup, Marshallsumter: 10,000 USD
* Potential compilers (if not free), firmware (equipment simulations that can be directed with software programs from students) or hardware (such as a standalone computer); as, generally speaking, reliance on WMF technical staff may make an IEG grant ineligible, and this may be even more the case for any integration with the mediawiki core (requires code review), hiring an expert for such a position, who can set up a compiler and firewalls, using Wikimedia servers through a volunteer project called Labs: https://wikitech.wikimedia.org/wiki/Main_Page, with responsibility for managing that person and planning ongoing maintenance: 20,000 USD

### Community engagement[edit | edit source]

Like Wikipedia, Wikiversity resources such as lectures, articles, and courses are picked up by web searches. These bring in the greater student community. Advertising the courses at the Wikiversity School of Computer Science brings in part of the local community. Short articles in newsletters such as "This Month in Education" help to engage the greater WMF community. Once even one programming lesson is up and running, at least a dozen potential users will visit it on that day (based on hit counter statistics for individual pages in the Wikiversity course Principles of radiation astronomy). Appropriate advertisement on Wikipedia may bring in more participants.

### Sustainability[edit | edit source]

Each new, or older, computer programming language will need a compiler or interpreter uploaded somewhere. Hopefully, these can then be uploaded either directly at Wikiversity or through an lab. As programs are written to use or test each language, potential resources such as research graphs of results, student projects, or graphic images, may reach main space.

### Measures of success[edit | edit source]

We have a successful and reliable hit counter. Resource numbers will increase. More advanced but fairly simple research or analytical programs will produce results to be used in resources. Need target-setting tips? Note: in addition to your project-specific measures of success, you will also be asked to report on some Global Metrics at the end of your final report. Please keep this in mind as you plan, and we'll support you as you begin your project.

## Get involved[edit | edit source]

### Participants[edit | edit source]

Marshallsumter: I have programming experience in about a dozen computer languages, albeit some (such as FORTRAN and Basic) are probably considered arcane and dinosauresque. This includes setting up compilers or interpreters in dedicated mini-mainframes or desktop computers. The same applies to writing very small programs to learn a language on up to computer simulations using Monte Carlo techniques and analytical models based on diffusion principles to predict oxygen in-diffusion for high-temperature superconductors (published).

### Community Notification[edit | edit source]

Please paste links below to where relevant communities have been notified of your proposal, and to any other relevant community discussions. Need notification tips?

* Wikiversity Colloquium
* School of Computer Science at Wikiversity
* Wikimedia Forum to locate a possible expert. Proposal has been clarified to mean expert, not staff, and Labs.

### Endorsements[edit | edit source]

Do you think this project should be selected for an Individual Engagement Grant? Please add your name and rationale for endorsing this project in the list below. (Other constructive feedback is welcome on the talk page of this proposal).

* Community member: add your name and rationale here.

I can endorse as an educator who believes strongly in open source teaching and uses it almost exclusively in every course I teach. I can participate by writing educational material for students using the on-line compiler. I can also task college engineering students with developing simple and well-documented codes to college engineering students (I like to learn a new language by starting with such codes.) Leave a note on my user talk page if you need me urgently. Otherwise we should perhaps continue the discussion here in order to generate more interest within Wikiversity.--guyvan52 (discuss • contribs) 11:12, 21 September 2014 (UTC) [copied from the Wikiversity Colloquium in response to my topic message for this proposal.] Marshallsumter (talk) 20:57, 21 September 2014 (UTC)

## Reviewer's comments[edit | edit source]

* "I think this proposal lacks sufficient details about what is actually being proposed and how it is intended the problem be fixed. I find lines like "Potential firmware or hardware: 10,000 USD" to be rather concerning (What does firmware have to do with any of this?)." Bawolff (talk) 17:46, 26 September 2014 (UTC)
* "I think the word you're looking for is virtualization rather than firmware." Bawolff (talk) 20:23, 19 October 2014 (UTC)
* "I would add also my request. May you clarify how you will distribute these compilers and how you solve the problem of licenses (if they are not free). In addition have you considered the problem of security?" --Ilario (talk) 21:17, 10 October 2014 (UTC)
* "I still find this proposal extremely short of details in what you are actually planning to do. There's no milestones, or a concrete criteria for what the finished product would look like (Being popular, well nice, is not a concrete criteria, as that can happen even if you don't do this project, and it might not happen even if this project is successfully completed). For example, its not even clear if you are planning to set up a web interface to various compilers/interpreters so that a user could have an ajaxy web interface, where in one text box they simply type out a program, and in another text box some text to feed into stdin, and see what comes out stdout or if you are more simply just planning to have a server where students can ssh into to play with compilers. If the latter is the case, can't one just use the already existing tools-dev.wmflabs.org (maybe that's stretching scope somewhat, but probably not that much), which already has compilers/interpreters for C, C++, java, fortran, java, python, perl, bash, awk, javascript (node.js), tcl, assembly, php, ruby, c# (mono), lisp (if you count emacs), go and probably others." Bawolff (talk) 20:23, 19 October 2014 (UTC)

## External links[edit | edit source]

* Grants:IEG/Dedicated Programming Compiler

* v
* t
* e

Major fields of computer science

Pure Mathematics|

* Mathematical Logic
* Set Theory
* Number Theory
* Graph Theory
* Type Theory
* Category Theory
* Numerical Analysis
* Information Theory
* Combinatronics
* Boolean algebra

Theory of computation|

* Automata theory
* Computability theory
* Computational complexity theory

Algorithms, Data structures|

* Analysis of algorithms
* Algorithm design
* Computational geometry

Programming languages, Compilers|

* Parsing
* Interpreters
* Procedural programming
* Object-oriented programming
* Functional programming
* Logic programming
* Programming paradigms

Computing|

* Concurrent computing
* Parallel computing
* Distributed computing
* Multiprocessing
* Grid computing
* Concurrency control

Software engineering|

* Requirement analysis
* Software design
* Computer programming
* Formal methods
* Software testing
* Software development process

System architecture|

* Computer architecture
* Microarchitecture
* Operating Systems

Topic:Telecommunication, networking|

* Routing
* Network topology
* Cryptography

Databases|

* Database management systems
* Relational Databases
* Structured query language
* Transaction processing
* Database indexes
* data mining

Artificial intelligence|

* Automated reasoning
* Computational linguistics
* Computer vision
* Evolutionary computation
* Expert systems
* Machine learning
* Natural language processing
* Robotics

Computer graphics|

* Visualization
* Computer animation
* Image processing

Human–computer interaction|

* Computer accessibility
* User interfaces
* Wearable computer
* Ubiquitous computing
* Virtual reality

Computational science|

* Artificial life
* Bioinformatics
* Cognitive science
* Computational chemistry
* Computational neuroscience
* Computational physics
* Numerical analysis
* Symbolic computation

* v
* t
* e

Income

Activities|

Articles|

* Dominant group/Economics
* Dominant group/Business

Courses|

* Econometrics
* Elements of terminology
* Introduction to Microeconomics
* Principles of radiation astronomy

Fields|

* Astronomy
* Education
* History
* Music
* Religion
* Science
* Sociology

Lectures|

* Economic geology
* Economics
* The Effects of Taxation
* Incomes
* Interest
* Investing
* Markets
* Plagiarism
* Policy
* Proof of market
* Proof of principle
* Proof of process
* Proof of product
* Proof of production
* Proof of relevance
* Stocks
* Trading
* Universal translator
* Usurpation

Lessons|

* Dominant group/Metagenome/Term test
* Dominant group/Sociology/Term test

Lists|

* Cosmic View: Glossary of Terms

Problem sets|

Projects|

* Astronomy Project
* Dominant group
* Experimental aircraft
* Gene project
* Universal translator

Proposals|

* Coronal clouds
* Dedicated Programming Compiler
* Broader impacts
* Data Management Plan
* Dominant group
* Intellectual Merit
* Letter of intent
* Project Description
* Project Summary
* Proposal Certifications
* Proposed Budget
* Gene project
* Resources favored by women
* Stellar surface fusion
* X-ray classification of stars
* X-ray trigonometric parallax

Quizzes|

* Control groups/Quiz
* Economic geology/Quiz
* Economics/Quiz
* First astronomical X-ray source/Quiz
* Funding/Quiz
* Gift economy/Quiz
* Incomes/Quiz
* Interest/Quiz
* Investing/Quiz
* Markets/Quiz
* Monopolistic practices/Quiz
* Plagiarism/Quiz
* Policy/Quiz
* Proof of concept/Quiz
* Proof of market/Quiz
* Proof of principle/Quiz
* Proof of process/Quiz
* Proof of product/Quiz
* Proof of production/Quiz
* Proof of relevance/Quiz
* Proof of technology/Quiz
* Stock/Quiz
* Trading/Quiz
* Universal translator/Quiz
* Usurpation/Quiz

Schools|

* Business
* Economics
* Language and literature
* Law
* Linguistics
* Media Studies

Topics|

* Foreign Language Learning

Learn more about Dedicated Programming Compiler

|

*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template