Welcome to UBC CPSC310 - 2015 W2

 Important to know: There will be 3 instructors!

There are three instructors for this section!  Elisa Baniassad (ebani at cs dot ubc dot ca) will be covering lectures in January, Gail Murphy (murphy at cs dot ubc dot ca) in February and Marc Palyart (mpalyart at cs dot ubc dot ca) in March. Depending on which month it is, please direct course related questions to the right person!


  • The waiting list is huge! Can you move me up? I really really need to get into this course! Sorry! There is a formal centralized process for waiting list management. Please visit this page to learn about how we process the wait list: Wait Lists | Computer Science at UBC.  
Note: DO NOT EMAIL THE INSTRUCTORS ABOUT THE WAITLIST!! We can't answer any waitlist related questions with any degree of confidence.  Maybe there will be space in the course, but we are unfortunately unable to predict. The instructors neither know where you are on the waitlist, nor can we check.  Sorry!! 
  • I can't get into the only lab that fits into my schedule! That's okay - usually people drop and you can get into the lab. If you aren't able to, we can sign you in manually after the add/drop date has passed -- at that time, show your TA your schedule and "prove" that you really are constrained to certain already full labs.  We will choose the least populated one from your available labs.  Do not mail the instructors about lab placement if this is your situation.
  • How many labs are there per week? There is one lab/week. 
  • If I am registered in a lab, but want to switch to another lab, can I simply swap with someone without changing my registration? No!!!! You must change your registration in the system. Because of the size of the class, we are unable to accommodate manual swaps. 

Quick Links

Course Description & Prerequisites

Introduction to Software Engineering: Specification, design, implementation and maintenance of large, multi-module software systems. Principles, techniques, methodologies and tools for computer aided software engineering (CASE); human-computer interfaces, reactive systems, hardware-software interfaces and distributed applications.

