Skip to content

50.054 - Introduction

Module Description

This course aims to introduce a new programming paradigm to the learners, Functional programming and the suite of advanced language features and design patterns for software design and development. By building on top of these techniques, the course curates the process of designing a modern compiler, through syntax analysis, intermediate presentation construction, semantic analysis and code generation. More specifically the course focuses on the application of program analysis in areas of software verification, program optimization and software security analysis.

Module Learning Objective

By the end of this module, you should be able to

  • Comprehend and reason functional programming
  • Develop functional program to solve real world problem
  • Identify the major components in compiler development
  • Explain and implement different techniques and algorithms used in compiler development

What is compilation?

Program compilation is a process of mapping a source program into a target program. The source program is often generated by programmers or some higher level design processes and its structure ressemble the design, the specification or the algorithm. The target program is meant to be executed in the target platform and is generated based on the specific target environment requirement, e.g. hardware requirement, code size requirement and etc.

A compiler is a software system that manages the program compilation process.

What properties a good compiler should posess?

An ideal compiler should be:

  1. Correct. The produced target program should behave the same as the the source program.
  2. Reliable. Any errors that could arise in the program should be detected and reported before execution.
  3. Generating Efficient Code. The produced target program should be optimized and running efficiently in the target platform.

Some optional properties,

  1. User friendly. The error report should be comprehensive.
  2. Intelligent. Helps to automate some of the repetitive tasks.
  3. ...