UG3 Compiling Techniques University Homepage School Homepage School Contacts School Search UG3 Compiling Techniques 2018/2019 Previous year course content: 2017-18 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 the MIPS 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: 2018-19 Coursework instructions (on gitlab) Deadlines Coursework Part 1: Thursday 11 October 2018, 11am Coursework Part 2: Thursday 25 October 2018, 11am Coursework Part 3: Thursday 15 November 2018, 11am Coursework Part 4: Monday 14 January 2019, 10am (no extension possible!) 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 Thursday 29 November 2018. 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 18 Sep. 2018. Please note that the Tuesday lecture is 2 hours long. The schedule for the lectures is: Tuesday 09:00 - 10:50, David Hume Tower, LG.11 Friday 09:00 - 09:50, David Hume Tower, LG.11 There is one lab session of 2 hours per week accompanying these lectures starting in week 1. The first lab will be on Thursday 20th Sep. 2018. Thursday 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-11am, 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 18 Sep. 2018 Lecture 1: Introduction 18 Sep. 2018 Lecture 2: The View from 35,000 Feet 21 Sep. 2018 Lecture 3: Lexical Analysis - An Introduction 25 Sep. 2018 Lecture 4: Automatic Lexer Generation 25 Sep. 2018 Lecture 5: Top-down Parsing 28 Sep. 2018 Lecture 6 : Dealing with Ambiguity + Bottom-up Parsing 2 Oct. 2018 Lecture 7 : Abstract Syntax 5 Oct. 2018 Lecture 8 : Semantic Analysis: Name Analysis 9 Oct. 2018 Lecture 9 : Semantic Analysis: Types 12 Oct. 2018 Lecture 10 : Introduction to Assembly 16 Oct. 2018 Lecture 11 : Introduction to Code Generation 23 Oct. 2018 Lecture 12 : Code Shape, Memory management and Function calls 2 Nov. 2018 Lecture 13: Instruction Selection (peephole matcher) 6 Nov. 2018 Lecture 14: Instruction Selection (tree-based matcher) 9 Nov. 2018 Lecture 15: Register Allocation 13 Nov. 2018 LLVM - 1: Intro 13 Nov. 2018 LLVM - 2: Writing a pass 16 Nov. 2018 LLVM - 3: Iterating and Casting 20 Nov 2018 LLVM - 4: Dead code elimination 23 Nov. 2018 LLVM - 5: Liveness Analysis 29 Nov. 2018 Mandatory demo 30 Nov. 2018 Compiler quizz (game) Coursework 2018-19 Coursework instructions (on gitlab) 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