When you complete this course, you will be able to:

  • Perform the activities of software development effectively, using up-to-date methodologies or tools
  • Explain the technical and interpersonal challenges of software development
  • Communicate technical matters with programmers, managers, and clients effectively


  • CPSC 210 (Note, CPSC 211 is also an acceptable pre-req although the SSC may display a warning. Please email undergrad-info AT cs DOT ubc DOT ca if you're having trouble registering.)

People & Office hours


January: Elisa Baniassad (ebani AT cs DOT ubc DOT ca), ICCS237 (Office hours Friday 1:45-2:45)
February: Gail Murphy (murphy  AT cs DOT ubc DOT ca), ICICS/CS 305
    (Office hours: Monday Feb 1 and Feb 22 4-5pm
                           Friday Feb 5, Feb 12 and Feb 26 12-1pm or email to set up an appointment)
March: Marc Palyart (mpalyart AT cs DOT ubc DOT ca), ICICS/CS X469
    (Office hours: after class Monday,Wednesday,Friday 10am-11am except for April)

TA Lead: Giovanni Viviani (vivianig AT cs DOT ubc DOT ca)

TAs - Office Hours

SectionDay Time Place Instructor      Email
Lab L2A    T12:30-1:30X141Yoony Ok jyo1031 AT gmail DOT com
Lab L2B    R12:30-1:30DLC 1Lily Guo lily.guo AT alumni DOT ubc DOT ca
Lab L2CM  15-16DLC 1Tom Jin e2c8 AT ugrad DOT cs DOT ubc DOT ca
Lab L2DW15-16X151Bruce Li bruce.zh.li AT gmail DOT com
Lab L2E    R17-18DLC 1Stewart Grant stewbertgrant AT gmail DOT com
Lab L2FF12:30-13:30X337 Branden Sieglebrandensiegle AT hotmail DOT com


Piazza: please enrol! (this doesn't happen automatically)

When using Piazza to ask questions about lab/project work, you need to select the folder related to your lab.  This will help target your TA for a response, though anyone might answer.  Everyone in the class will still be able to see your post, unless you select a private post to instructors only.

Lecture & Lab Times

Section Day  Time  Place  Instructor 
Lecture             M/W/F 9-10ESB 1013 Elisa/Gail/Marc
Lab L2A    T    13:30-15:30ICICS 008Yoony Ok
Lab L2B    R10:30-12:30 ICICS 008Lily Guo
Lab L2CW    10-12ICICS 008Tom Jin
Lab L2DF15-17ICICS 008Bruce Li
Lab L2E    W16-18ICICS 008Stewart Grant
Lab L2FR17-19ICICS 008Branden Siegle

Note: The schedule for TA office hours will soon be available on the DLC page.

Labs are an important part of this course. Labs will provide you with the practical knowledge and skills required for the completion of your course assignments. Each lab is designed to give you the opportunity to meet and work as a group, and lab attendance is mandatory.

Each lab session is supervised by a teaching assistant (TA), who will introduce the necessary tools, provide instructions for the projects, answer questions and meet with each group to discuss the progress of the project.

Evaluation/Marking Scheme

Your grade in this course will be based on exams, labs, a project, and class participation as shown in the table below. In addition, lab attendance is mandatory and you will lose 1% of your overall grade (up to 5%) for each lab that is missed without an acceptable reason (e.g. illness).

*This marking scheme is subject to change -- especially in up to Jan 12.

Component Value
Final Exam 45%
Project 35%
Midterm 20%

To pass this course, you must obtain a 50% overall mark and, in addition, you must:

    • pass the project overall, AND
    • pass the final examination.

Students who fail the project or the final exam will be assigned as the final grade in the course the lower (or the minimum) of 45% (an F) and the grade computed using the above formula (whichever is lower).

Grade disputes

  • For project grades, first contact your TA and try to resolve the issue with them.
  • Unresolved project/assignment disputes and exam grading disputes must be brought to the instructor. Midterm exam grade disputes must be emailed to Gail with your student number and explanation of the problem by Friday March 4. Remarked project components and exams may go up or down in grade and the entire project component or exam will be remarked.

Posting grades

Project component grades will be provided in lab. Midterm grades will be through a web system.

Late policy

Project components will be due at a specific time. If you are not prepared for a lab it makes it very difficult to complete the remainder of the project. Although you will have to complete your components so that you can continue working on the project, components that are not completed by the due date and time will be worth 0. There will not be any extensions.


There will be a midterm and a final examination.

Midterm Wednesday February 24 in-class.
Final exam TBA (based on University schedule)

Labs and Project

There will be a large, semester-long group project, using an ‘agile-like’ approach. Deliverables will be broken into several milestones (called Project Components), including three major implementation sprints. 

Lab attendance is mandatory -- you will be marked for participation at each and every lab.

Your projects are group work, but no inter-group communication about projects is permitted unless explicitly noted in the project description.

Note that the project is a mandatory component of this course. You must obtain a passing grade in the project in order to pass the course. 

Course Objectives

The following is a tentative list of the objectives of this course by topic. When you complete this course, you will be able to:

  1. Process
    • Explain the basic software development phases
    • Explain the risks of skipping or reducing any phase
    • Compare and contrast traditional and agile process models
  2. Requirements
    • Explain the typical difficulties of technical communication
    • Negotiate requirements with a client
    • Specify requirements in User Story form
  3. Design
    • Explain high-level software design principles 
    • Explain and apply common design patterns
    • Design a project in a group setting
  4. Implementation
    • Make implementation choices to reduce the impact of future changes
    • Identify code smells in code, and apply the appropriate refactorings
    • Improve code quality and productivity by using software tools
    • Coordinate implementation efforts using a code repository
    • Break up implementation work into tasks
    • Identify and fix problems using an issue tracking system
  5. Testing
    • Test code using various coverage criteria
    • Explain basic testing terminology
    • Recognize common testing strategies (white-box, black-box) employed in the industry

General Advice

  • Start the implementation portions of the project on schedule -- we will be watching your commits, so stay active! 
  • Attend lectures and labs. If you miss a lecture, find out what you missed from a fellow student. Labs are time to meet up and work with your group so take these seriously.
  • Take notes during lecture. Take notes when you are reading. Re-read the material after lecture or lab to make sure you understand the main points.
  • Pay attention during lecture as much of the material will only be available this way (i.e., you can't just read it later).
  • Do assigned reading. Some reading will be assigned before lecture or lab. Reading this material prior to lecture or lab will ensure you get the most out of attending and will ensure we can cover more interesting material.
  • Be a good group member. We will be assessing your level of involvement in the project. If you under-contribute, you will suffer contribution penalties. You will be asked at every lab what you have accomplished in the previous week, and will be asked to go over your code commits and explain them. Be prepared to do this.


  • Lab attendance is mandatory. If you must miss a lab, please notify your TA directly (not the instructors) (and of course also your teammates). Your overall project mark will reflect your participation, but it is possible to make up for your absence by continuing to make commits with helpful comments outside lab time. Your TA will then need to go over that additional contribution at your subsequent lab.
  • If you are sick and unable to write the midterm, the weight of the midterm for your final grade will be shifted to the final exam.
  • Students who miss the final exam due to illness should consult the Faculty of Science Policy on missed exams immediately after (or preferably even before) the exam. Note that a student who does not complete sufficient course work (labs, assignments and midterm) during the term may not qualify for academic concession if they miss the final.
  • Students who require dispensation based on their unique circumstances should refer to the UBC policy on Academic Concessions.
  • Cell phones, calculators, translators, and all other electronic devices are prohibited on desks during exams. They must be turned off and placed in your bag or on the ground.
  • Students who need exam accommodation must make an official request to the Access and Diversity Office.

Academic Conduct

Each student is responsible for understanding and abiding by the University and Departmental policies on academic conduct. Specifically:

Respectful Environment

Everyone involved with CPSC 310 is responsible for understanding and abiding by the University's Respectful Environment Statement.

The Statement of Principle of UBC's Respectful Environment Statement is "The best possible environment for working, learning and living is one in which respect, civility, diversity, opportunity and inclusion are valued. Everyone at the University of British Columbia is expected to conduct themselves in a manner that upholds these principles in all communications and interactions with fellow UBC community members and the public in all University-related settings."