Teaching Responsibility

LJMU Schools involved in Delivery:

Computer Science and Mathematics

Learning Methods

Lecture

Practical

Module Offerings

5129COMP-SEP-CTY

Aims

The module’s aim is to provide an introduction to the concepts behind programming languages, along with an explanation of the underpinnings of programmable machines. It will also discuss and demonstrate a variety of programming languages across both Imperative and Declarative paradigms

Learning Outcomes

1.
Explain the key concepts in specifying and evaluating a programming language.
2.
Apply appropriate formal methods to specify a programming language
3.
Design and implement an interpreter/compiler for a simple imperative programming language
4.
Appraise Imperative and Declarative programming paradigms as an appropriate mechanism for a variety of problem domains

Module Content

Outline Syllabus:Abstract views of program execution: FSMs, the interlock machine Turing Machines; the computing machine; addition of configurable memory Defining and processing a language: Fundamental Language Theory: Grammars and Syntax Fundamental Compiler Theory: Lexical, Syntactical and Semantic Analysis Parse/syntax trees and binding Language Paradigms: Imperative vs Declarative Languages State transformations vs. Referential transparency How vs Why & why is this important?
Module Overview:
This module combines theory and practical work to familiarise a student with the fundamentals of programming languages and their compilation / interpretation for execution.
Additional Information:This module combines theory and practical work to familiarise a student with the fundamentals of programming languages and their compilation / interpretation for execution; culminating with the student specifying and designing their own basic imperative language. It will make use of programming-related skills from previous modules; particularly functional decomposition and basic data design. It will, in parts, reinforce and present alternative use cases for materials covered in Data Structures. The module will assume that the student is already with some fundamentals of imperative programming, namely: -variable declaration, state modification and scope. -how to design and write software that correctly uses sequential execution, branching, iteration and function-calling.

Assessments

Technology

Centralised Exam