|Semester 2 Credit Value:||10|
Programming languages come and go - if you make a career in computing, there is no doubt that you will have to learn languages which do not even exist today. (In addition to literally thousands of general purpose languages, there are those tailored for specific applications like virtual reality, text layout, robotics, ...) Sadly, many languages embody one new idea (e.g. objects, remote execution) but are significantly *worse* than their predecessors in other respects.
The principal aim of this module is to communicate ways of understanding and documenting the key ideas in a language. The material should equip you to make sense of the many languages you will meet in your career. If you design new languages, they will benefit from you being able to manipulate the key concepts.
Introduction - syntax versus semantics
Syntax - 2 weeks (concrete versus abstract; context conditions).
Semantics (meaning) - 8 weeks
(Focusses on the "Structured Operational Semantics" technique.)
Revision/other approaches - 2 weeks.
Covering large definitions (PL/I, Ada, Java) and different (to SOS) approaches
To be able to:
- distinguish between syntax and semantics (and the subsidiary notions like context conditions)
- identify the need for an abstract syntax and context conditions.
- identify the different ways of documenting the semantics of programming languages.
- distinguish operational semantic descriptions
To be able to:
- read a large language definition and understand its consequences
- write and change definitions of smaller languages that you might need to design in your career
|Graduate Skills Framework Applicable:||Yes|
|Guided Independent Study||Assessment preparation and completion||22||1:00||22:00||Lecture follow-up|
|Scheduled Learning And Teaching Activities||Lecture||22||1:00||22:00||Lectures|
|Guided Independent Study||Assessment preparation and completion||26||0:30||13:00||Revision for exam of semester exam & exam duarion|
|Scheduled Learning And Teaching Activities||Practical||11||1:00||11:00||Practicals|
|Guided Independent Study||Project work||11||1:00||11:00||Coursework|
|Guided Independent Study||Independent study||21||1:00||21:00||Background reading|
Lectures are used to impart knowledge and practicals are used to provide experience of the solution of problems.
The format of resits will be determined by the Board of Examiners
|Practical/lab report||2||M||30||demonstrate understanding of both syntax and semantics of programming languages.|
The exam is a problem solving task - it is "open book" - there is no need to learn anything by heart for this module.
The coursework is done in groups (with a small individual element) but each student has to present their own portfolio for marking - other than the (small) individual element, text can be shared between members of the group.
There is one piece of coursework (with five elements of equal weight) requiring students to demonstrate their understanding of both syntax and semantics of programming languages.
N.B. This module has both “Exam Assessment” and “Other Assessment” (e.g. coursework). If the total mark for either assessment falls below 35%, the maximum mark returned for the module will normally be 35%.
Based on module CSC3004
Disclaimer: The information contained within the Module Catalogue relates to the 2017/18 academic year. In accordance with University Terms and Conditions, the University makes all reasonable efforts to deliver the modules as described. Modules may be amended on an annual basis to take account of changing staff expertise, developments in the discipline, the requirements of external bodies and partners, and student feedback. Module information for the 2017/18 entry will be published here in early-April 2017. Queries about information in the Module Catalogue should in the first instance be addressed to your School Office.