Projects

Besides a presentation, you should perform a small experimental research project.

Procedure

  1. Choose a problem to work.
  2. Submit your research proposal to me, no later than noon 1/12.
  3. Submit an intermediate report, no later than noon 22/12.
  4. Submit a report, no later than noon 26/1.

Research proposal

The aim of this project is to perform an experimental study of the language you have chosen. In your proposal, please use the following format:

  1. Background – what language will you be using? Provide some background about what sets this language apart from other programming languages.

  2. Problem – what experiment do you wish to perform? Typically, you should think of studying how concepts or ideas from one language can be transported to your language of choice:
    • How can we embed a domain specific languages for X in language Y?
    • Or how does language Z handle support metaprogramming/concurrency/…?
    • How can we port library L from language X to this new setting? What challenges do we expect to encounter?
    • How can we use language X for parallelization of algorithms Y and Z? What problems did we encounter?

    The key to choosing a good problem is identifying a problem that is well-defined enough that you can make progress in a few weeks time, but not so open ended that you expect to get lost. Ideally, you should try to approach this project like a science experiment – where you clearly define upfront what you aim to measure and how you intend to measure this. Doing so will help keep you focussed and reduce the risk of failure.

  3. Methodology – provide a detailed description of what it is that you would like to develop. What are your expected outcomes? What risks can you identify? What contingency plans can you make if things do not work out?

  4. Planning – how can will you translate the steps you identified in the previous section to a concrete planning? Who will work on what?

I expect the proposal to be about 5 pages long, depending on formatting.

Intermediate report

The aim of the intermediate report is to give a progress update on your work so far and evaluate how you have diverged from your original aims. In this report, please present:

  1. Your original research question, methodology, and planning – these can be lifted from your research proposal.

  2. What you have achieved so far – give a brief summary of your results, code developed and examples that you have implemented.

  3. Timeline – are you still on track? How will you adapt your original timeline to account for new insights?

Please be sure to include a link to a repository containing all the code that you have developed so far.

I expect the report to be about 5 pages long, depending on formatting.

Project report

Besides these issues, the final report should also document your results. Some of the text from your research proposal can probably be reused. I’d suggest the following format:

  1. Problem – what experiment have you performed? Give some background on the language you’ve used and academic context of the problem you have tackled.

  2. Methodology – What outcomes did you expect in your proposal? How did you plan your project?

  3. Results – What have you managed to achieve? How did you need to adjust your original problem and planning?

  4. Reflection – What went well or better than expected? What problems did you encounter?

  5. Appendix – Please provide a link to any code you wrote, together with a README outlining the directory structure and pointing out the key files to inspect.

Finally, I will be running these reports through our plagiarism detection suite. Please be explicit about any code or text that you have used in your project that you found online.

I expect the final report to be about 15-20 pages long, depending on formatting.