Skip to main content Skip to navigation

CS349 Principles of Programming Languages

CS349-15 Principles of Programming Languages

Academic year
23/24
Department
Computer Science
Level
Undergraduate Level 3
Module leader
Sara Kalvala
Credit value
15
Module duration
10 weeks
Assessment
Multiple
Study location
University of Warwick main campus, Coventry
Introductory description

The module introduces students to fundamental concepts underpinning programming languages and to reasoning about program behaviour.

Module aims

Understanding the foundations for formal descriptions of programming languages. Relating abstract concepts in the design of programming languages with real languages in use and pragmatic considerations. Exposure to a variety of languages through presentations by peers and evidence from literature surveys.

Outline syllabus

This is an indicative module outline only to give an indication of the sort of topics that may be covered. Actual sessions held may differ.

Scope and binding, untyped programming, type systems, type inference, evaluation relations, higher-order types, references, control operators, subtyping, recursive types, polymorphism.

Learning outcomes

By the end of the module, students should be able to:

  • Understand a variety of concepts underpinning modern programming languages.
  • Distinguish type disciplines in various programming languages.
  • Use formal semantics to reason about program behaviour.
  • Implement program interpreters and type inference algorithms.
Indicative reading list

Please see Talis Aspire link for most up to date list.

View reading list on Talis Aspire

Research element

Literature review and critical analysis of a language of choice, and presenting both subjective and objective conclusions on the position of the language within the wider programming language landscape.

Subject specific skills

Putting formal logic systems into practice.
Understanding practical implementations of type systems.
Understanding issues in dynamic and static binding.
Survey of modern programming languages.

Transferable skills

Presentation skills,
Library/ Literature Review skills
Technical Writing Skills

Study time

Type Required
Lectures 20 sessions of 1 hour (13%)
Seminars 8 sessions of 1 hour (5%)
Tutorials 8 sessions of 1 hour (5%)
Online learning (independent) 4 sessions of 1 hour (3%)
Private study 110 hours (73%)
Total 150 hours
Private study description

Revision of the foundations and semantics off programming languages from recommended textbooks.
Library research: examining language landscape to choose language and papers to be used as subject of assignment.
Preparation of essays and presentation.

Costs

No further costs have been identified for this module.

You do not need to pass all assessment components to pass the module.

Students can register for this module without taking any assessment.

Assessment group D3
Weighting Study time
Written essay on programming language 30%

Up to 5 pages, on a programming language chosen by the student, supported by referencing two publications focused on the chosen language. This assignment is worth more than 3 CATS and is not, therefore, eligible for self-certification.

In-person Examination 70%

CS349 Exam


  • Answerbook Pink (12 page)
Assessment group R2
Weighting Study time
On-campus Examination - Resit 100%

CS349 resit examination


  • Answerbook Pink (12 page)
Feedback on assessment

Written feedback on assignments.

Past exam papers for CS349

Courses

This module is Optional for:

  • UCSA-G4G1 Undergraduate Discrete Mathematics
    • Year 3 of G4G1 Discrete Mathematics
    • Year 3 of G4G1 Discrete Mathematics
  • Year 3 of UCSA-G4G3 Undergraduate Discrete Mathematics
  • Year 4 of UCSA-G4G4 Undergraduate Discrete Mathematics (with Intercalated Year)
  • Year 4 of UCSA-G4G2 Undergraduate Discrete Mathematics with Intercalated Year
  • Year 4 of UMAA-G105 Undergraduate Master of Mathematics (with Intercalated Year)

This module is Option list A for:

  • Year 4 of UCSA-G504 MEng Computer Science (with intercalated year)
  • UCSA-G500 Undergraduate Computer Science
    • Year 3 of G500 Computer Science
    • Year 3 of G500 Computer Science
  • UCSA-G502 Undergraduate Computer Science (with Intercalated Year)
    • Year 4 of G502 Computer Science with Intercalated Year
    • Year 4 of G502 Computer Science with Intercalated Year
  • UCSA-G503 Undergraduate Computer Science MEng
    • Year 3 of G500 Computer Science
    • Year 3 of G503 Computer Science MEng
    • Year 3 of G503 Computer Science MEng

This module is Option list B for:

  • Year 3 of UCSA-G406 Undergraduate Computer Systems Engineering
  • Year 3 of UCSA-G408 Undergraduate Computer Systems Engineering
  • Year 4 of UCSA-G407 Undergraduate Computer Systems Engineering (with Intercalated Year)
  • Year 4 of UCSA-G409 Undergraduate Computer Systems Engineering (with Intercalated Year)
  • UMAA-G105 Undergraduate Master of Mathematics (with Intercalated Year)
    • Year 4 of G105 Mathematics (MMath) with Intercalated Year
    • Year 5 of G105 Mathematics (MMath) with Intercalated Year
  • UMAA-G100 Undergraduate Mathematics (BSc)
    • Year 3 of G100 Mathematics
    • Year 3 of G100 Mathematics
    • Year 3 of G100 Mathematics
  • UMAA-G103 Undergraduate Mathematics (MMath)
    • Year 3 of G100 Mathematics
    • Year 3 of G103 Mathematics (MMath)
    • Year 3 of G103 Mathematics (MMath)
    • Year 4 of G103 Mathematics (MMath)
    • Year 4 of G103 Mathematics (MMath)
  • UMAA-G106 Undergraduate Mathematics (MMath) with Study in Europe
    • Year 3 of G106 Mathematics (MMath) with Study in Europe
    • Year 4 of G106 Mathematics (MMath) with Study in Europe
  • Year 4 of UMAA-G101 Undergraduate Mathematics with Intercalated Year