Back to Modules
IS212

Software Project Management

1 CreditsTerm 1

Description

In IS212 (Software Project Management), students will learn about modern frameworks and tools for software project management. In particular, students will gain hands-on experience with ‘scrum’ and several agile techniques (e.g. test-driven development, AI-based pair programming, continuous integration) as they design and build the first release of a software system. Students will gain an appreciation for how these methods help to manage the inherent uncertainty of software projects, as well as how they ensure that developers work towards a common goal at a sustainable pace.

Requisites

Prerequisites: IS113 & (IS112/IS105) - Pre-req

Co-requisites: None

Anti-requisites: IS212/ IS203/CS203 - Mutually Exclusive

Attributes

Department: SCIS

Course Level: Undergraduate

Tracks: N/A

Areas: Business Options Econ Major Rel/Econ Options IT Solution Development Electives Information Systems Core (Intake 2018 and earlier) Information Systems Core (Intake 2019 to 2023) Smart-City Mgmt & Tech Core (Intake 2022 onwards) Social Sciences/PLE Major-related Tech for Business Electives

Learning Outcomes

Course Objectives Upon completion of the course, students will be able to: Apply a range of agile methods to develop and manage a software project. Manage complexity and uncertainty in projects using the scrum framework. Design and document software systems using appropriate notations and abstractions. Ensure software quality through tests, continuous integration, and (AI-based) pair programming. Collaborate with product owners, scrum masters, and other developers to deliver value. Competencies Students will gain skills in the following: 1. Comparing the pros/cons of different approaches to software project management. 2. Managing a software project using the scrum framework and associated tools (e.g. Jira, Miro). 3. Translating customer briefings into epics and user stories. 4. Designing acceptance criteria and test cases for user stories. 5. Estimating the effort required to complete user stories, e.g. by planning poker. 6. Designing software systems at different levels of abstraction: context, containers, components. 7. Modelling object-oriented code using UML and implementing it using Python/Flask/ORM. 8. Using Git, GitHub, and GitHub Actions for version control and continuous integration. 9. Improving software quality using (AI-based) pair programming, TDD, and refactoring. 10. Collaborating with a product owner and team of developers towards a common goal.

Graduate Learning Outcomes

Disciplinary Knowledge, Critical thinking & problem solving, Collaboration and leadership, Communication

Competencies

Software Design, Agile Software Development, Applications Development, Continuous Integration and Continuous Deployment, Software Testing