University of Technology Sydney

32555 Fundamentals of Software Development

Warning: The information on this page is indicative. The subject outline for a particular session, location and mode of offering is the authoritative source of all information about the subject for that offering. Required texts, recommended texts and references in particular are likely to change. Students will be provided with a subject outline once they enrol in the subject.

Subject handbook information prior to 2025 is available in the Archives.

UTS: Information Technology: Computer Science
Credit points: 6 cp

Subject level:

Postgraduate

Result type: Grade and marks

Requisite(s): 120 credit points of completed study in spk(s): C10061 Bachelor of Engineering Diploma Engineering Practice OR 120 credit points of completed study in spk(s): C10066 Bachelor of Engineering Science OR 120 credit points of completed study in spk(s): C10067 Bachelor of Engineering OR 120 credit points of completed study in spk(s): C09067 Bachelor of Engineering (Honours) Diploma Professional Engineering Practice OR 120 credit points of completed study in spk(s): C09066 Bachelor of Engineering (Honours)
These requisites may not apply to students in certain courses. See access conditions.
Anti-requisite(s): 49211 Software Engineering Foundation AND 49212 Software Design and Implementation AND 49247 Object-oriented Technology AND 49263 Software Analysis and Design AND 49265 Software Technologies

Description

This subject introduces students to the fundamentals of contemporary software development. This subject covers the theoretical and practical aspects of software modelling and development methods, tools, and techniques. In this subject, students learn how to analyse, design, develop and evaluate software programs that implement realistic but manageably small-scale software requirements. Student learning is supported via online lectures and facilitated practical workshops (tutorial/laboratory) sessions. Peer learning and collaboration are also encouraged within and outside the classroom, however, each student must complete their individual and group tasks. The primary objective is that students experience, understand the importance of, and can apply foundational software development practices.

Subject learning objectives (SLOs)

Upon successful completion of this subject students should be able to:

1. Analyse and document system requirements based on user needs and context. (B.1).
2. Use a range of modelling and programming techniques and tools to propose software system for users. (C.1)
3. Design a software system to meet the specified user requirements. (C.1)
4. Create software programs to address the specified user requirements. (D.1).
5. Apply appropriate testing techniques to ensure the quality of the software system. (D.1)

Course intended learning outcomes (CILOs)

This subject also contributes specifically to the development of the following Course Intended Learning Outcomes (CILOs):

  • Socially Responsible: FEIT graduates identify, engage, and influence stakeholders, and apply expert judgment establishing and managing constraints, conflicts and uncertainties within a hazards and risk framework to define system requirements and interactivity. (B.1)
  • Design Oriented: FEIT graduates apply problem solving, design thinking and decision-making methodologies in new contexts or to novel problems, to explore, test, analyse and synthesise complex ideas, theories or concepts. (C.1)
  • Technically Proficient: FEIT graduates apply theoretical, conceptual, software and physical tools and advanced discipline knowledge to research, evaluate and predict future performance of systems characterised by complexity. (D.1)

Contribution to the development of graduate attributes

Engineers Australia Stage 1 Competencies

Students enrolled in the Master of Professional Engineering should note that this subject contributes to the development of the following Engineers Australia Stage 1 competencies:

  • 1.3. In-depth understanding of specialist bodies of knowledge within the engineering discipline.
  • 1.5. Knowledge of engineering design practice and contextual factors impacting the engineering discipline.
  • 2.2. Fluent application of engineering techniques, tools and resources.
  • 2.3. Application of systematic engineering synthesis and design processes.

Teaching and learning strategies

Students will learn foundation level software development practices through online lectures and hands-on workshops (tutorials and labs). Students will prepare for the workshops by listening to online lectures and studying related material to effectively participate in the workshop activities. In workshops, the software modelling and development methods, tools, and techniques will be demonstrated by the tutors before being applied by students to different scenarios. Feedback is regularly provided throughout the teaching sessions in several different formats: discussions of the workshop questions, feedback on the software models and programs developed in the laboratory and as a part of the formal assessment tasks. As the subject progresses, students gain sufficient foundational level competence to complete software development tasks within a small range of acceptable solutions.

