Compilation, Optimization, and Metaprogramming
Project Description
This project is to learn about and investigate new ways of making programs as efficient as possible using automated and semi-automated techniques. The techniques we consider include traditional compiler optimization, customizable semi-automatic memory management schemes, code specialization, and metaprogramming. The idea is to let users express their programs using high-level languages which provide advanced programming abstractions, while still ensuring that efficient code is generated for running these computations.

REQUIREMENTS: Students applying to this project should have extensive programming experience and at least some experience in either functional programming or compiler design. For instance, a good way of obtaining this experience is to take the Principles of Programming Languages and/or Modern Compiler Design courses.
Supervisor
PARREAUX Lionel
Quota
4
Course type
UROP1000
UROP1100
UROP2100
UROP3100
UROP3200
UROP4100
Applicant's Roles
The applicant’s role will be to design and implement novel approaches to solve the problem described above.
Applicant's Learning Objectives
The applicant will read up on the state of the art, learning about various existing approaches in this field, depending on their specific preferences or interests. They will also learn to implement some of these techniques effectively. This will translate into widely applicable skills in software engineering and compiler research.
Complexity of the project
Moderate