Module Code - Title:
CS4222
-
SOFTWARE DEVELOPMENT
Year Last Offered:
2025/6
Hours Per Week:
Grading Type:
N
Prerequisite Modules:
Rationale and Purpose of the Module:
Starting from the foundations laid out in Introduction to Programming and Introduction to Model Driven Development, to progress to classical algorithms, data structures, and advanced programming constructs, like e.g. recursion. Students will experience modular design and software reuse, and small scale collaborative development.
Syllabus:
On the basis of the concepts and programming skills learned in Introduction to Programming and Introduction to Model Driven Development, the following topics will be dealt with:
a. a more detailed examination of functions and parameter types;
b. a more detailed examination of classes, objects and encapsulation;
c. Introduction to abstract data types, and their use to describe and implement common data structures (e.g. arrays, lists, trees etc.) and common algorithms on those structures (e.g. sorting and searching techniques);
d. Recursion as a problem solving technique, iterative and recursive solutions to problems and their implementation;
e. Selected applications, e.g. to grammars and parsing for simple languages (expressions, logics, etc.);
g. Modularity in specification and code, the concept of component models; and the use of simple libraries;
h. Methods and techniques to go from models to code.
Learning Outcomes:
Cognitive (Knowledge, Understanding, Application, Analysis, Evaluation, Synthesis)
On successful completion of this module, students should be able to:
1. Given a moderately complex problem description, design, evaluate, and implement models and related programs that solve the problem.
2. Design, formulate and assemble software components (e.g., classes, methods and functions) to solve a specified problem.
3. Identify, describe and apply common abstract data type techniques in the development of components and programs.
4. Identify, describe, compare and integrate basic data structure manipulation algorithms (e.g. search, sort) into software solutions.
5. Distinguish, construct and compare solutions based on recursion and iteration.
6. Design and construct solutions to simple applicative problems.
Affective (Attitudes and Values)
N/A
Psychomotor (Physical Skills)
On successful completion of this module, students should be able to:
1. Use an object-oriented language to solve a range of problems.
How the Module will be Taught and what will be the Learning Experiences of the Students:
ACTIONED: Clear algorithmic thinking means a programmer, with even the most basic syntax knowledge, can design and build a sequential, complete and replicable process. These cognitive processes help with creating solutions to stated problems, in the form of computational algorithms. The interactive lectures explore concepts though the Teaching Styles of Acquisition & Discussion. The computer labs follow a Problem-based Learning approach, where objectives in natural language (English) are presented, and the student's coding is the solution mechanism. These code puzzles are also designed to facilitate a reflective probing of their understanding and expose common misconceptions, using the Teaching Styles of Practice & Investigation.
Problem-based learning (PBL) is an excellent realisation of Brookfield's 3rd lens, as pedagogic theory formed the basis of this successful teaching methodology.
PBL takes a student with domain knowledge and prepares them for professional practice, a methodology fully applicable even at this early stage. PBL avoids a common pitfall in education, when students ignore the instructor's planned learning outcomes and focus instead on just getting an acceptable grade. PBL is a direct mapping of constructivist principles to desired learning outcomes, where the presentation of a well-defined problem (appropriate in difficulty to the student's knowledge and abilities) supports the development of convergent and critical thinking abilities as the student learns hypothetical-deductive logic. This authentic assessment is exactly what is required for their future professional practice.
The instructional principles for PBL are derived from Constructivism. Constructivist learning requires a puzzle to be solved, contextualised, and assimilated into existing knowledge. Disequilibrium facilitates learning, and any errors or missteps need to be perceived as a result of learners' conceptions, and therefore not minimized or avoided. Here, objectives in natural language (English) are presented and the student's coding is the solution mechanism. At an obvious level, solving these puzzles requires a two-step process. The student must recompose the natural language problem statement into a series of discrete, sequential objectives. Then, they must realise this solution with Java, overcoming any difficulties this presents. These code puzzles are explicitly designed to facilitate a reflective probing of their understanding and expose common misconceptions.
The labs qualify as a two-stage learning platform. Firstly 'Formative Assessment', as the labs are a mechanism designed to identify any flawed understandings and provide the opportunity for students to self-assess how to eliminate them. Students attend in-person and go through the experience of solving some puzzles and struggling with others. When unsuccessful, they are encouraged (in class) to reflect and analyse why. Do they understand the solution? If not, they have uncovered a deeper problem, as the puzzles are pitched at an appropriate level. Most do immediately understand the solution. If they failed to create that solution, why? Was it a lack of vocabulary/syntax? Was it a lack of logic, a flaw in their algorithmic thinking? Why, why, why? This is a crucial step in the learning processes.
Research Findings Incorporated in to the Syllabus (If Relevant):
Prime Texts:
Y.D Liang (2025)
Introduction To Java Programming and Data Structures
, Pearson Higher Education
Other Relevant Texts:
Programme(s) in which this Module is Offered:
BSMTCSUFA - MATHEMATICS AND COMPUTER SCIENCE
Semester(s) Module is Offered:
Spring
Module Leader:
alan.t.ryan@ul.ie