Module Code - Title:
CS4431
-
EFFECTIVELY BUILDING SOFTWARE WITH OTHERS
Year Last Offered:
2025/6
Hours Per Week:
Grading Type:
N
Prerequisite Modules:
Rationale and Purpose of the Module:
This is Block 2 (15 ECTS) on the 3+1 Integrated BSc/MSc Immersive Software Engineering and runs Year 1 Weeks 9 to 15 (7 Weeks) in the autumn semester.
This block introduces students to full stack development in a round trip engineering context. It covers all the phases of software specification, implementation, deployment and maintenance. The students will experience Agile and DevOps practices, and apply elements of project management.
Syllabus:
1. Requirements, analysis, and design: taking a sample system through life cycle phases with production of useful supporting documentation, taking account property/model checking, specification of APIs and the concept of encapsulation
2. Object-Oriented Programming : classes, inheritance, polymorphism, templates, and principles of good OO design
3. Web Services: publishing and consuming remote software services using HTTP APIs and other frameworks that support distributed systems.
4. Automated Verification, Testing and Validation
5. Relational and NoSQL Databases: tables, views, and the Data Definition Languages (DDL); integrity constraints, normalisation, transaction management; atomicity, consistency, isolation, durability (ACID) properties; indexing; triggers; query optimisation, embedded SQL, cursors, triggers, NoSQL databases, database architectures, and security.
6. Refactoring techniques to improve the quality of code.
7. Software metrics
8. Maintenance and Evolution, Continuous Engineering.
9. Software Lifecycle and Development Processes
- Traditional and agile processes in the context of principles of project management
ModOps: from a model to the running system, including digital twin concept, digital thread
- Dev Ops (CI/CD, continual validation of an unfinished or continuously developing project)
- Github/Gitlab, collaborative software development practices.
10. An introduction to the best practices for code reviews, and some application of them.
11. Preparing for Residency Part 2: seminars on coding exams and interview practice
Learning Outcomes:
Cognitive (Knowledge, Understanding, Application, Analysis, Evaluation, Synthesis)
On successful completion of this module, students will be able to:
- Use an agile Software Lifecycle (SLC) for management of the development process
- Document requirements for a specified problem with a focus on Architecturally Significant Requirements (ASRs)
- Create and evaluate a set of object-oriented candidate designs incorporating the business and data tiers of a 3-tiered architecture with a focus on specification of Application Programming Interfaces (APIs)
- Create a normalised data model for a relational database and data structures for NoSQL database
- Design test cases based on Test Driven Development (TDD)
- Build software using the OO paradigm and industry standard DevOps tool chains that support the concepts of Continuous Integration / Continuous Deployment (CI/CD) starting with shared code repositories
- Build software that can be maintained by a different person than the author.
- Present code for paper-based review in code inspections
- Evaluate code and apply refactoring techniques to improve its maintainability
- Develop changes to software incrementally while maintaining invariants.
- Write a CV that clearly illustrates the student's progress towards graduate attributes.
Affective (Attitudes and Values)
On successful completion of this module, students will be able to:
- Project manage development of a software application using a lifecycle approach.
- Perform peer-based review,.
- Appreciate the employer perspective when preparing for residency.
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:
Gehrke, J., and Ramakrishnan, R. (2014)
Database Management Systems, 3rd Edition
, McGraw-Hill
Sommerville, I. (2015)
Software Engineering, 10th Edition
, Pearson
R. S. Pressman and B. Maxim (2014)
Software Engineering: A Practitioner's Approach 8th
Edition
, McGraw-Hill
Knuth, D., and Fuller D. J. (2011)
Art of Computer Programming, Volumes 1-4, A Boxed Set
, Addison-Wesley
Other Relevant Texts:
Martin, R. C. (2018)
Clean Code: A Handbook of Agile Software Craftsmanship
, Pearson
Althoff, C. (2017)
The Self-Taught Programmer: The Definitive Guide to Programming
Professionally, Self
, Self-Taught Media
Laakmann McDowell, G. (2015)
Cracking the Coding Interview: 189 Programming Questions
and Solutions 6th Edition
, CareerCup
Programme(s) in which this Module is Offered:
Semester(s) Module is Offered:
Autumn
Module Leader:
chris.exton@ul.ie