Software Construction

Many software systems are amongst the most complex systems ever built by humans: telephone systems, flight control systems, internet search engines, social networking sites and much more. 

Two fundamental concepts central to supporting the construction and evolution of software systems are abstraction and decomposition. Building on the introduction to these concepts in CPSC 110, this course will explain how these concepts manifest over and over again in different forms when building larger and larger systems.

The goals of this course are to provide students with the ability to recognize, analyze and use abstraction and decomposition to construct software systems that solve real problems. This course will use the Java programming language and will provide students the opportunity to learn practical design and programming skills.

The course is designed to be accessible and useful to a wide range of students. CPSC 110 is a pre-requisite.  


Mike Feeley (feeley AT cs DOT ubc DOT ca)
Gail Murphy (murphy AT cs DOT ubc DOT ca)

Graduate TAs:
Julius Davies (juliusd AT cs DOT ubc DOT ca)
Rahul Jiresal (jiresal AT cs DOT ubc DOT ca)
Nima Kaviani (nkaviani AT cs DOT ubc DOT ca)

Undergraduate TAs:
Alexander Boyd
William Bredefeld
Akshat Divekar
Quinlan Jung
Caroline McQuatt
Peter Son
Ethan Jang

Lecture, Lab and Office Hours

 Sec 201  T, R        14:00-15:30  DMP 310  Gail Murphy
 Sec 202
 M, W, F  12:00-13:00  DMP 110
 Mike Feeley
 L2A  M           10:00-12:00  ICCS 014
 Rahul, Quinlan, William
 L2B  T            12:00-14:00  ICCS 014  Julius, Akshat (12:30-14:00), Caroline
 L2C  W           13:00-15:00  ICCS 014  Nima, Alex, Caroline (13:00-14:00), Peter (14:00-15:00)
 L2D  W           16:00-18:00
 ICCS 014
 Nima, Alex, Peter
 L2E    F            10:00-12:00
 ICCS 014
 Rahul, Quinlan, William
 L2F  F            13:00-15:00
 ICCS 014
 Rahul, Alex, Ethan (13:00-14:00), and Akshat (14:00-15:00)
 L2G  T            15:30-17:30
 ICCS 014
 Julius, Caroline, Peter
 L2H  R            09:00-11:00
 ICCS 014
 Nima, Akshat, Quinlan

Note: Formal labs start in the second week of term. Note that you are expected to do Lab #0  (see the description of the labs) on your own before formal labs begin.  See below for TA availability the first week to help you with Lab 30. 

Gail's Office Hours (in ICICS 305):

T 3:30-5 in ICICS 305 (or email for an appointment)
F 1-2 in ICICS 305 (or email for an appointment)

Note: Gail will have the following office hours the week before the final:

Tuesday April 10, 2-3:30 (ICICS 305)
Wednesday April 11, 4-5 (ICICS 305)
Thursday April 12, 10-11:30 (Q&A session: DMP 110)
Friday April 13, 10-11 (Q&A session: DMP 110)

Mike's Office Hours (in ICICS 393):

MWF 1-1:30 (or email for an appointment)

TA Office Hours

        During the rest of the term, TAs will be available in the Demco Learning Centre (DLC) as         shown in the following calendar.   Some DLC office hours will be held in ICICS 014 when        possible, with a note on a DLC whiteboard directing students to ICICS 014.

            Note:  GTA office hours for the final are being offered in DLC at the following times:

            Wednesday, April 11th, 3pm-4pm, DLC, Nima
            Thursday, April 12th, 12pm-1pm, DLC, Nima
            Friday, April 13th, 12pm-1pm, DLC, Julius

Office Hours Summary

 Where When

Professor Hours:

 ICICS 305
 Tuesdays, 3:30pm - 4:00pm
 ICICS 305
 Fridays, 1:00pm - 2:00pm
 ICICS 393
 MWF, 1:00pm - 1:30pm
TA Hours:
 DLC Mondays, 1pm - 2pm
 DLC Tuesdays, 11AM - 12PM
 Rahul, Caroline
 ICICS 014
 Tuesdays, 2PM - 3:30PM
 Julius, Akshat
 ICICS 014
 Wednesdays, 3PM - 4PM
 Nima, Alex
 Thursdays, 11AM - 12PM
 Nima, Peter
 Strikethru means:
