2. Review today’s
white papers and
related articles.
Study the existing
published open
source code.
See how it works!
Try out the Deep
Coder to solve a
real situation.
Figure out the
limitations of the
current result.
Further solving...
Interpret output
into machine
runnable code.
Further works!
EXPERIMENTAL
RESEARCH
3. DEEPCODER
KEY CONCEPT
THE DEEPCODER’s KEY CONCEPT
The main objective of DeepCoder is to solve a problem that takes the name of
Inductive Program Synthesis (IPS): given a pair of input-output, the purpose is
to generate high-level source code, which produces exactly the associated
output from input previously given.
There are two main techniques that arise in solving it:
1. Using Deep Learning to search and sort the functions that will lead to
the desired result, among the various possible functions.
2. Using Domain Specific Languages (DSLs) to restrict the complicated
datatypes and the sophisticated operations, loops or other flow controls.
4. DEEPCODER
NEURAL NETWORK
THE DEEPCODER’s ENGINE
The heart of DeepCoder consists of an artificial neural network with feed-
forward architecture consisting of 3 layers hidden by 256 neurons per layer ,
with a sigmoid activation function .
5. DOMAIN SPECIFIC
LANGUAGE (DSL)
THE DEEPCODER’s SUPPORTED DSL FUNCTIONS
Input Function Transformation and Aggregation Function
read list sum reverse
read int count take
zip with head
maximum last
minimum access
map drop
scanl1 sort
filter
Consist of 17 domain specific functions
6. Review today’s
white papers and
related articles.
Study the existing
published open
source code.
See how it works!
Play around with
Deep Coder to
solve a real
situation.
Figure out the
limitations of the
current result.
Further solving...
Interpret output
into machine
runnable code.
Further works!
EXPERIMENTAL
RESEARCH
7. TENNIS MATCH
EVALUATION
GENERATE A DSL PROGRAM
In a tennis match, the winner is the side that wins more than half of the sets,
and the match ends as soon as this is achieved. Write a program from a set of
sample inputs and outputs to know how many wins of the 1st player?
8. TENNIS MATCH
EVALUATION
GENERATE A DSL PROGRAM
In a tennis match, the winner is the side that wins more than half of the sets,
and the match ends as soon as this is achieved. Write a program from a set of
sample inputs and outputs to know how many wins the 1st player has?
9. TENNIS MATCH
EVALUATION
GENERATE A DSL PROGRAM
In a tennis match, the winner is the side that wins more than half of the sets,
and the match ends as soon as this is achieved. Write a program from a set of
sample inputs and outputs to know how many wins the 1st player has?
10. Review today’s
white papers and
related articles.
Study the existing
published open
source code.
See how it works!
Try out the Deep
Coder to solve a
real situation.
Figure out the
limitations of the
current result.
Further solving...
Interpret output
into machine
runnable code.
Further works!
EXPERIMENTAL
RESEARCH
11. TENNIS MATCH
EVALUATION
GENERATE A MACHINE RUNNABLE PROGRAM
DSL program is a pseudo code that generated by DeepCoder. In order to run
this program likely generated by a software developer. It’s need to be
interpreted into machine runnable code. In this scope, it’s translated into a
Node program.
I wrote a Node tool called deep-coder-codegen to translated a DeepCoder’s
DSL program into a Node program with ES6 JavaScript syntax.
12. Review today’s
white papers and
related articles.
Study the existing
published open
source code.
See how it works!
Try out the Deep
Coder to solve a
real situation.
Figure out the
limitations of the
current result.
Further solving...
Interpret output
into machine
runnable code.
Further works!
EXPERIMENTAL
RESEARCH
13. TENNIS MATCH
EVALUATION
GENERATE A DSL PROGRAM
In a tennis match, the winner is the side that wins more than half of the sets, and
the match ends as soon as this is achieved. Write a program from a set of sample
inputs and outputs to know how many different wins of the 1st player?
3
2
2
-1
2
14. DEEPCODER
PROS & CONS
DEEPCODER vs. ME
In order to evaluate the Pros and Cons of DeepCoder, we compare some metrics
with a real life software programmer within the same domain specific context.
Items DeepCoder Me
Cost Of Living 50 € (t2.medium) 1500 € (f2.medium)
Performance 1 second/program 3600 seconds/program
Productivity 1000 programs / sec 8 programs / day
15. DEEPCODER
REFERENCES
THE DEEPCODER’s REFERENCES
1. White paper: https://openreview.net/pdf?id=ByldLrqlx
2. DeepCoder Source Code: https://github.com/HiroakiMikami/deep-coder
3. Deep Coder CodeGen: https://bitbucket.org/cuongquay/deep-coder-codegen/src/master/