Oracle Internship - Truffle language translator to LLVM bitcode for static analysis in Brisbane, Australia

Internship - Truffle language translator to LLVM bitcode for static analysis

Preferred Qualifications

The Program Analysis group at Oracle Labs, Australia offers a six-month, full-time internship starting in November or December 2017. The position will investigate the static analysis of highly dynamic languages such as Javascript, through integration with the Oracle GraalVM platform. Oracle Labs Australia is passionate about improving the quality of software and the productivity of developers. We research and develop new techniques in program analysis as it applies to a variety of domains, including bug-checking, security analysis, cyber security, productivity tools, testing, and more. We are best known for our research on static-code analysis that led to scalable and precise bug-checking algorithms embedded in the Oracle Parfait tool, which builds on top of the LLVM framework and is widely used throughout Oracle. For more information, visit


In this project, the successful candidate will develop an LLVM backend for Oracle GraalVM that will interface with Graal's intermediate representation (IR), and generate the semantically equivalent LLVM bitcode for that IR. The generated bitcode will be used as input for subsequent analysis by Parfait-style analysis, to effectively enable static analysis of languages supported by Graal (Javascript, Ruby, R, etc). Graal exposes the Truffle multi-language API that allows programming languages to efficiently target the Graal platform. This framework uses partial evaluation to derive from AST interpreters automatically optimized machine code. To find out more about Graal, visit


Oracle internships give students valuable industry experience and the chance to work on cutting-edge research projects with real-world applications.


Supervisors: Dr Cristina Cifuentes and Nathan Keynes


Cristina is the Director of Oracle Labs Australia and an Architect at Oracle. She is passionate about making programming languages more secure, to empower developers with the concept of "security for the masses".


Nathan is a Principal Research Engineer and is currently working on the Praline project to use static analysis to detect bugs and vulnerabilities in programs containing PL/SQL code.


About this position


Key Responsibilities:

  • Work independently and with guidance from your supervisors to ensure a successful outcome to the project.

  • Meet with your supervisors regularly for guidance and discussion about progress.

  • Give a presentation to the group on work undertaken.



  • Be currently enrolled in, or have immediately completed a Computer Science degree.

  • Have an excellent understanding of the C or C , and Java languages and practical programming skills.

  • Have a strong interest in Program Analysis and excellent software engineering skills.

  • Have a strong understanding of data-structures and algorithms and a basic understanding of compiler construction.

  • Have excellent problem solving skills.

  • Be experienced with Unix-based systems.

  • Demonstrate ability to work independently and collaboratively.

  • Have rights to work in Australia.

  • Desirably have experience with the Java Native Interface (JNI) and LLVM.



  • These positions are paid at current industry rates.

  • Ongoing learning is fundamental to our daily work to keep us at the cutting edge.

  • International speakers visit and present their research to us.


Apply to Juliette Hatton ( be sure to include all academic transcripts in your application.


The position will commence interviewing immediately and will remain open until filled.

Detailed Description and Job Requirements

This job code is utilized for the majority of our temporary hires. The individual is performing hourly job duties as defined under the Fair Labor Standards Act.

Job: Product Development

Location: AU-AU,Australia-Brisbane

Job Type: Temporary Employee Hire

Organization: Oracle