PROGRAMMING PARADIGMS

SHE Level 4
SCQF Credit Points 20.00
ECTS Credit Points 10.00
Module Code MHI325688
Module Leader James Paterson
School School of Computing, Engineering and Built Environment
Subject Computing
Trimester
  • A (September start)

Summary of Content

Programming paradigms provide a way to classify programming languages based on their features. This module is concerned with the nature of programming languages and the appropriate uses of a range of languages, including their use in concurrent applications. It will equip students with a broad understanding of a range of programming paradigms and the support provided for each paradigm in currently popular programming languages. Thus it will equip students to be able to make appropriate choices to best meet the requirements of a specific programming problem. The module will focus in greater depth on the principles and techniques of functional programming, and on low-level programming using the capabilities available in an appropriate compiled language. The module also introduces a range of concurrent programming techniques and the support provided for these at operating system level and in high level languages. The module will additionally provide coverage of current and emerging programming paradigms, languages and techniques.

Syllabus

Comparison of programming languages Type systems Parameter passing Paradigms: Imperative, Object-oriented, Procedural, Declarative, Functional, Logic, Concurrent Code translation: Compilation, Interpreters Execution: Native code, Virtual machine Memory management: Manual, Automatic Constructs and core data structures Functional programming Functional principles: Immutability, Pure functions Recursion and tail-recursive calls Functions: First-class functions, Lambda, expressions, Higher-order functions, Composition, Partial application, Closures, Currying, Folding, Streams and lazy evaluation Types; Algebraic Data Types including option types and lists, Pattern-matching, Functors, Monads Low level programming Pointers and memory management Unmanaged data structures Using Operating System Libraries and functions: programming with standard libraries, calling from high-level code Network socket programming Concurrent programming Processes and threads Controlling access to shared resources using mechanisms such as synchronized methods, mutexes and semaphores Inter-process communication using shard memory and message passing. Concurrent programming models, e.g. futures/promises, actor model Emerging trends in programming

Learning Outcomes

On completion of this module, students should be able to:1 - Explain the nature and applicability of a range of programming paradigms (including object-oriented, functional, procedural, declarative, concurrent) and programming language features (including type systems, constructs, compilation, execution, memory management)2 - Demonstrate an understanding of the principles of functional programming and the use of techniques associated with these3 - Demonstrate an understanding of the use of low level programming techniques in an appropriate compiled programming language.4 - Demonstrate an understanding of the issues involved in concurrent programming including access to shared resources and message passing.5 - Develop and test a software application by selecting a programming language appropriate to the requirements and making appropriate use of a range of advanced programming techniques covered in this module

Teaching / Learning Strategy

The university 'Strategy for Learning' documentation has informed the learning and teaching strategy for this module. The course material is introduced through lectures, which as well as covering the principles of a range of programming paradigms will illustrate the relevance of the programming and interaction techniques presented to real-world applications and introduce a range of professional software development processes and practices. Students will engage with practical programming assignments and there will be tutorials which will allow students to discuss key concepts and issues with peers and with instructors. All lecture, laboratory and tutorial material will be made available on GCU Learn and links will be provided to appropriate external material such as podcasts, MOOCs, videos and literature. Students will receive formative feedback on their performance throughout the module through undertaking the practical assignments and tutorial exercises and online tests. Summative feedback and grades will also be provided for the coursework assignment undertaken as part of the module using GCU Learn.

Indicative Reading

-567 Books and articles: Scott, M L (2016) Programming Language Pragmatics 4 th Edition, Morgan Kaufmann Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages, Bruce Tate, Pragmatic Programmers, 2010 Programming in Scala, 3rd Edition, Martin Odersky, Lex Spoon and Bill Venners, Artima, 2016 Alexander, A (2017) Functional Programming, Simplified, CreateSpace Independent Publishing Platform Chiusano, P & Bjarnason, R (2014) Functional Programming in Scala, Manning Saumont, P (2017) Functional Programming in Java, Manning Prata, S. (2013) C Primer Plus 6 th Edition, Addison-Wesley Love, R (2013) Linux System Programming 2 nd Edition, O'Reilly Hart, J (2015) Windows System Programming 4 th Edition, Addison-Wesley Microsoft Technology Lea, D (1999) Concurrent Programming in Java, Addison-Wesley

Transferrable Skills

By the end of this module students will have gained competence in the following key areas: Specialist knowledge and application Critical thinking and problem solving Critical analysis Computer literacy Self confidence, self discipline & self reliance (independent working) Awareness of strengths and weaknesses Creativity, innovation & independent thinking Ability to prioritise tasks and time management Interpersonal skills, team working and leadership

Module Structure

Activity Total Hours
Independent Learning (FT) 132.00
Practicals (FT) 12.00
Lectures (FT) 24.00
Assessment (FT) 20.00
Tutorials (FT) 12.00

Assessment Methods

Component Duration Weighting Threshold Description
Coursework 1 n/a 50.00 35% Practically based programming assignment
Exam (Exams Office) 2.00 50.00 35% Exam (Exams Office)