ADVANCED PROGRAMMING

SHE Level 3
SCQF Credit Points 20.00
ECTS Credit Points 10.00
Module Code M3I325095
Module Leader Martin Gallacher
School School of Computing, Engineering and Built Environment
Subject Computing
Trimester
  • B (January start)

Summary of Content

This module aims to encourage students to become polyglot programmers. It will equip them with a broad understanding of the nature 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 also introduces a range of advanced programming techniques, such as asynchronous messaging, parallel computation and distributed programming. The module will additionally provide coverage of current and emerging programming paradigms, languages and techniques. The percentage of Work Based Learning for this module, as represented by the proportion of the Activity Types which take place off campus, is 79%. The percentage of Work Based Assessment for this module is 10%.

Syllabus

Comparison of programming paradigms - Object-oriented - Functional - Procedural - Declarative - Logic - Classifying languages Functional programming - Lambda calculus - First-class functions - Higher -order functions - Effect-free functions - Recursive types - Function closures - Functional reactive programming - Functional features of object-oriented languages Declarative programming - Markup languages - Regular expressions - Domain Specific Languages - Rules engines Scripting languages - Static/Dynamic typing - Interpreted languages - Integrating scripts with compiled code Managed vs. unmanaged languages - Memory management & pointers - Static and dynamic libraries - Integrating managed and unmanaged code Advanced programming techniques - Lazy evaluation and infinite streams - Control abstractions: exception handling, continuations, monads - Object-oriented abstractions: multiple inheritance, mixins, traits, multimethods - Dynamic code evaluation ("eval") - Asynchronous and parallel computation - Remote procedure calls - Messages and queues 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, and the support provided for each in currently popular programming languages.2 - Explain the nature and applicability of a range of programming language types with respect to whether they are compiled/dynamic, managed/unmanaged, concurrent or domain specific.3 - Evaluate emerging trends in advanced programming languages and techniques.4 - 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 available within that language.

Teaching / Learning Strategy

Work based Education aims to maximise the direct and digitally mediated contact time with students by practicing teaching and learning strategies that use authentic work based scenarios and encourage action learning, enquiry based learning, problem based learning and peer learning. All these approaches aim to directly involve the students in the process of learning and to encourage sharing of learning between students. The module team will determine the level and accuracy of knowledge acquisition at key points in the delivery, inputting when necessary either directly or with the support of external experts who will add to the authenticity, the credibility and application of the education and learning in the workplace. The course material is introduced through lectures in the form of online presentations, 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 online tutorial material which may include instructor and peer-created content, and there will be seminars on campus which will allow students to discuss key concepts and issues with peers and with instructors. Students will be expected to undertake a significant level of independent study within the workplace, including practical activities, and links will be provided to appropriate external material such as podcasts, MOOCs, videos and literature to supplement the module content. Students will also be encouraged to reflect upon the theoretical learning within the work place and the application of newly learned concepts to the work environment, and this will form part of the module assessment. Students will receive feedback on their performance throughout the module through undertaking the practical assignments and tutorial exercises and participating in the seminars

Indicative Reading

Chiusano, P & Bjarnason, R (2014) Functional Programming in Scala, Manning Evans, B J & Verburg, M (2012) The Well-Grounded Java Developer: Vital Techniques of Java 7 and Polyglot Programming, Manning Subramaniam, V (2013) Programming Groovy 2: Dynamic Productivity for the Java Developer, Pragmatic Bookshelf Scott, M L (2009) Programming Language Pragmatics, Morgan Kaufmann Abelson, H (1996) Structure and Interpretation of Computer Programs, 2 nd ed, MIT Press Fowler, M & Parsons, R (2010) Domain Specific Languages, Addison Wesley Ary, J (2013) Instant Drools Starter

Transferrable Skills

Specialist knowledge and applicationCritical thinking and problem solving Communication skills, written, oral and listening Numeracy Computer literacy Self confidence, self discipline & self reliance (independent working) Creativity, innovation & independent thinking Ability to prioritise tasks and time management Develop an understanding of the practical considerations that constrain the application of theory in the workplace.

Module Structure

Activity Total Hours
Seminars (FT) 24.00
Independent Learning (FT) 110.00
Practicals (FT) 24.00
Assessment (FT) 18.00
Lectures (FT) 24.00

Assessment Methods

Component Duration Weighting Threshold Description
Course Work 02 n/a 50.00 35% Written Report
Course Work 01 n/a 50.00 35% Practically based programming assignment