[llvm-dev] EuroLLVM BoF session: Compilers in education

Roel Jordans via llvm-dev llvm-dev at lists.llvm.org
Wed Mar 2 04:54:48 PST 2016


Hi David,

Great that you're joining as well.  I'd like to hear from your student 
about his experiences, that sounds interesting.

In our course we currently have three main exercises:
- With the AVR backend we have an exercise that fixes some bits of 
instruction selection and adds support for GCC's 
__builtin_avr_delay_cycles intrinsic so that the students can improve 
the code generation for the blinking LED example program.

- In the optimization layer we have an exercise with code analysis, 
estimating instruction-level parallelism by implementing a list 
scheduling algorithm at the IR level.

- Using the compiler to get a small image processing application to 
optimize efficiently.  The main goal here is to get insight in the 
autovectorization capabilities of compilers and what needs to be done to 
allow the compiler to efficiently optimize C code.

I'll make sure to bring some examples also of these assignments.  For us 
the assignments make up 40% of the mark and we plan to have an 
interactive exam for the remaining 60%, in parallel there's a few bonus 
assignments which can (in total) give up to 20% of compensation credits 
for those who ran into the steep learning curve of the assignments.

  Roel



On 02/03/16 10:37, David Chisnall wrote:
> On 1 Mar 2016, at 16:27, Roel Jordans via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>>
>> - Would you be interested in attending this session?
>
> Yes, I’m looking forward to it.
>
>> - For industry people:
>> * what kind of skills would you like your future (or current) employees to have?
>> * do you have any educational materials you would be willing to share?
>> - For other educators: what kind of topics do you cover in your lectures?
>> * would you be interested in presenting something about your approach?
>
> I’d be happy to talk briefly about the course that I teach, which is the Masters’ compiler course at Cambridge.  I have some resources online:
>
> http://compilerteaching.github.io
>
> The focus of the course is on real problems and techniques for late-bound dynamic languages (things a bit like JavaScript and parallel languages (things a bit like OpenCL C / CUDA).  The students have to do three shortish exercises.  The first is a small amount of analysis, the second two each involve one of the toy languages: typically something like adding something like polymorphic inline caching or type specialisation to MysoreScript (a milder, less bitter JavaScriptl-like language) and adding either automatic paralellisation or vectorisation to the cellular automata DSL (which has an mostly parallel abstract machine, but a reference implementation that is purely sequential).  They then have to do a miniproject (80% of the mark, producing something in the structure of a research paper) on something real.  One of my students will be at EuroLLVM presenting a poster about his miniproject, so he can talk about what he’s learned.  In previous years I’ve had people do things like 
adding small integer support to Pyston, evaluating the LLVM code generation of barriers on ARM (EuroLLVM 2014), or optimising memory allocation for the PImpl pattern (EuroLLVM 2015).
>
> David
>


More information about the llvm-dev mailing list