Not logged in. Login

CMPT 276 D2

Calendar Description

An overview of various techniques used for software development and software project management. Major tasks and phases in modern software development, including requirements, analysis, documentation, design, implementation, testing,and maintenance. Project management issues are also introduced. Students complete a team project using an iterative development process. Prerequisite: One W course, CMPT 225, (MACM 101 or (ENSC 251 and ENSC 252)) and (MATH 151 or MATH 150), all with a minimum grade of C-. MATH 154 or MATH 157 with at least a B+ may be substituted for MATH 151 or MATH 150. Students with credit for CMPT 275 may not take this course for further credit.

Instructor's Objectives

The theory and practice of team-based software development throughout the software life cycle are introduced using a significant development project. Students will extend their programming and software development skills to include requirements engineering, test-driven development, and collaborative development with GitLab.

Option 1

Students will work in teams to develop an Android application using Java. Self-study materials for Android development with Java will be provided, while lectures will focus on higher-level software engineering topics. The team project focuses on an agile team experience developing an Android application.

Project: Sudoku Vocabulary App

Option 2

Student teams may alternatively choose to work on a challenging C++ development project using the Parabix programming framework.

Parabix Framework Project

Reference Materials

Android Programming

Android Programming: The Big Nerd Ranch Guide (3rd Edition), Bill Phillips, Chris Stewart, and Kristin Marsicano, Big Nerd Ranch, 2017, 9780134706054 (Available online through SFU Library).

  • Self-Study Assignment 1: Read Chapters 1-4 and do all the exercises.
  • Self-Study Assignment 2: Read Chapters 5-6 and do all the exercises.

Parabix Programming

Version Control

Pro Git, Scott Chacon and Ben Straub, Apress, 2014.

Topics

  • Software Process: software life cycle, agile vs plan-driven development.
  • Requirements: system analysis and modeling, requirements specification
  • High-level Design: architectural, design patterns
  • Implementation: coding style, code review, pair programming
  • Quality assurance: unit & integration testing
  • Development tools such as IDE, debugger, and revision control (Git/GitLab).
  • Diversity and ethics of software development

Course Organization

Students are assigned to work in teams of three or four students each to carry out a significant software development project over the semester. An iterative development process will be used over the semester using an agile model.

Office Hours

Professor

  • Office: SRYE 5110
  • Wednesday 14:30-15:30
  • Friday 14:30-15:30
  • Online appointments by Zoom.

T.A.

Grading

  • Weekly Quizzes (best 8) scaled to 20%
  • Iterations: 5%, 5%, 10%, 10%
  • Project Report 15%
  • Individual report 5%
  • Team assessment 5%
  • Final Exam 25%
  • Dates and times are planned, but may be adjusted as necessary.

Note: Android programming exercises will be assigned but are not graded.

Project

Notes

Quizzes

  • Q1. Based on notes for intro to SE, software quality, software processes. Quiz: Friday January 13 2023. Answers: b, d, a, d, a, b, d, a, b, a.
  • Q2. Based on notes for requirements engineering. Quiz: Friday January 20 2023. Answers: e, b, a, c, c, c, d, b, a, a.
  • Q3. Based on notes for teamwork and Git. Quiz: Friday January 27 2023. Answers c, b, a, b, d, c, d, a, e, c.
  • Q4. Two quiz versions: Quiz: Friday February 03 2023.
    • Android quiz based on Chs. 1-4 of Big Nerd Ranch. Answers: c, d, c, a, b, c, c, b, b, b.
    • Parabix quiz based on Introduction to Parabix notes. Answers: c, a, a, e, c, c, c, d, e, b.
  • Q5. Based on notes on testing terminology, unit testing and fault seeding and mutation adequacy. Quiz: Friday February 10 2023. Answers: a, b, c, 80, c, d, c, d, d.
  • Q6. Based on notes on open source software, ACM code of ethics, software refactoring. Quiz: Friday February 17 2023. Answers: c, c, c, d, b, b, e, b, e, c.
  • Q7. Two quiz versions: Quiz Friday March 03 2023
    • Android groups: based on Chapters 1-6 of Android Programming: The Big Nerd Ranch Guide. Answers: a, b, c, c, c, b, a, c, b, b.
    • Parabix groups: based on CSV parsing, editing and CSV2JSON notes. Answers: b, c, c, b, c, a, b, b, e, b.
  • Q8. Based on notes on software engineering for performance. Quiz: Friday March 10 2023. Answers: d, a, d, c, d, b, d, b, c, c.
  • Q9. Based on Testing III notes: Regression Testing, Life Cycle Test Automation. Quiz: Friday March 17 2023. Answers: a, a, d, e, c, b, d, b, c, d.
  • Q10. Based on notes on software security and software safety, as well as software metrics. Quiz: Friday March 24 2023. Answers: a, b, e, b, c, c, b, b, a, c.

Final Exam

  • In person final exam, Saturday April 15 2023, 08:30, SRYE 3016.
  • Exam structure: 50% multiple choice, 50% essay/problem questions.
  • Questions about the final exam will *only* be answered on the last day of classes.

Students must attain an overall passing grade on the weighted average of exams in the course in order to obtain a clear pass (C or better).

Updated Sun Sept. 10 2023, 10:37 by cameron.