Content (topics)

Topics covered are:

  1. Software Development Process
  2. Systems Requirements, Use Case Models
  3. Objects and Classes
  4. Systems Design: Class Diagrams
  5. Model-Driven Code Generation
  6. Object Oriented Programming
  7. User Interface Design
  8. Software Testing

Assessment

Assessment task 1: UML Models and Software Development

Intent:

Demonstrate software modelling and software development skills.

Objective(s):

This assessment task addresses the following subject learning objectives (SLOs):

1, 2, 3, 4 and 5

This assessment task contributes to the development of the following Course Intended Learning Outcomes (CILOs):

B.1, C.1 and D.1

Type: Project
Groupwork: Group, group and individually assessed
Weight: 70%
Criteria:

Correct use of UML Object Oriented Analysis and Design Techniques.

Correct conversion of Software Design Models into a Software Program

Assessment task 2: Online Quiz on Canvas (Software Modelling)

Intent:

Demonstrate understanding of theoretical concepts or knowledge of software modelling skills.

Objective(s):

This assessment task addresses the following subject learning objectives (SLOs):

1, 2 and 3

This assessment task contributes to the development of the following Course Intended Learning Outcomes (CILOs):

B.1 and C.1

Type: Quiz/test
Groupwork: Individual
Weight: 15%
Criteria:

Correct use of UML Object Oriented Analysis and Design Techniques.

Assessment task 3: Online Quiz on Canvas ( Programming Concepts)

Intent:

Demonstrate understanding of theoretical concepts or knowledge of programming.

Objective(s):

This assessment task addresses the following subject learning objectives (SLOs):

4 and 5

This assessment task contributes to the development of the following Course Intended Learning Outcomes (CILOs):

D.1

Type: Quiz/test
Groupwork: Individual
Weight: 15%
Criteria:

Correct understanding of programming concepts.

Minimum requirements

In order to pass the subject, a student must achieve an overall mark of 50% or more.

Recommended texts

Software Modelling

Noushin Ashrafi and Hessan Ashrafi. Object-Oriented Systems Analysis and Design. Pearson Education (Electronic Resource available from UTS library).

Java Programming

C. Thomas Wu. An Introduction to Object-Oriented Programming with Java, McGrawHill.

Object-Oriented Programming in Python

Mark Lutz. Programming Python: Powerful Object-Oriented Programming, O'Reilly Media.

References

Software Modelling

Alan Dennis, Barbara Haley Wixom and David Tegarden. System Analysis and Design UML Version 2.0. John Wiley & Sons Inc.

Martin Fowler. UML Distilled: A Brief Guide to the Standard Object Modeling Language (Electronic Resource available from UTS library).

Craig Larman. Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development (Electronic Resource available from UTS library).

Kenneth E.Kendall and Julie E. Kendall. Systems Analysis and Design, Pearson Education.

Java Programming

Frank Nielsen. Concise and practical introduction to programming algorithms in java (Electronic Resource available from UTS library).

David Parsons. Foundational Java key elements and practical programming (Electronic Resource available from UTS library).

Python Programming

Installing Jupyter Notebook and introduction: http://opentechschool.github.io/python-data-intro/core/notebook.html Links to an external site.

Python for Everybody: Exploring Data Using Python 3 (2016). Charles R. Severance. PDF available. Links to an external site.

Python and required libraries: Anaconda distribution: https://docs.anaconda.com/anaconda/install/ Links to an external site.

Automate the Boring Stuff with Python: https://automatetheboringstuff.com

Other resources

Canvas will be used to distribute the course material and to facilitate group work. Canvas can be accessed via https://canvas.uts.edu.au/

You will need to have a student computer account in Building 11 with the Faculty of Engineering and Information Technology. If you are a faculty student you will already have one. If you are a non-faculty student you will need to ensure you have one. If you are unsure, or need to arrange an account, you can contact IT Support via one of the options listed on https://www.uts.edu.au/current-students/managing-your-course/using-uts-systems/it-support.