ALTERNATIVE PROGRAMMING PARADIGMS - 2021/2
Module code: COM3019
In light of the Covid-19 pandemic, and in a departure from previous academic years and previously published information, the University has had to change the delivery (and in some cases the content) of its programmes, together with certain University services and facilities for the academic year 2020/21.
These changes include the implementation of a hybrid teaching approach during 2020/21. Detailed information on all changes is available at: https://www.surrey.ac.uk/coronavirus/course-changes. This webpage sets out information relating to general University changes, and will also direct you to consider additional specific information relating to your chosen programme.
Prior to registering online, you must read this general information and all relevant additional programme specific information. By completing online registration, you acknowledge that you have read such content, and accept all such changes.
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.
Number of Credits: 15
ECTS Credits: 7.5
Framework: FHEQ Level 6
Module cap (Maximum number of students): N/A
Prerequisites / Co-requisites
COM1029 Data Structures and Algorithms and COM2031 Advanced Algorithms
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 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|
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.
- 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
|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|
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.
Upon accessing the reading list, please search for the module using the module code: COM3019
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 2021/2 academic year.