Page 1 of 1

Module Code - Title:

CS4421 - PROBLEM SOLVING WITH COMPUTERS

Year Last Offered:

2025/6

Hours Per Week:

Lecture

2

Lab

12

Tutorial

1

Other

0

Private

10

Credits

15

Grading Type:

N

Prerequisite Modules:

Rationale and Purpose of the Module:

This is Block 1 (15 ECTS) on the 3+1 Integrated BSc/MSc Immersive Software Engineering and runs Year 1 Weeks 1 to 8 (8 Weeks) in the autumn semester. This block introduces students to a systematic approach to problem solving using abstraction, models, and computational thinking. This includes fundamental concepts in computer science and programming, collaboration in small teams and communication with peers. This block encompasses the vertical stack of a software engineering context from hardware such as cyber physical systems to high level abstractions, using concepts as the glue across abstractions and models as the means of expression.

Syllabus:

Elements of 1. Discrete mathematics: logics, sets, graphs, and standard proof methods such as direct proof and induction 2. Abstract programming syntax and semantics, including Lambda Calculus, Abstract Syntax Trees 3. Models and Problem Solving: use a programming language to solve mathematical problems 4. A review of basic algebra, calculus, and statistics 5. Computer Organisation and the contemporary multilevel machine 6. Introduction to Unix: shells, commands, pipes, redirections 7. Programming using Cyber Physical Systems, with opportunities to build from the ground up. 8. Preparing for Residency Part 1: seminars on CV preparation

Learning Outcomes:

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

On successful completion of this module, students will be able to: - Use discrete mathematics such as logics, sets, and graphs, to model and reason about the fundamental mathematical structures of computation and programming. - Use standard proof methods, such as direct proof and induction, to prove theorems in Discrete Mathematics. - Describe the difference between syntax and semantics, and convert between different forms of syntax. - Construct Abstract Syntax Trees for arbitrarily complex expressions and Lambda calculus expressions for simple functions. - Design and write a correct programme to solve a mathematical problem. - Reason about the structure of a program - Describe the organisation of a computer including the digital logic layer in a contemporary multi-level machine. - Demonstrate an understanding of the difference between Unix and a shell, such as bash; use basic Unix primitives including pipes and redirection to chain programs together.

Affective (Attitudes and Values)

On successful completion of this module, students will be able to: - Develop a strategy for building one's CV. - Critically think about and reflect upon one's own work using a constructive framework. - Experience teamwork in pairs

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:

Linge, S., and Langtangen, H. P. (2020) Programming for computations - Python : a gentle introduction to numerical simulations with Python 3.6, Second Edition , Springer Open.
Patterson, D. A., and Hennessy, J. L. (2017) Computer Organization and Design, ARM Edition (or 5th Edition) , Morgan Kaufmann
Steffen, B, RĂ¼thing, O., and Huth, M. (2018) Mathematical Foundations of Advanced Informatics. , Springer

Other Relevant Texts:

Programme(s) in which this Module is Offered:

Semester(s) Module is Offered:

Autumn

Module Leader:

chris.exton@ul.ie