Module Catalogue 2024/25

CSC3321 : Understanding Programming Languages (Inactive)

CSC3321 : Understanding Programming Languages (Inactive)

  • Inactive for Year: 2024/25
  • Module Leader(s): Dr Troy Astarte
  • Owning School: Computing
  • Teaching Location: Newcastle City Campus
Semesters

Your programme is made up of credits, the total differs on programme to programme.

Semester 2 Credit Value: 10
ECTS Credits: 5.0
European Credit Transfer System
Pre-requisite

Modules you must have done previously to study this module

Pre Requisite Comment

None

Co-Requisite

Modules you need to take at the same time

Co Requisite Comment

None

Aims

There are a great many programming languages and those which are popular today may be forgotten in twenty years; then you will be learning languages which today do not even exist. Many other "formal" languages are around and will affect your life in computing: scripting, virtual reality, layout, robotics control... Some languages aim for general usage and others are very specific, but all embody certain ideas and concepts. Sadly, many languages focus on one new idea (objects, concurrency, memory manipulation) but have significant drawbacks compared to their predecessors in other respects.

The principal aim of this module is to teach you how to pick apart the key ideas in formal languages and communicate them. In particular, the "meaning" (or semantics) of programming languages is considered. You will learn how to model the very base concepts of computation and combine them in interesting ways to make programming languages. Ultimately this will help you better to understand any particular language you come across and will very likely increase your understanding of the languages you already know. Furthermore, you will be equipped with the knowledge and understanding required to get involved in language design or extension.

The main principle taught is abstraction. The approach to semantics follows Structural Operational Semantics (SOS), with a Viennese flavour. VDM is used for notation only.

Outline Of Syllabus

o Challenges and issues in programming languages
o Syntax (content and structure) of languages
o Semantics (meaning and effect) of languages
-Base concepts: storage, assignment, branching control
-Concurrency
-Blocks, procedures, functions
-Objects
o Context conditions (error prevention)
o Other approaches besides SOS (axiomatic, denotational semantics)

Learning Outcomes

Intended Knowledge Outcomes

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

Intended Skill Outcomes

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

Teaching Methods

Teaching Activities
Category Activity Number Length Student Hours Comment
Scheduled Learning And Teaching ActivitiesLecture221:0022:00Lectures
Guided Independent StudyAssessment preparation and completion260:3013:00Revision for exam of semester exam & exam duarion
Guided Independent StudyAssessment preparation and completion221:0022:00Lecture follow-up
Scheduled Learning And Teaching ActivitiesPractical111:0011:00Practicals
Guided Independent StudyProject work111:0011:00Coursework
Guided Independent StudyIndependent study211:0021:00Background reading
Total100:00
Teaching Rationale And Relationship

Lectures are used to impart knowledge and practicals are used to provide experience of the solution of problems.

Reading Lists

Assessment Methods

The format of resits will be determined by the Board of Examiners

Exams
Description Length Semester When Set Percentage Comment
Written Examination902A70N/A
Other Assessment
Description Semester When Set Percentage Comment
Practical/lab report2M30demonstrate understanding of both syntax and semantics of programming languages.
Assessment Rationale And Relationship

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%.

Timetable

Past Exam Papers

General Notes

Based on module CSC3004

Welcome to Newcastle University Module Catalogue

This is where you will be able to find all key information about modules on your programme of study. It will help you make an informed decision on the options available to you within your programme.

You may have some queries about the modules available to you. Your school office will be able to signpost you to someone who will support you with any queries.

Disclaimer

The information contained within the Module Catalogue relates to the 2024 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 2025/26 entry will be published here in early-April 2025. Queries about information in the Module Catalogue should in the first instance be addressed to your School Office.