EuroLLVM BoF session: Compilers in education

*Vivek Pandya*

Send llvm-dev mailing list submissions to
        llvm-dev@lists.llvm.org

To subscribe or unsubscribe via the World Wide Web, visit
        llvm-dev Info Page
or, via email, send a message with subject or body 'help' to
        llvm-dev-request@lists.llvm.org

You can reach the person managing the list at
        llvm-dev-owner@lists.llvm.org

When replying, please edit your Subject line so it is more specific
than "Re: Contents of llvm-dev digest..."

Today's Topics:

   1. EuroLLVM BoF session: Compilers in education
      (Roel Jordans via llvm-dev)
   2. Problem with mingw32 DLL build (Chandler Carruth via llvm-dev)
   3. Re: [GSoC 2016] Code Generation Improvements task
      (vivek pandya via llvm-dev)
   4. Re: RFC: Add bitcode tests to test-suite
      (Mehdi Amini via llvm-dev)
   5. Re: Compiler-RT cmake building (Alexey Samsonov via llvm-dev)
   6. Re: Compiling for AArch64: CommandLine Error: Option
      'aarch64-branch-relax' registered more than once!
      (Kai Nacke via llvm-dev)

----------------------------------------------------------------------

Message: 1
Date: Tue, 1 Mar 2016 17:27:40 +0100
From: Roel Jordans via llvm-dev <llvm-dev@lists.llvm.org>
To: <llvm-dev@lists.llvm.org>
Subject: [llvm-dev] EuroLLVM BoF session: Compilers in education
Message-ID: <56D5C2FC.40606@tue.nl>
Content-Type: text/plain; charset="utf-8"; format=flowed

Hi all,

I'm organizing a BoF session during the upcoming EuroLLVM developers
meeting. As the subject of this message already shows, this session
will be on compilers in education. I'm currently looking for both
participants to the discussion and input for the actual program of the
session. I've already got some ideas which I'll introduce below.

At our university, we mostly come from a hardware and processor design
background. In the past we managed to design all kinds of crazy
architecture ideas and, since we could program them by hand for our
demonstration cases, we usually assumed that compilers could just 'do
the trick'. However, over the years we learned that this usually wasn't
the case. Looking around for what was actually being taught in compiler
design we found that the course at our university had been teaching
mostly the classical frontend parts (parsing etc) and was discontinued
several years ago. We decided it was time for us to step up and start
teaching our students again what is and isn't possible in compilers.
This time, also with extensions into the layers that relate more closely
to the hardware so that the course would match our processor
architecture backgrounds more closely.

In general, the contents of this course are more or less as follows:
  - Backend organization (optimizations, lowering, scheduling, register
allocation)
  - Code optimization (code analysis, loop optimizations, auto
vectorization, Polly)
  - Using the compiler (writing optimizer friendly code)
  - Heterogeneous systems and high-level languages (OpenCL, OpenMP, Halide)

Looking further we also found that there aren't many courses that cover
these topics (while we think that they should be interest to the
companies hiring our students).

During this BoF, I plan to introduce the topics which we now cover in
our course and the assignments that we give to our students to go with
that.

My long term goal is to make most of the materials for this course
available to interested parties. One idea was to transform this into
some kind of MOOC structure when after we get the lectures tested on our
own students (currently there are some 70 students attending this
course). We've already automated much of the testing and grading for
the exercises (though improvement is still possibly there).

So, my questions to you:
- Would you be interested in attending this session?
- 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?
- And in general: are there any other things you think that should be
discussed?

Ok, that's it for now. I've already heard from a few people that they
would be interested but I'd love to get some more input!

This is very great idea to make student understand and experiment with LLVM
and related technology. It would be great if this is converted in to a MOOC
and hosted on some web platform so that people like me ( remote location )
can access those materials and attempt assignments.

Sincerely,
Vivek