UG3 Compiling Techniques University Homepage School Homepage School Contacts School Search UG3 Compiling Techniques 2017/2018 Previous year course content: 2016-17 webpage Assessment This is a courwork-only course with no exam. The coursework will consists of two assignments. The first one will be developing a compiler from scratch in Java, targeting a RISC instruction set architecture. The second assignment will be about implementing a compiler pass in an existing compiler infrastructure in C++ (LLVM). Your mark will simply be a function of the number of test programs your compiler is able to compile correctly. Your coursework will be assessed daily via an automated testing framework allowing you to always know how you are progressing. The coursework description is available here: 2017-18 Coursework instructions (on bitbucket) Deadlines Coursework Part 1: Thursday 12 October 2017, 4pm Coursework Part 2: Thursday 26 October 2017, 4pm Coursework Part 3: Thursday 16 November 2017, 4pm Coursework Part 4: Monday 15 January 2018, 10am Please note that for this course there is no possibility of submitting late without requesting an extension to the ITO beforehand. The mark will be determined by the version of your code present in your git repository (master branch) on the day/time of the deadline. Demo There will be a mandatory demonstration of your coursework taking place on Friday 17 November 2017. Timetable This module runs in Semester 1 and is taught by Christophe Dubach with LLVM lectures taught by Aaron Smith. The first lecture will be on Tuesday 19 Sep. 2017. Please note that the Tuesday lecture is 2 hours long. The schedule for the lectures is: Tuesday 09:00 - 10:50, 7 Bristo Square, Lecturer Theatre 2 Friday 09:00 - 09:50, 7 Bristo Square, Lecturer Theatre 2 There is one lab session of 2 hours per week accompanying these lectures starting in week 1. The first lab will be on Friday 22nd Sep. 2017. Friday 14:10 - 16:00, Appleton Tower 6.06 Getting help Piazza: The primary source of help will be through the Piazza online platform. Please enroll via this link. All questions should be asked on Piazza first before emailing the lecturer or any of the tutors unless it is a private matter. Office hours: Wednesdays, 10am-12pm, IF 1.12 If you are not able to attend, email Christophe to arrange for a meeting outside the office hours. Labs: Feel free to raise any questions regarding the lectures or coursework during the lab sessions. Course information Lecture notes Syllabus of this module 19 Sep. 2017 Lecture 1: Introduction 19 Sep. 2017 Lecture 2: The View from 35,000 Feet 22 Sep. 2017 Lecture 3: Lexical Analysis - An Introduction 26 Sep. 2017 Lecture 4: Automatic Lexer Generation 26 Sep. 2017 Lecture 5: Top-down Parsing 29 Sep. 2017 Lecture 6 : Dealing with Ambiguity + Bottom-up Parsing 3 Oct. 2017 Lecture 7 : Abstract Syntax 6 Oct. 2017 Lecture 8 : Semantic Analysis: Name Analysis 10 Oct. 2017 Lecture 9 : Semantic Analysis: Types 20 Oct. 2017 (given by Jose Cano) Lecture 10 : Introduction to Assembly 24 Oct. 2017 (given by Jose Cano) Lecture 11 : Introduction to Code Generation 31 Oct. 2017 Lecture 12 : Code Shape, Memory management and Function calls 02 Nov. 2017 Lecture 13: Instruction Selection (peephole matcher) 07 Nov. 2017 Lecture 14: Instruction Selection (tree-based matcher) 10 Nov. 2017 Lecture 15: Register Allocation 14 Nov. 2017 LLVM - 1: Intro 17 Nov. 2017 LLVM - 2: Writing a pass 21 Nov. 2017 LLVM - 3: Dead code elimination LLVM - 4: Liveness analysis 28 Nov. 2017 LLVM - 5 1 Dec. 2017 Compiler quizz Coursework 2017-18 Coursework instructions (on bitbucket) TBC Course information http://course.inf.ed.ac.uk/ct/ Informatics policies Late coursework policy Academic conduct policy Christophe Dubach, christophe.dubach@ed.ac.uk. Home : Teaching : Courses : Ct Informatics Forum, 10 Crichton Street, Edinburgh, EH8 9AB, Scotland, UK Tel: +44 131 651 5661, Fax: +44 131 651 1426, E-mail: school-office@inf.ed.ac.uk Please contact our webadmin with any comments or corrections. Logging and Cookies Unless explicitly stated otherwise, all material is copyright © The University of Edinburgh