Secure Software Engineering (TBC)

Course title and code to be confirmed. Course information updated as of March 2022. Course InformationIn this module, students will learn about data representation, programming and compilation. In the first part, we will learn how binary is used to encode values (data) and instructions (code). We will then learn how to create complex data types and how object oriented programming works behind the scenes. In the second part, we will work on the different aspects of compilation, including lexical and syntaxic analysis, parsing and programming language design.Students will complete four small projects (2 individual and 2 group assignments) about memory management in C, C++, and compilation (lexical and syntaxic analysis and parsing).By gaining this knowledge, students will be able to understand how programming languages are designed.Pre-requisites 10.014 Computational Thinking for Design Knowledge of Python Learning ObjectivesAt the end of the term, students will be able to: Program in C and C++ Design a compiler for an imperative programming language Understand how data/instructions are stored and represented in the computer’s memory Understand the link between imperative and object-oriented languages Understand the compilation process Measurable Outcomes Understand how memory is used to store data and instructions on a computer Ability to program in C Understand the imperative programming paradigm Understand the compilation process Ability to learn any imperative programming language Topics Covered Binary Operations Data Representation C programming C++ programming Memory management Compilation Pre-processing & lexical analysis Top-down and bottom-up parsing Semantic analysis Course Instructor(s) Prof Simon Perrault Image Credit