¸£ÀûÔÚÏßÃâ·Ñ

Study-Unit Description

Study-Unit Description


CODE CPS2001

 
TITLE Programming Paradigms

 
UM LEVEL 02 - Years 2, 3 in Modular Undergraduate Course

 
MQF LEVEL 5

 
ECTS CREDITS 5

 
DEPARTMENT Computer Science

 
DESCRIPTION The student is exposed to two programming paradigms and is invited to solve different problems using these paradigms.

1. Functional Programming and exposure to programming without an explicit notion of state. The emphasis is the structure of the data and the functions that operate on it, the use of control mechanisms such as recursion, the use of functions(closures) as data, the use of types in describing complex data-structures, encapsulation via modules and the techniques for attaining the best performance within the paradigm, such as tail-recursion.

2. Concurrent programming with exposure to concurrency control structures and concurrency paradigms such as synchronous and asynchronous message passing, actors and mailboxes, process encapsulation, fault isolation, localization, replication, fault tolerance.

The student will be exposed to new means of, organizing and describing computation, contrasting it with the imperative programming paradigm with which the students are already familiar. The relevance of these paradigms to industry and production-grade software will also be made explicit.

Study-unit Aims:

Expose the student to different programming paradigms, together with the different emphasis that each paradigm focusses on, the control structures that the paradigm typically comes equipped with and problems that are better suited for the particular paradigms.

Learning Outcomes:

1. Knowledge & Understanding
By the end of the study-unit the student will be able to:

- Judiciously choose the right tool (language/paradigm) for the right problem;
- Be exposed to emerging/non-mainstream programming languages.

2. Skills
By the end of the study-unit the student will be able to:

- Appreciate different ways how to describe and solve a problem;
- Improve analytical skills in terms of better abstraction and modular decomposition of design;
- Learn and adapt to new languages faster;
- Appreciate the emerging trends of combining technologies (and paradigms) in a single project to leverage different strengths to address different parts of the problem.

Main Text/s and any supplementary readings:

- OCaml from the Very Beginning. John Whitington. Coherent Press, 2013.
- Real World OCaml: Functional Programming for the Masses (2nd Edition). Anil Madhavapeddy and Yaron Minsky. Cambridge University Press, 2023.
- Programming Erlang (2nd Edition). Joe Armstrong. Pragramatic Bookshelf. 2013.
- Erlang Programming: A Concurrent Approach to Software Development. Francesco Cesarini & Simon Thompson. O'Reilley, 2009.

 
ADDITIONAL NOTES Students taking this study-unit are assumed to have knowledge of the material covered in the following study-units:
- CPS1000 or CPS1011;
- CPS2000;
- CPS2004;
- CSA1017 or ICS1018.

Please note that a pass in the Assignment components is obligatory for an overall pass mark to be awarded.

 
STUDY-UNIT TYPE Lecture, Independent Study & Tutorial

 
METHOD OF ASSESSMENT
Assessment Component/s Assessment Due Sept. Asst Session Weighting
Assignment [See Add. Notes] SEM1 Yes 50%
Assignment [See Add. Notes] SEM1 Yes 50%

 
LECTURER/S Duncan Paul Attard
Adrian Francalanza (Co-ord.)

 

 
The University makes every effort to ensure that the published Courses Plans, Programmes of Study and Study-Unit information are complete and up-to-date at the time of publication. The University reserves the right to make changes in case errors are detected after publication.
The availability of optional units may be subject to timetabling constraints.
Units not attracting a sufficient number of registrations may be withdrawn without notice.
It should be noted that all the information in the description above applies to study-units available during the academic year 2025/6. It may be subject to change in subsequent years.

/course/studyunit