Description

This course is a study of the state-of-art methodologies, tools, and techniques to perform automated program analysis for reliability, security and programmer productivity.

The aim of this course is to provide graduate students with knowledge and hands-on experience in (1) understanding the conceptual underpinnings of program analysis techniques and implementing them, (2) reading and critically evaluating research papers in this area, and (3) completing an independent research project which will involve synthesizing multiple analysis techniques and applying them to a real problem.

General Information

Meeting Times and Location
Tuesday/Thursday 10:30 AM to Noon, FSC 1002
Instructor
Karthik Pattabiraman (karthikp@ece.ubc.ca) - Send email only in emergencies
TA
Qining Lu (qining@ece.ubc.ca) - Send email only in emergencies

Announcements

Reminder: Final Project Presentations
12/10/14 2:30 PM

Hi all,

This is a reminder that the final project presentations will be held tomorrow morning (Dec 11th) from 8:30 AM to 12:15 PM, in KAIS 5505 (the conference room in the top floor of the Kaiser building). I'll provide coffee/tea/cookies. Remember, each presentation should be for no more than 20 mins at most + 5 mins Q&A. I'll also distribute forms to each of you to grade your peers on  Presentation (4), Technical content (3), and Innovation/Thoroughness (3).

It is very important that you come on time so that we can start and end on time. We'll have a 15 min break in between at 10:15 AM or so. See you then.

- Karthik

One problem in the code of assignment 2
10/16/14 8:26 PM

Modification needed for compiling assignment 2 code:

line 73:

AU.addRequired<DominatorTree>();

change to:

AU.addRequired<DominatorTreeWrapperPass>();

And,

line 123:

DominatorTree     &DT = getAnalysis<DominatorTree>();

change to:

DominatorTreeWrapperPass *DTWP = getAnalysisIfAvailable<DominatorTreeWrapperPass>();
DominatorTree& DT = DTWP->getDomTree();

Thanks,

Qining

Assignment 2 Released!
10/07/14 11:21 PM

Hi all,

Please check the course resources page to download the handout for assignment 2. You may need to start this assignment a little bit early than you expect as this time you are asked to write a "transforms" pass instead of an analysis pass. For "transforms" pass your code will modify the target program code to optimize it. Along with the great capability enabled by LLVM, you may need to debug your code much more carefully than the last assignment as you are modifying the target code directly. And you are recommended to run all the tests attached within the handout and make sure your code won't crash, e.g. segmentation fault. 

The due date for this assignment is Oct 28th 11:59PM.

Thanks,

Qining

Assignment 1 has been released
9/16/14 2:19 PM

Hi all,

The first coding assignment has been released.

Please check the "Resources" page and the "Homework" section to download the assignment 1. 

And please read the assignment1.pdf in the package carefully before you go to write the code.

The due date for assignment 1 is Sept 30th. Please email your code to me with "EECE571 Assignment 1" in email subject before 11:59PM of that date.

Thanks,

Qining

Google Calendar Link
9/09/14 2:52 PM

Hi all,

Here's a Google calendar with the due dates for all the assignments and projects for this course - feel free to subscribe to it. Thanks,

https://www.google.com/calendar/embed?src=s5899jqq7seict2mbm52v36bcc%40group.calendar.google.com&ctz=America/Los_Angeles

- Karthik

LLVM Installation
9/05/14 12:57 PM

Hi all,

Here are some tips for LLVM installation.

1. Follow the instruction at  http://llvm.org/docs/GettingStarted.html. This guide is for building the latest LLVM from source code, the current version is 3.5 and this is also the version we are going to use for the assignments.

2. Make sure you follow the instructions and installed the LLVM 3.5  LLVM 3.6 properly, LLVM is NOT Down Compatible. For those of you using other version of LLVM, please use the latest version. Headers and some classes are changed and code for previous version won't work for the latest version.

3. You will need gcc/g++ 4.7 or upper for building LLVM 3.5. Ubuntu 14.04 comes with gcc/g++ 4.8, so that you can create a Virtual Machine by Virtual Box to install the Ubuntu in the VM. For those of you do not want to use VM, you may need to upgrade your gcc/g++.

4. Building LLVM from source code requires at least 2GB memory, check the memory if you meet a linking failure or 'killed' failure.

5. Installing LLVM binaries ('make install') into system paths (e.g. /usr/bin) may need admin permission. You may avoid this by providing a "prefix" during the 'configure' step (the step before 'make') to let the LLVM binaries being installed to other directories.

6. The testing environment for the assignments will be: Ubuntu 14.04 + GCC/G++ 4.8 + LLVM 3.5.

PS: Currently, code for LLVM 3.2 has been proved not compatible with LLVM 3.6. The compatibility of LLVM 3.4 ~ 3.5 is unknown. But we recommend to use LLVM 3.6, the version you will install if you follow the GetStarted page.

Thanks,

Qining

Welcome to EECE571P
9/01/14 9:41 PM

Welcome to this course on advanced compilers ! We'll be using Piazza for this class so please take a few minutes to familiarize yourselves with it. We'll not use email, so please don't email the instructor or TA unless it's an emergency.

It is expected that you have good familiarity with C++ as this is the language we'll use for our assignments and projects. Also, if you like, you can explore the LLVM system as we'll be using LLVM for the assignments (and optionally the project too). See below:

http://llvm.org/

Thanks, and hope you have fun.

- Karthik

Staff Office Hours
NameOffice Hours
Karthik Pattabiraman
When?
Where?
Qining Lu
When?
Where?

Homework

Homework
Due Date

Lecture Notes

Lecture Notes
Lecture Date
Nov 25, 2014
Oct 28, 2014
Oct 21, 2014
Sep 25, 2014
Sep 18, 2014
Sep 16, 2014
Sep 4, 2014