ALTERNATIVE PROGRAMMING PARADIGMS - 2020/1

Module code: COM3019

Module Overview

This module introduces the students to a variety of fundamental principles of programming languages, covering key similarities and differences amongst languages that are functional, imperative, procedural, and so on. The ability to adapt to different, and new, programming languages, and importantly to evaluate the performance tradeoffs between various programming languages, allows for a well-informed selection. Choosing the right programming language can influence decisions in designing, coding and implementing algorithms and treatment of data, and being familiar with a variety of different languages and their (dis-)advantages will help the student to choose the right tool for the job for a variety of real-world applications.

Module provider

Computer Science

Module Leader

Number of Credits: 15

ECTS Credits: 7.5

Framework: FHEQ Level 6

JACs code:

Module cap (Maximum number of students): N/A

Module Availability

Semester 1

Prerequisites / Co-requisites

COM1029 Data Structures and Algorithms and COM2031 Advanced Algorithms

Module content

Indicative content includes:

• The key characteristics, similarities and differences amongst programming languages

• Interpreters, bytecode interpreters, and compilers

• Exemplar approaches and languages, which will cover a selection from:

o Functional (first) and Logic (first) Programming, considering Clojure (LISP), Prolog, Haskell

o Imperative (first) Programming, to consider FORTRAN, COBOL

o Procedural (first) Programming using C

o Relationships to object-oriented (first) programming using C♯and .NET

o Evolution to multi-paradigm languages

• Comparisons of expressiveness

• Benchmark tasks and their relationship to real system performance

Assessment pattern

Assessment type Unit of assessment Weighting
Coursework Individual coursework implementing a number of algorithms using different programming languages 40
Examination A 3h laboratory based exam 60

Alternative Assessment

N/A

Assessment Strategy

The assessment strategy is designed to provide students with the opportunity to demonstrate their

• ability to evaluate the appropriateness of different languages for a given problem space.

• ability to evaluate the expressiveness and performance trade-offs between different languages.

• advanced ability to code algorithms for a selection of target languages/paradigms.

 

Thus, the summative assessment for this module consists of:

• an individual programming coursework requiring the students to implement and evaluate the performance of different algorithms in 3 programming languages/paradigms (for week 10), to include writing a report and critically analysing the results. This addresses LO1, LO2 and LO3.

• a laboratory based exam (during the exam period) where the students need to select appropriate programming languages for implementing an algorithm and provide justifications of their choice. This addresses LO1, LO2 and LO3.

 

Formative assessment and feedback: Formative feedback will be offered in lab sessions. The individual programming coursework feedback will also act formatively towards the final examination.

Module aims

  • Introduce different programming language paradigms and their relationship to different applications
  • Describe the design of a selection of programming languages that demonstrates the differences
  • Develop a critical understanding of programming languages through evaluation of expressiveness and performance trade-offs between different languages

Learning outcomes

Attributes Developed Ref
001 Critically evaluate the appropriateness of different languages for a given problem space KCP
002 Critically evaluate the expressiveness and performance trade-offs between different languages KCP
003 Demonstrate an advanced ability to code algorithms for a selection of target languages/paradigms KT

Attributes Developed

C - Cognitive/analytical

K - Subject knowledge

T - Transferable skills

P - Professional/Practical skills

Overall student workload

Independent Study Hours: 108

Lecture Hours: 22

Laboratory Hours: 20

Methods of Teaching / Learning

The learning and teaching strategy is designed to help students to:

• Critically evaluate the appropriateness of different languages for a given problem space.

• Critically evaluate the expressiveness and performance trade-offs between different languages.

• Demonstrate an advanced ability to code algorithms for a selection of target languages/paradigms.

 

The learning and teaching methods include:

• Lectures (11 weeks @ 2h) with class discussions to introduce the theoretical background

• Labs (10 weeks @ 2h) to put the theory into practice

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

Reading list for ALTERNATIVE PROGRAMMING PARADIGMS : http://aspire.surrey.ac.uk/modules/com3019

Programmes this module appears in

Programme Semester Classification Qualifying conditions
Software Development for Business BSc (Hons) 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 2020/1 academic year.