ALTERNATIVE PROGRAMMING PARADIGMS - 2022/3
Module code: COM3019
In light of the Covid-19 pandemic the University has revised its courses to incorporate the ‘Hybrid Learning Experience’ in a departure from previous academic years and previously published information. The University has changed the delivery (and in some cases the content) of its programmes. Further information on the general principles of hybrid learning can be found at: Hybrid learning experience | University of Surrey.
We have updated key module information regarding the pattern of assessment and overall student workload to inform student module choices. We are currently working on bringing remaining published information up to date to reflect current practice in time for the start of the academic year 2021/22.
This means that some information within the programme and module catalogue will be subject to change. Current students are invited to contact their Programme Leader or Academic Hive with any questions relating to the information available.
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
Overall student workload
Independent Learning Hours: 108
Lecture Hours: 22
Laboratory Hours: 20
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
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 2022/3 academic year.