Page 1 of 1

Module Code - Title:

CS4222 - SOFTWARE DEVELOPMENT

Year Last Offered:

2026/7

Hours Per Week:

Lecture

2

Lab

2

Tutorial

0

Other

0

Private

6

Credits

6

Grading Type:

N

Prerequisite Modules:

CS4141

Rationale and Purpose of the Module:

This module builds on introductory programming as it serves as the next step in students’ development as programmers, by extending their ability to design, structure, and reason about more complex software. It provides a purposeful transition from writing small, single‑file programs to creating larger, well‑organised applications that reflect real software development practice. Through sustained engagement with multi‑class design, data handling, and professional tools, the module aims to strengthen students’ confidence and independence as developers. By deepening their understanding of program organisation, abstraction, and problem decomposition, it prepares students for more advanced study in software development and related computational disciplines.

Syllabus:

The following is an indicative syllabus outlining the key topics covered in this module. Two Dimensional Arrays: Creation, Indexing, Iteration; Grid-based modelling; Common 2-D array algorithms. Use of Objects: Instantiation and method invocation; Object state and behaviour; Standard Library Classes and Objects; Abstract Data Types and Simple Algorithms: Concept of an ADT; Lists, stacks, and queues; Encapsulating data structures in classes; Basic search and traversal algorithms. Program structure, Modularity and Multi-Class Design: Organising code across multiple files; Multi-class program design and interaction between classes. Functional decomposition; Simple refactoring techniques. File Processing: Reading and Writing Text Files; Parsing and cleaning input; Integrating File I/O with arrays, lists objects. Regular Expressions: Core regular expression syntax; Validation problems; Searching patterns in text files. IDE and Tooling Skills: Introduction to professional IDEs; Project structure; Refactoring tools; Integrated debugger. Version Control: Repositories; Commits; Diffs; IDE-integrated version control. Recursion: Concept of recursive function calls; Base case v recursive case; Visualising recursion; Classic examples; Recursion v Iteration; Debugging recursive functions.

Learning Outcomes:

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

On successful completion of this module, students should be able to: 1. Design software solutions for moderately complex problems using appropriate programming models and organisational principles. 2. Develop well‑structured programs that apply modular design and effective management of program components. 3. Implement software that integrates core data structures, manages data processing tasks, and handles input from a variety of sources. 4. Debug programs using systematic testing approaches and professional development tools.

Affective (Attitudes and Values)

On successful completion of this module, students should be able to: 1. Demonstrate persistence and constructive problem‑solving attitudes by engaging consistently in systematic debugging and iterative refinement. 2. Show responsibility and professionalism by applying clean‑code practices, modular design principles, and version‑control habits in their software projects.

Psychomotor (Physical Skills)

N/A

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

The lectures will be used to present programming concepts and related examples. They will be interactive where students will be invited to provide feedback and solve problems. The labs will be student centered and allow students to develop these concepts through programming exercises and will give the students opportunities to solve sample problems and discuss these as a group. These sessions are designed to foster active learning, allowing students to experiment, debug, and optimize their programs in a supportive, feedback-rich environment. Project work encourages problem-based learning, collaboration, and reflection, while also developing technical fluency and ethical awareness. Technology‑enhanced activities are embedded to build students’ technical fluency, including interactive coding environments and other collaborative digital platforms. This approach aligns with UL’s Integrated Curriculum Development Framework (ICDF) by supporting inclusive and flexible learning through scaffolded activities and diverse assessment formats and embedding reflection and inquiry into the learning process, enabling students to connect technical decisions with broader societal and environmental considerations. The module also supports the development of the UL Graduate Attributes by fostering curiosity and exploration, encouraging articulate communication of technical ideas, developing agility in adapting to new tools, promoting courage in tackling unfamiliar challenges, and reinforcing responsible and ethical use of technology and data.

Prime Texts:

Y.D Liang (2024) Introduction to Java Programming and Data Structures, 13th Edition , Pearson Higher Education

Other Relevant Texts:

Programme(s) in which this Module is Offered:

BACHELOR OF SCIENCE (EDUCATION) IN MATHEMATICS AND COMPUTER SCIENCE
BACHELOR OF SCIENCE IN ARTIFICIAL INTELLIGENCE AND MACHINE LEARNING
BACHELOR OF SCIENCE IN COMPUTER SCIENCE
BACHELOR OF SCIENCE IN COMPUTER SYSTEMS
BACHELOR OF SCIENCE IN COMPUTING TECHNOLOGIES

Semester(s) Module is Offered:

Spring

Module Leader:

alan.t.ryan@ul.ie