ALTERNATIVE PROGRAMMING PARADIGMS - 2019/0
Module code: COM3019
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.
Programmes this module appears in
|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 2019/0 academic year.