Hello,

I am a student and would like to participate in the GSOC program. I would 
like some feedback on these project ideas:
* Idea 1: A Clojure compiler based on fonc/cola
The CoLa Framework(http://piumarta.com/software/cola/) seems like a 
promising basis for a native Clojure compiler. I have previously tinkered 
with a simple implementation of Java based on CoLa(
http://www.hpi.uni-potsdam.de/hirschfeld/projects/delmdsoc/index.html). The 
potion language, which is currently maintained by Mr. Fogus is also based 
on some cola code.

** Brief Explanation:
Write a Clojure-compiler for cola. The compiler should generate native 
code, but allow interactive/incremental development. Maybe write a C FFI.

** Expected Results:
-the persistent Clojure data structures in cola
-a Clojure reader in cola
-a compiler from Clojure data structures to cola

The cola compiler should pick up from there and do the native code 
generation.

** Knowledge Prerequisite:
CoLa or alternatively C, Scheme and smalltalk. Parsing and compiler 
construction.

** Skill Level:
Can somebody with cola experience comment on the feasibility of this? It 
seems doable to me, but I do not know if the time is enough or whether 
there are any mentors familiar with cola.


* Idea 2: Forward- and Reverse-mode autodiff
There are currently 3 ways to generate a program for function that computes 
the derivative of another function:
-Symbolic: Take the source code of a program and generate the source code 
of the program that computes the derivative.
-Numeric: Take a small epsilon and compute (f(x+epsilon)-f(x))/epsilon
-Automatic: Trace the execution of a program, replace the calculations with 
calculations for the derivative.

Numeric differentiation is inexact, and Symbolic differentiation is tricky 
because of unpredictable control flow.

** Brief Explanation:
An autodiff library for clojure would be very valuable for machine learning 
and optimisation. At first we should implement forward-mode autodiff in 
Clojure, then reverse-mode autodiff. The implementation should be 
composable and avoid this bug: 
http://eprints.nuim.ie/566/1/Perturbation.pdf. Maybe it should be 
integrated with Incanter, so we can compute the derivatives of matrix 
operations quickly.

As a proof-of-concept, learning in SVMs or neural networks would be nice, 
because reverse mode autodiff is a generalisation of backprop.

** Expected Results:
A library with differentiation- and gradient- operators.

** Knowledge Prerequisite:
Some calculus.

** Skill level:
Easy to Medium.


Robert Pfeiffer

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to