FURTHER PROGRAMMING PARADIGMS - 2026/7

Module code: COM2040

Module Overview

This module will introduce fundamental concepts of Theory of Programming Languages using two programming paradigms: Object-Oriented Paradigm and the Functional Paradigm. The module will provide a foundation for the theoretical and practical aspects of building programs using these paradigms. Object Orientated Paradigm is first introduced as a popular methodology for large application development. The module will then cover an alternative programming paradigm, Functional Programming, with a focus on both their theoretical underpinnings and computation models. The module will cover practical aspects of implementing algorithms and larger applications in these paradigms. 

Module provider

Computer Science and Electronic Eng

Module Leader

DASH Santanu (CS & EE)

Number of Credits: 15

ECTS Credits: 7.5

Framework: FHEQ Level 5

Module cap (Maximum number of students): 250

Overall student workload

Independent Learning Hours: 100

Lecture Hours: 24

Laboratory Hours: 12

Guided Learning: 10

Captured Content: 4

Module Availability

Semester 1

Prerequisites / Co-requisites

None.  

Module content

The module will be delivered in three sections, each covering a programming paradigm with both theoretical and practical aspects introduced. Indicative content for each will be drawn from the following.Object Oriented Programming

  • Introduction to Imperative Programming through the use of pointers and references
  • Introduction to Object-Oriented programming paradigm and key concepts such as abstraction, encapsulation, modularity, reuse of software.
  • The Class - Basics of the class, constructors, destructors, memory allocation, operator overloading
  • Inheritance - Inheritance, polymorphism, public/private/protected, member functions/variables, casting, virtual and abstract.
  • Useful data structures such as lists and arrays.
Functional Programming
  • Introduction to functional programming through a functional language: values, functions as values, expressions, pattern-matching.
  • Polymorphism in functional languages: type classes and polymorphic datatypes
    • Lists, list comprehensions
    • Complex data structures: trees, structured trees, graphs
  • Side-effects vs pure computation: Input output, state, etc.
  • Advanced topics in functional programming: type inference, proofs as programs, map/reduce
Programming Language and Compilation Theory
  • Untyped and typed lambda calculi. 
  • Difference between strong and weak typing.
  • Typechecking, type inference and unification.
  • Overview of the compilation process.
  • Introduction to evaluation strategies, with a focus on functional languages.
 

Assessment pattern

Assessment type Unit of assessment Weighting
School-timetabled exam/test Class Test (90 mins) 30
Examination Invigilated Exam (2 hrs) 70

Alternative Assessment

N/A

Assessment Strategy

The assessment strategy for this module is designed to provide students with the opportunity to demonstrate both theoretical and practical knowledge in Object Oriented, Functional, and Logic algorithms. The written examination will assess knowledge and the assimilation of terminology, concepts, syntax and features the different programming paradigms. The class test will assess the knowledge gathered up to that point and provide an opportunity for early feedback on progress.

Thus, the summative assessment for this module consists of the following.

* Class test  

* Examination  

Formative assessment and feedback

For the module, students will receive formative assessment/feedback in the following ways:

* During lectures, by question and answer sessions and using technologies such as poll everywhere

* During supervised computer laboratory sessions

* Via online tests on the virtual learning environment

* Via discussion in lectures about suitable design solutions for the assignment.

Module aims

  • Familiarise students with imperative programming, references and program state, using using a mainstream object-oriented programming language.
  • Introduce Functional Programming as an alternative programming paradigm using a mainstream functional language, discussing its advantages and shortcomings compared to imperative programming.
  • Provide students with theoretical underpinnings of both programming paradigms, such that they can design and implement programs in either.

Learning outcomes

Attributes Developed
Ref
001 Describe the fundamental principles of Object Oriented Programming KCT LO1
002 Describe the fundamental principles of Functional Programming KCT LO2
003 Describe the fundamental principles of Programming Languages and Compilation Theory KCT LO3
004 Apply knowledge of each paradigm to design and implement programs KPT LO4
005 Explain the relationship between Lambda Calculus and Functional Programming KCP LO5
006 Explain the advantages of Strong Typing using Type Checking and Type Inference as implemented in modern Programming Languages KCP LO6

Attributes Developed

C - Cognitive/analytical

K - Subject knowledge

T - Transferable skills

P - Professional/Practical skills

Methods of Teaching / Learning

The learning and teaching strategy is as follows.

There will be lectures, with an associated computer-laboratory-based material that will closely follow the lectured material.

The purpose of the programming laboratories is for students to gain first-hand experience in applying the concepts taught in lectures. 

Indicated Lecture Hours (which may also include seminars, tutorials, workshops and other contact time) are approximate and may include in-class tests where one or more of these are an assessment on the module. In-class tests are scheduled/organised separately to taught content and will be published on to student personal timetables, where they apply to taken modules, as soon as they are finalised by central administration. This will usually be after the initial publication of the teaching timetable for the relevant semester.

Reading list

https://readinglists.surrey.ac.uk
Upon accessing the reading list, please search for the module using the module code: COM2040

Other information

Digital Capabilities

This module introduces students to different ways to think about programming. Building on COM1027 (Programming Fundamentals) students are introduced to the theory of Programming Languages using Functional as well as Object-oriented programming paradigms. The learning is reinforced through a practical exploration in the lab, where students are asked to write program that compare and contract these paradigms.

Employability

This module provides maths, and development skills that allow students to reason about complex computer science problems in different ways. By the end of this module, students have a grounding in 2 different programming paradigm and learn to select which paradigm is best suited for tasks. They also have a good understanding of the Programming Languages Theory which helps them learn and use new languages. This broader knowledge of programming ensures students are equipped with the tools to work in a range of different industry settings.

Global and Cultural Skills

Computer Science is a global language and the foundational knowledge taught in this module can be applied throughout the world.  The paradigms taught in this module are used widely, which allows students to employ their skills worldwide.

Resourcefulness and Resilience

This module teaches students new ways to think about programming problems. These skills can be applied widely throughout the programme and in industry. The ability to work with multiple programming paradigms can help provide students a range of new tools to reason about, and solve problems.

 

 

Programmes this module appears in

Programme Semester Classification Qualifying conditions
Computer Science BSc (Hons) 1 Compulsory A weighted aggregate mark of 40% is required to pass the module
Computing with Business Management BSc (Hons) 1 Compulsory A weighted aggregate mark of 40% is required to pass the module
Computer Science MEng 1 Compulsory A weighted aggregate mark of 40% is required to pass the module

Please note that the information detailed within this record is accurate at the time of publishing and may be subject to change. This record contains information for the most up to date version of the programme / module for the 2026/7 academic year.