Course syllabus
Course Prescription
Course Overview
This course provides an in-depth look as to what it means for software to be maintainable. It presents the principles and practices that have been proposed for developing maintainable software. Students will learn to evaluate and critique these principles and practices through examining their application in practice and through understanding the research on their effectiveness. This will prepare students for developing high-quality software products in industry.
Capabilities Developed in this Course
| Capability 1: | Disciplinary Knowledge and Practice |
| Capability 2: | Critical Thinking |
| Capability 3: | Solution Seeking |
| Capability 4: | Communication and Engagement |
| Capability 5: | Independence and Integrity |
| Capability 6: | Social and Environmental Responsibilities |
Learning Outcomes
- Explain the importance of software quality to a successful software system(Capability 1 and 2)
- Explain the fundamental concepts and processes for developing maintainable software(Capability 1 and 2)
- Critically assess and communicate the maintainability of software systems according to standard or well-known criteria(Capability 1, 2 and 4)
- Independently apply appropriate principles and techniques to develop software that is maintainable or improve the maintainability of existing software(Capability 2, 3 and 5)
- Explain and critically evaluate some of the proposed criteria, principles, and techniques associated with software maintainability.(Capability 2)
- Develop and demonstrate a responsibility for creating maintainable software(Capability 1 and 6)
Assessment
Your final grade will consist of 100% coursework. There are 4 assignments worth a total of 50%, a Learning Journal worth 10%, and 2 tests worth 20% each.
- Assignment 1 (10%):
-
- Development of a tiny Java application
- A short report explaining some of the decisions you made in the development of your application.
- Due around the middle of week 2.
- Assignment 2 (10%)
-
- Details to be announced, likely to involve reading code written by other people
- Due around the end of week 5.
- Assignment 3 (10%)
- Details to be announced, likely to be maintaining the code submitted for Assignment 1
- Due around the end of week 7.
- Assignment 4 (20%)
-
- Details to be announced, likely to be maintaining the code submitted for Assignments 1 and 3
- Due around the end of week 12.
- Learning Journal (10%)
-
- Keep a record of what you have learned, what you have done, and a reflection of how you are performing.
- Details will be provided in lecture 1.
- To encourage you to keep your journal up-to-date you are to submit your journal every 2 weeks (1% each) and then at the end of the course (5%)
- Test 1 (20%)
-
- During week 6
- Test 2 (20%)
-
- During week 12
Instructors
Course Coordinator
Yu-Cheng Tu, Room 303-517, yu-cheng.tu@auckland.ac.nz
Lecturers
Yu-Cheng Tu, Room 303-517, yu-cheng.tu@auckland.ac.nz
Ewan Tempero, Room 303-533, e.tempero@auckland.ac.nz
Lecture timetable:
Monday 10-11am, Rm: 303-B05
Tuesday 11-12pm, Rm: 303-B05
Wednesday 11-12pm, Rm: 303-B09
Topics
This is a graduate course, and so the specific material covered will depend on what the current research is to some extent. But the kinds of topics that might be covered include:
- Program Comprehension
- Testability
- Modifiability
- Code quality
- Design quality
- Code smells
- Design patterns
- Antipatterns
- Clean Code
- Clean Architecture
- Refactoring
- SOLID principles
- Test-driven development
While students may have encountered some of these topics before, the course will take a critical look at their effectiveness, and the research that supports them.
Course summary:
| Date | Details | Due |
|---|---|---|