TA Office hours finished for this semester.

CPSC 210 2011W1 DLC Calendar


Midterm #1: Wednesday, February 8, 18:30-20:00 (TENTATIVE)
Midterm #2: Wednesday, March 7, 18:30-20:00 (TENTATIVE)

The location of the midterms will be announced later.


Additional required readings for the course will be from course notes posted on this website.  The notes for a given week will generally be posted the week before. The notes will be in PDF and will be accessible from the Schedule page on the navigation sidebar.
An optional book is The Java Tutorial Fourth Edition: A Short Course on the Basics by S. Zakhour, S. Hommel, J. Royal, I. Rabinovitch, T. Risser and M. Hoeber. This content is also available on-line - see the section entitled "Trails Covering the Basics".

There may be one more optional course reading package (TBD).

As the course progresses, you might find it useful to sometimes consult Effective Java by J. Bloch. 

Computing Resources

We will be doing a lot of interactive work in lecture. If you have your own laptop and you feel comfortable bringing it to class, please do so. It will be helpful for you to have wireless on a computer you bring to class. All software will be available on the department lab computers and lectures will not require each student to have a laptop with them, so do not worry if you are unable to bring a laptop to class.

We will be using the Eclipse development environment to support Java programming. We will be guiding you in the first lab on which version of Eclipse to install and how to get it. We will also be using different code examples which we will show you how to access.

Course Announcements

Watch the Announcements page on this web page - you are responsible for knowing the information contained in any announcement posted to this page.  


For questions that are related to course material, please post to the Piazza discussion group.  Instructions on how to join the group are available in Lab 0. If you have questions of a personal nature, please email your instructor.

Labs and Project

In the labs, you will be working on assigned problems. Your solutions to those problems will be at the beginning of your next scheduled lab.  Grading of the labs will be done in the following lab; up to five times over the course of the term, your TA will meet you in the lab, look at your solution with you, and ask you questions about your work.  The marks from your best two marked labs will count towards the lab component of your grade. Our intent in taking this approach is to assess your ability to communicate about programs and to provide you with an opportunity to get more in-depth feedback as soon as possible.

The last six labs will involve working (likely as part of a pair) on a project; the very last lab (the sixth of the six devoted to the project) will be a demo of your completed project. Note we will be making special arrangements to mark the demos of students in the Friday lab sections. More details as term progresses. 


Your grade in the course will be assessed based on exams, labs, and a project as shown in the table below. You must pass the final exam and the project to pass the course. If you do not pass the final exam or the project, the grade assigned in the course will be the minimum of 45% and the grade calculated using the below formula.  The instructor reserves the right to modify the grading scheme at any time.  

Final Exam






Midterm #1


Midterm #2


How to Succeed in CPSC 210

As students, you likely hear the same advice in every course...keep up with the material.  Because the labs build on material from lecture and the labs form the basis of homework, this advice is especially true for CPSC 210. Here are some other ideas to help ensure you enjoy and learn the material in CPSC 210.
  • Attend lectures and labs. If you miss a lecture, find out what you missed from a fellow student.
  • Do the 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.
  • Take notes during lecture - this is critically important - the examples that we cover in lecture are not available anywhere else! Take notes when you are reading. Re-read the material after lecture or lab to make sure you understand the main points.
  • Allocate time to review 210 material daily. A few minutes each day is better than a long session once a week.
  • Talk with your fellow students about the material. While exams and the term project must be done individually, you can learn a lot by discussing the programs and material we cover with other students.
  • Use the discussion group to help address questions that arise after lecture or lab.
  • Come to office hours right away if you have a problem.

Academic Honesty

The Department of Computer Science has a detailed policy regarding collaboration on academic work. Please (re-)read this policy.

No collaboration of any kind is permitted for midterms or the final exam. You are allowed to collaborate on labs by discussing concepts and different approaches to solving a problem.  However, the text and code deliverables that you submit for labs must be your own work.  
We will post more information about collaboration on the project when the project is released.