Course schedule, including all lecture information, and all deadlines
Project page, describing all the project milestones (assignments) for the semester
Piazza page -- please enrol ASAP.
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:
Explain the technical and interpersonal challenges of software development
Communicate technical matters with programmers, managers, and clients effectively
Perform the activities of software development effectively, using up-to-date methodologies or tools
Prerequisites
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.)
Elisa Baniassad (ebani AT cs DOT ubc DOT ca): Wednesdays 1-2, ICCS329.
Stewart Grant (v9c9@ugrad.ca): Thursdays 11 -12, DLC Table 2
Nowrin Anwar Joyita (joyita AT cs DOT ubc DOT ca): Mondays 12-1, DLC Table 3
Jeremy Goh (a4w8 AT ugrad DOT cs DOT ubc DOT ca): Wednesdays - 14th January ONLY 4pm-5pm DLC Table 3, all other weeks - 11am-12pm DLC Table 2
Bruce Li (e7o8@ugrad.cs.ubc.ca): Mondays 2-3pm, DLC Table 1
C. Albert Thompson (leetcat AT cs D0T ubc D0T ca) - e-mail me and we can meet in my office. Otherwise (9-10am DLC Table 4)
Sohrab Salehi (sohrab.salehi@stat.ubc.ca): Wednesdays 15:00pm-16:00pm, DLC Table 4
We will use Piazza for more or less all course communication and announcements.
Please enrol here: CPSC 310 on Piazza
We suggest you change your settings to receive updates either instantly, or every 2 hours.
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.
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.
There will be no labs in the first week. The first labs start the week of January 12.
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).
To pass this course, you must obtain a 50% overall mark and, in addition, you must:
pass the project overall, AND
on average, pass the two sprints of the project, 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) (Note: I reserve the right to change the grading formula during the term).
The 5% of your grade allocated to participation will be based on in-lecture activities. For some of these activities you will receive credit simply for participating, so in-class attendance is necessary to receive the credit and is highly recommended. In addition the number of questions from your classmates that you answer on Piazza will be taken into account.
For project or assignment grades, first contact your TA and try to resolve the issue with them.
Unresolved project/assignment disputs and exam grading disputes must be brought to the instructor. Midterm exam grade disputes must be brought to Elisa within one week of the midterm being returned, regardless of whether or not you are present to pick up your exam. Remarked assignments and exams may go up or down in grade. If you ask me to remark your exam, I reserve the right to remark the entire exam.
Grades will be handed back manually in lab. Towards the end of the semester we *may* post grades to Connect, but more likely, we will pass back individual marking reports manually.
Assignments will be due at a specific time, typically via handin or in lab. 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 assignment so that you can continue working on the project, assignments 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
Final exam
Tuesday, Week 8
April 24th, 8:30AM, OSBO A.
There will be a large, semester-long group project, using an ‘agile-like’ approach. Deliverables will be broken into several milestones (called Assignments), including two major implementation sprints. Assignments will be geared towards completion of the project.
Your projects are group work, but no inter-group communication about projects is permitted unless explicitly noted in the assignment 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. You must also obtain a passing grade on the two major sprints in order to to pass the course.
The following is a tentative list of the objectives of this course by topic. When you complete this course, you will be able to:
Process
Explain the basic software development phases
Explain the risks of skipping or reducing any phase
Compare and contrast traditional and agile process models
Requirements
Explain the typical difficulties of technical communication
Negotiate requirements with a client
Specify requirements in User Story form
Design
Explain high-level software design principles
Explain and apply common design patterns
Design a project in a group setting
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
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 project early.
Attend lectures and labs. If you miss a lecture, find out what you missed from a fellow student. Once you've discussed the material with a fellow student, come and see me if you still have questions.
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.
Do the assigned reading (if there is one). 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. Part of your mark will be based on peer-evaluation.
Do your share of the work.
Lab attendance is mandatory. If you must miss a lab, please notify your teammates and your TA. Your overall project mark will reflect your participation, but it is possible to make up for your absence by doing work outside of scheduled class time.
If you are sick and unable to write the midterm, please contact Elisa.
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.
Each student is responsible for understanding and abiding by the University and Departmental policies on academic conduct. Specifically:
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."