CPEN 321: Software Engineering (Fall 2020 )
1. Overview
The course explores engineering principles for building non-trivial software-intensive systems: requirement specification,
design, implementation, verification, and maintenance. The course uses a development project as the basic learning vehicle,
providing students with an environment for applying the learned principles in practice while coping with constraints
encountered when working on a real team: uncertain requirements, tight deadlines, etc. Students are evaluated based
on their understanding of the software engineering principles and their ability to apply these principles in practice.
Learning Objectives
By the end of the course, students will learn several fundamental skills in modern software development:
- software engineering principles: requirements specification, design, implementation, verification, and maintenance
of software;
- client-server application development paradigms, including mobile and cloud-based development;
- teamwork, inter- and intra-team communication;
- management of uncertainty in customer demands;
- ability to adapt quickly to new toolsets;
- efficient technical communication and presentation.
Course Format
- The class meets online two times a week for lectures (2x1.5h) and once a week for a lab section (2h).
- The grading is based on the development project, midterm, in-class activities, and participation marks. There is no final exam.
- Lectures are delivered synchronously and recorded.
- Attendance and active participation are strongly encouraged: discussions and in-class activities are essential to your success in the course (and are fun).
- The majority of in-class activities are graded and are due 6 hours after the end of the lecture.
- There is a mandatory mid-term exam in one of the lectures.
- Labs during the second and third weeks of the course we will hold tutorials on Android and Node.JS (online and recorded).
- Attendance and active participation are strongly encouraged.
- Starting mid-October, lab sections are reserved for group meetings.
Each group must meet with a TA for 30 minutes once a week during their lab time.
In exceptional cases, an alternative time can be arranged in coordination with your TA.
Accommodations:
- We will accommodate students in different timezones.
- We will not accommodate co-op and other non-COVID-19-related engagements.
- Please make sure you have sufficient time to invest in the course and that your schedule allows you to attend the lectures, the lab sessions, and meet with your project group members in reasonable hours.
Course Prerequisites
One of EECE 210, CPEN 221, CPSC 210, EECE 309.
2. Staff
Instructor |
Prof. Julia Rubin
Lectures:
Mon. 3-4:30pm, Zoom
Wed. 5-6:30pm, Zoom
Office hours:
Mon. 4:30-5:30pm (or by appointment), Zoom |
TAs |
Sahar Badihi, Michael Cao, Jackson Xie,
Faridah Akinotcho, Yingying Wang
Labs:
Mon. 10am-12pm, Zoom
Tue. 3-5pm, Zoom
Wed. 10am-12pm, Zoom
Office Hours:
Fri. 12-1pm (or by appointment), Zoom |
3. Communication and Important Links
- Course syllabus, in-class activities, project milestones, etc. are available on Canvas.
- Grades for the assignments will be posted throughout the term. Students are encouraged to check it frequently and let the staff know of any mistakes and inconsistencies.
- Course communication (questions, discussions, announcements, etc.) will be done via Piazza. Please enroll yourself!
Like most online services, Piazza is hosted outside Canada.
Please come and talk to the instructor if you are uncomfortable using Piazza.
Support Resources
Time Zone in Canvas
The course is set to Pacific Time (PT) time zone, where the University of British Columbia Vancouver Campus is located.
All due dates are set to PT. Canvas will not automatically change time zones for you.
If you want Canvas to display dates in your local time zone, you can go into your settings and adjust to your personal local time zone.
Please refer to Canvas guide on how to set a time zone in your user account.
4. Project
A major part of the course is the development project. The project simulates real development settings, where development teams communicate with customers to implement software that satisfies the customers’ requirements. The intent of this project is to give you the opportunity to apply the course concepts to a real system.
- Scope: You are required to develop a client-server software system with the client (front-end) running on a mobile device and the back-end running on the cloud. Several examples of reasonably-scoped projects can be found here.
- Front-end Technology: The client mobile app must be written natively for Android either in Java or using the React Native cross-platform mobile framework. Using other tools and frameworks, e.g., Expo, is not permitted.
The app should run on a Google Pixel 3 emulator running Android Q (API 29).
- Back-end Technology: The back-end must be implemented in Node.js.
If your back-end uses a database, you can choose between MySQL and MongoDB. You can host your back-end on a cloud infrastructure of your choice. Most vendors, such as Amazon, Microsoft, Google, and IBM, provide free student subscriptions. The course staff can also provide you with a paid subscription to Microsoft Azure.
If interested, send a request to the instructor on Piazza with (a) your full name, (b) your project name, and (c) your Microsoft account id, if available, or an email address that will become your account ids.
- Code Management: All development artifacts must be stored in Git - a popular version control system. You will need a GitHub or Bitbucket account, but feel free to create a throw-away or anonymous account for this course, if that makes you more comfortable. Being familiar with Git is essential; please take a look at the 'getting started' part of the Atlassian Git Introduction to get you started. A shorter, less formal, guide is also available.
- Groups: For milestones M1-M5, projects are performed individually.
Starting from M6, 4 students form a group (2 students for the front-end and 2 for the back-end),
choose one of their individual projects, and continue further develop it as a group.
You will get to know other students taking the course and their proposed project in the M2 milestone.
- Communities: Groups are further paired to form communities. A community consists of two groups, A and B, with 4 students in each group. Groups A and B act as customer and development teams to each other. That is, group A acts as a customer of group B, while group B acts as the customer for group A. The project grade is composed from a number of assignments, performed individually and then in both customer and developer roles.
- Meeting times: Communities must meet for the M5-M10 milestones during the allocated lab times (30 mins per community). The meetings will be facilitated and evaluated by the TAs. A staff member will contact your community to set up a meeting during your lab section.
Choose your team members wisely as they contribute to the success of your team; no changes will be permitted.
Use M2 information and Piazza “Search for Teammates” page to find team members.
If you do not have a team organized by the October 7th deadline, we will assign you to a team randomly.
Milestones and Deliverables
- M1: Project ideas (individual)
- M2: Project pitches (individual)
- M3: Requirements (individual)
- M4: Design (individual)
- M5: App Setup (individual)
- M6: MVP (group)
- M7: Test Setup (group)
- M8: Code Review (group)
- M9: Testing (group)
- M10: Final product (group)
The milestone submission schedule is outlined in the Course Schedule table below.
The detailed specification for each milestone deliverable is attached in Canvas.
Late deliverables will be subject to the following penalties:
- 1st deliverable late: 20% off for every 24 hours of delay.
- 2nd deliverable late: 40% off for every 24 hours of delay.
- 3rd deliverable late: 80% off for every 24 hours of delay.
- 4 or more deliverables late: no points given.
5. Course Schedule
Note that this is a tentative week-by-week guide and thus is subject to change.
|
Date |
Topic |
Major deadlines |
W1 |
Wed, Sept 9, 2020 |
Intro, what is SE |
|
W2 |
Mon, Sept 14, 2020 |
Software Lifecycle, Development Processes
Tutorials: Mobile |
|
|
Wed, Sept 16, 2020 |
UML |
|
W3 |
Mon, Sept 21, 2020 |
Requirements
Tutorials: Backend |
M1: Project ideas (individual, 3%),
by Monday, September 21, 12pm PST
Sept 21: Last day to withdraw without a W standing |
|
Wed, Sept 23, 2020 |
Requirements |
M2: Project pitches (individual, 5%),
by Friday, September 25, 12pm PST |
W4 |
Mon, Sept 28, 2020 |
Architecture, Design |
M3: Requirements (individual, 5%),
by Monday, September 28, 12pm PST |
|
Wed, Sept 30, 2020 |
Vote on project pitches (asynchronous) |
|
W5 |
Mon, Oct 5, 2020 |
Vote on project pitches (asynchronous) |
M4: Design (individual, 5%),
by Monday, October 5, 12pm PST |
|
Wed, Oct 7, 2020 |
REST, Microservices |
Groups are formed by Wednesday, October 7, 12pm PST
- Out of their four projects, each group picks one which they will implement.
- Group members register on Canvas (one registration per group).
Communities are formed by Friday, October 9, 12pm PST
- Communities, (possibly updated) project requirements and design documents, and preferred meeting times are registered on Canvas (one registration per community).
|
W6 |
Mon, Oct 12, 2020 |
Thanksgiving Day |
M5: App Setup (individual, 5%),
by Tuesday, October 13, 12pm PST Communities meet their TA.
|
|
Wed, Oct 14, 2020 |
Teamwork,
Advanced Version Control |
|
W7 |
Mon, Oct 19, 2020 |
Q/A session |
|
|
Wed, Oct 21, 2020 |
Code Reviews, Anti-patterns |
|
W8 |
Mon, Oct 26, 2020 |
Testing |
M6: MVP (development team, 10%),
by 12pm on the day before the group meeting. |
|
Wed, Oct 28, 2020 |
Testing |
Oct 30: last day to withdraw |
W9 |
Mon, Nov 2, 2020 |
Verification and Validation, Analysis |
M7: Test setup (development team, 5%),
by 12pm on the day before the group meeting. |
|
Wed, Nov 4, 2020 |
Verification and Validation, Analysis |
|
W10 |
Mon, Nov 9, 2020 |
Continuous Integration, DevOps
preparation for mid-term |
M8: Code review (both customer and development teams, 5%),
by 12pm on the day before the group meeting. |
|
Wed, Nov 11, 2020 |
Remembrance Day |
|
W11 |
Mon, Nov 16, 2020 |
Guest Lecture |
M9: Testing + Customer acceptance test (both customer and development teams, 5%),
by 12pm on the day before the group meeting. |
|
Wed, Nov 18, 2020 |
Mid-term |
|
W12 |
Mon, Nov 23, 2020 |
Open to the topic of interest |
|
|
Wed, Nov 25, 2020 |
Recap, Q/A, and preparation for final project presentation |
|
W13 |
Mon, Nov 30, 2020 |
Final project presentations in the lecture and lab times |
M10: Final project presentations (development team, 12%),
in class on Monday and during lab hours |
|
Wed, Dec 2, 2020 |
Top project presentations and awards |
|
6. Grading
Grading for this course is based on four components:
- Project – 60%
- M1 (proposal): 3%
- M2-M5, M7-M9: 5% each (35% in total)
- M6 (MVP): 10%
- M10 (final demo): 12% (assessed based on both the quality of the final product and the quality of the SE process followed)
- Mid-term – 20%
- In-class activities: 10%
- Participation – 10%
- Peer-evaluation by team members – 4%
- TA evaluation – 2%
- Active participation in class, piazza, TA meetings – 4%
7. Absence
- Project meetings with TAs starting M5 are mandatory. You can miss one weekly meeting. If your work is listed in the weekly report for that meeting, you will be graded with your group. No points will be credited starting from the 2nd absence.
- You can miss up to 1 in-class graded activity. Only your top n-1 grades, excluding the one with the lowest mark, will be considered for the final grade.
- If you miss more than 1 in-class graded activity, miss the mid-term exam, or have other special circumstances and would like to request a make-up for a missed grade,
you should submit a request for academic concession here
.
8. Acknowledgments
We gratefully acknowledge the inspiration we drew and part of the material that we adapted from the previous editions
of CPEN 321 and CPSC 310 (University of British Columbia), as well as from CSE 403 (University of Washington), CSC C01 (University of Toronto),
CS 169 (UC Berkley), and CS 428 (University of Illinois at Urbana-Champaign).
9. University Policies
UBC provides resources to support student learning and to maintain healthy lifestyles but recognizes that sometimes crises arise and so there are additional resources to access including those for survivors of sexual violence. UBC values respect for the person and ideas of all members of the academic community. Harassment and discrimination are not tolerated nor is suppression of academic freedom. UBC provides appropriate accommodation for students with disabilities and for religious, spiritual and cultural observances. UBC values academic honesty and students are expected to acknowledge the ideas generated by others and to uphold the highest academic standards in all of their actions. Details of the policies and how to access support are available here.
During this pandemic, the shift to online learning has greatly altered teaching and studying at UBC, including changes to health and safety considerations. Keep in mind that some UBC courses might cover topics that are censored or considered illegal by non-Canadian governments. This may include, but is not limited to, human rights, representative government, defamation, obscenity, gender or sexuality, and historical or current geopolitical controversies. If you are a student living abroad, you will be subject to the laws of your local jurisdiction, and your local authorities might limit your access to course material or take punitive action against you. UBC is strongly committed to academic freedom, but has no control over foreign authorities (please visit calendar.ubc.ca/vancouver/index.cfm?tree=3,33,86,0 for an articulation of the values of the University conveyed in the Senate Statement on Academic Freedom). Thus, we recognize that students will have legitimate reason to exercise caution in studying certain subjects. If you have concerns regarding your personal situation, consider postponing taking a course with manifest risks, until you are back on campus or reach out to your academic advisor to find substitute courses. For further information and support, please visit academic.ubc.ca/support-resources/freedom-expression.