Module Code - Title:
CS4442
-
COMPUTATION AND ARCHITECTURE 1
Year Last Offered:
2025/6
Hours Per Week:
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