Study-Unit Description

Study-Unit Description


TITLE Programming Paradigms

LEVEL 02 - Years 2, 3 in Modular Undergraduate Course


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, capabilities introduced with laziness 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, process encapsulation, fault isolation, localization, replication, fault tolerance.

The student will be exposed to new means of, organizing and describing computation, contrasting it with imperative and object oriented paradigms with which the students are already familiar. The relevance of these paradigms to industry- settings 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:

- Haskell: The Craft of Functional Programming. Simon Thompson. Addison Wesley.
- Programming in Haskell 2nd edition. David Hutton. Cambridge University Press, 2016.
- Programming Erlang. Joe Armstrong. Pragramatic Bookshelf. - N/A.
- Erlang Programming: A Concurrent Approach to Software Development. Francesco Cesarini & Simon Thompson. O'Reilley.
- The Go Programming Language. Alan Donovan & Brian Kesnighan. Addison Wesley, 2015.

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

Assessment Component/s Resit Availability Weighting
Assignment [See Additional Notes] Yes 30%
Assignment [See Additional Notes] Yes 30%
Assignment [See Additional Notes] Yes 40%

LECTURER/S Duncan Paul Attard
Adrian Francalanza
Gordon J. Pace
Kevin Vella

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 study-unit description above applies to the academic year 2017/8, if study-unit is available during this academic year, and may be subject to change in subsequent years.