Page 1 of 1

Module Code - Title:

CS4442 - COMPUTATION AND ARCHITECTURE 1

Year Last Offered:

2025/6

Hours Per Week:

Lecture

1

Lab

8

Tutorial

1

Other

0

Private

10

Credits

12

Grading Type:

N

Prerequisite Modules:

Rationale and Purpose of the Module:

This is Block 4a (12 ECTS) on the 3+1 Integrated BSc/MSc Immersive Software Engineering and runs Year 1 Weeks 10 to 16 (7 Weeks) in the spring semester. This block revisits the introductory elements of theory and methods already embedded in the previous blocks and deepens them to a systematic and organized understanding of the fundamental elements underlying the design and functioning of IT systems. This block provides the theoretical and practical depth necessary to satisfy a diverse set of residency opportunities. We reinforce the learning of previous blocks by re-visiting previous projects with more systemic knowledge of how a computer is architected.

Syllabus:

1. Data Structures and Algorithms: ADTs, lists, trees, and maps; sorting algorithms; analysis of general divide-and-conquer algorithms; searching in AVL trees and splay trees; and graph algorithms. 2. Introduction to Functional Programming. - Comparison of imperative, object-oriented, and functional paradigms - Types, including parametric polymorphism, ad-hoc polymorphism via type classes, recursive and higher-order functions, and algebraic data types. - Laziness, map and fold as higher-order procedures. - Properties of programs, for example, purity, side-effect freedom, totality, and partiality. - Testing functional programs 3. Preparing for Residency Part 4a: - Acquire deeper experience in code review - Series of technical seminars covering topics such as: (a) Principles of Software Architecture and Enterprise Systems: sample architecture patterns such as MVC, Broker, and Interceptor; documenting software architecture, evaluating software architecture.; and (b) Security, Privacy, Trust: principles behind unix permissioning schemes, and threat modelling.

Learning Outcomes:

Cognitive (Knowledge, Understanding, Application, Analysis, Evaluation, Synthesis)

On successful completion of this module, students will be able to: - Select and implement appropriate data structures for a variety of computing scenarios - Identify appropriate sorting and searching algorithms for contrasting scenarios - Quantify the trade-offs of various graph representation schemes - Model data access and optimisation problems as graph algorithms. - Apply key techniques of the functional programming paradigm to solve programming problems. - Identify and exploit patterns in programs to design and implement programming abstractions. - Apply formal reasoning techniques to prove properties about programs and produce faster programs. - Use different evaluation strategies to evaluate programs

Affective (Attitudes and Values)

On successful completion of this module, students will be able to: - Give and receive in-depth critique using peer-based review - Solve problems using Problem-Based Learning (PBL)

Psychomotor (Physical Skills)

On successful completion of this module, students will be able to:

How the Module will be Taught and what will be the Learning Experiences of the Students:

The block is taught using the problem-based learning, the flipped classroom concept, and blended learning in a state of the art laboratory setting with an emphasis on collaborative practice and technical excellence. Learning and teaching will be research led with a focus on translating theory into practice, innovation and knowledge creation.

Research Findings Incorporated in to the Syllabus (If Relevant):

Prime Texts:

T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein. (2009) Introduction to Algorithms, 3rd Ed. , The MIT Press
A. Levitin. (2011) Introduction to the Design and Analysis of Algorithms, 3rd Ed. , Pearson

Other Relevant Texts:

Programme(s) in which this Module is Offered:

Semester(s) Module is Offered:

Spring

Module Leader:

colin.venters@ul.ie