Follow us:
  • Follow us on Facebook
  • Follow us on Twitter
  • Follow us on Linked In
Student Login

  New Student Signup  |  Lost Password

S'ware Eng - Optimisations for experimental Datalog compiler

Oracle Labs #3

Return to List

Open Posted: 12 May 17. Closes: 30 May 17 Available: Semester 2 (Jul - Nov)

Semester 2 2017 + summer vacation + Semester 1 2018 

Note: students must be able to enrol in thesis/project spread across Semester 2 + 1; as well available whole of summer vacation. These are requirements for this project.

This project will suit final year / Masters students in Software Engineering / Computer Science / IT - with strong programming skills (C++) and a solid understanding of data structures and algorithms (Grade 6 or 7 in relevant subject/s). A strong interest in Program Analysis and software engineering principles is also needed.

The successful applicant will receive a $9,000 scholarship + academic credit (24cps - QUT; 4 units - UQ).  You must be available to work on the project onsite for 2 days/week during semester 2 + 1; plus 5 days/week over the entire summer vacation period.

APPLICANTS NOTE: you must include your academic transcript/s inside your resume (undergrad + Masters if applicable) - before Oracle Labs will consider your application. Also include your student number.

Location: Brisbane CBD QLD
Categories: Information Technology, Electrical Engineering

Project Background / Description

Oracle Labs has developed an experimental Datalog compiler that enables static program analyses to be written in a high-level declarative language, which are then compiled down to the equivalent LLVM-based C++ code that integrates directly into the Parfait static code analysis framework, and can then be run over the target programs. Subsequent work added custom predicates to work directly with paths and path conditions in order to take advantage of Parfait’s underlying path-sensitive dataflow framework, which demonstrated the ability to generate analyses on par with hand-written C++ analyses, with less than 10% of the code required.

The performance of the generated code for more complex Datalog however could be significantly improved, as only basic brute-force optimisations have been implemented.

For this project, we would like to start implementing some of the low-hanging fruit in terms of available optimisations, including simple pattern-match transformations, selective caching of intermediate results, and simplifications based on the data structure invariants.


Oracle offers a comprehensive and fully integrated stack of cloud applications, platform services, and engineered systems.  With more than 400,000 customers—including 100 of the Fortune 100—in more than 145 countries, Oracle provides a complete technology stack both in the cloud and in the data centre.

Oracle’s industry-leading cloud-based and on-premises solutions give customers complete deployment flexibility and unmatched benefits including application integration, advanced security, high availability, scalability, energy efficiency, powerful performance, and low total cost of ownership.

For more information about Oracle, visit

Oracle Labs

Oracle Labs is the research division of Oracle.  It focuses on applied research to produce new technologies of interest to the company.

Oracle Labs Australia (, based in Brisbane, specialises in Program Analysis in a variety of domains, including bug-checking, productivity tools, security analysis, testing, and more. The Brisbane team hit the headlines with its research on static code analysis that lead to scalable and precise bug-checking algorithms embedded in the Parfait tool.

How Oracle helps CEED students

We link you up with an experienced supervisor on the Brisbane team. They will work closely with you, helping you grow your skills-really practical skills you can put to work in real-world situations.

Objectives / Tasks / Project Outcomes

  • Scope the project based on interests/strengths and the requirements of Oracle Labs;
  • Evaluate current generated C++ and determine applicable optimisations;
  • Design and implement extensions to the compiler to improve support for inter-procedural analysis;
  • Write a detailed report on work undertaken
  • Given a presentation to the group on work undertaken

Skills / Experience Required

  • Compilers subject completed or equivalent background
  • Excellent academic results
  • Strong interest in Program Analysis and software engineering principles
  • Strong understanding of data structures and algorithms
  • Excellent problem-solving skills
  • Experience with Unix-based systems
  • Ability to work independently as well as in small groups

Return to List

Subscribe to e-newsletter