UBC Logo

CPSC 211: Introduction to Software Development

Course Information

Home

Course Description

Course Objectives

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

  • move from personal software development methodologies to professional standards and practices
    • design software following standard principles and formalisms
    • create programs that interact with their environment (files etc.) and human users according to standard professional norms
    • develop effective software testing skills
  • given an API, write code that conforms to the API to perform a given task
  • identify and evaluate trade-offs in design and implementation decisions for systems of an intermediate size
  • read and write programs in Java using advanced features
    • collections, exceptions, etc.
  • extend your mental model of computation from that developed in CPSC111
    • recursion, concurrency, etc.
  • work with an existing codebase, including reading and understanding given code, and augment its functionality [in assignments]

People

Instructor

Gabriel Murray

  • Office: ICCS 123
  • Home Page: http://people.cs.ubc.ca/~gabrielm/
  • Email: gabrielm@cs.ubc.ca
  • Office hours: Wednesday 1:30-2:30, Friday 1:30-2:30

Graduate Teaching Assistants

  • Mohamed el-Zohairy <zohairy@cs.ubc.ca>
  • Shafiq Joty <rjoty@cs.ubc.ca>
  • Tomas Hoffman <tomash@cs.ubc.ca>
  • Albert Jiang <jiang@cs.ubc.ca>

Office Hours

The following office hours will be held in the Demco Learning Centre:
  • Monday 12:00-2:00, Aaron Lee
  • Monday 2:00-3:30, Michael Enescu
  • Monday 3:30-5:30, Mohamed El-Zohairy
  • Tuesday 3:00-5:00, Shafiq Joty
  • Wednesday 12:00-2:00, Aaron Lee
  • Thursday 2:00-3:00, Shafiq Joty
  • Friday 11:30-1:30, Glenn Bevilacqua
  • Friday 12:00-1:00, Henry Chow
  • Friday 12:00-2:00, Aaron Lee

    Undergraduate Teaching Assistants

    • Henry Chow
    • Glenn Bevilacqua
    • Michael Enescu
    • Aaron Lee

    Course Structure

    Lectures

    • Mondays, Wednesdays and Fridays 9:00-11:30 AM, DMP 110

    Labs

    Here is the lab scedule for this term. Each lab is 2 hours long:

    Section Day Time Place TA TA
    L2A Mon, Wed 11:30 - 1:30 ICCS 005 Albert Jiang Michael Enescu
    L2B Mon, Wed 1:30-3:30 ICCS 005 Mohamed el-Zohairy Glenn Bevilacqua
    L2D Mon, Wed 3:30-5:30 ICCS 005 Tomas Hoffman Henry Chow

    You must attend the lab section in which you are registered.

    Labs are an important part of this course. Each lab is designed to give you the opportunity to apply the concepts learned in the lectures to small but realistic projects. Labs will also provide you with the practical knowledge and skills required for the completion of your course assignments.

    Each lab session is supervised by a teaching assistant (TA), who will explain the problem you are going to work on in that session, provide instructions for the tasks to be done, and answer questions. There will be a document on the web that will describe the activities you need to perform during each lab session. For each lab, the document will contain a "Pre-Lab" and a "During the Lab" part. You must complete the pre-lab exercises and prepare any questions you may have before you attend your lab, so you will be ready to participate in the discussions that will take place during the lab session. The mark for the labs is based mainly on participation, but your TA may also ask you questions during the lab to evaluate your progress.

    You are allowed to skip one lab during the term without penalty for any reason - no documentation will be required. However, if you skip a lab, you must ensure that you complete the work on your own time as material presented in labs could appear on examinations. If you skip more than one lab, you will receive a zero on the additional labs that you miss unless there are extenuating circumstances such as significant illness, in which case a doctor's note is required.

    Evaluation

    Your grade in this course will be based on the following activities:

    • lab participation
    • in-class exercises
    • four assignments to be done on your own
    • a midterm examination
    • a final examination

    Your final mark will be calculated using the following formula:

    • 5% for the labs
    • 5% for the in-class exercises/participation
    • 25% for the assignments
    • 20% for the midterm
    • 45% for the final examination

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

    • pass the assignments AND
    • pass the final examination.

    Students who fail the assignments or the final exam will be assigned, as final grade in the course, the minimum of 45% and the grade computed using the above formula. The instructors reserve the right to modify the course grading scheme at any time.

    Assignments

    The assignments are designed to help you become familiar with the concepts of inheritance, basic collections, basic file I/O and some aspects of graphical user interfaces. The assignments will provide opportunities for you to explore and learn some of the advanced features of Java and use some of the data structures you learn in the course and are available in the standard Java system. They will also help you acquire some project management skills appropriate for single-person programming projects and practical skills in debugging and testing small systems.

    All assignments will be submitted electronically. There will be a short document on the web which will explain the hand in procedure you should follow. Your work must be submitted by the specified due date otherwise a late penalty may be applied.

    Your assignments are to be the work of the members of the group and you are expected to create and produce them on your own. All sources consulted (e.g., web sites, people) must be acknowledged; see the cover page before you start, so that you understand what you agree to do. Please read the section on Academic Conduct.

    Assignments are a mandatory component of this course. You must obtain a passing average grade in the assignments in order to pass the course.

    If you have been unable to complete an assignment due to illness, you must present to the instructor a note from your physician, detailing the period during which you were ill, in order not to be penalized (i.e., receive a grade of 0) for that particular course work. The instructor will then tell you the course of action to follow regarding the missed assignment.

    Lateness Policy

    Assignments will be accepted up to 24 hours after the due date, with a 10% penalty. Assignments will not be accepted after 24 hours.

    Note. You will not be able to submit the assignment after the deadline is past. However, you may submit your assignment as many times as you like before the assignment deadline.

    General Notes

    • If you don't understand something covered in class, ask about it right away. The only silly question is the one which is not asked.
    • If you get a poor mark in a lab or the midterm, find out why right away. Don't wait a month before asking!
    • This course is challenging both in the level and quantity of work involved. You will, however, get as much out of the course as you put into it. It is therefore, advisable to start working early and not fall behind.

    Examinations

    There will be one midterm, and a final examination. Each exam will be closed-book.

    The midterm will be held on:

    • time and place to be announced

    The final exam will be held on:

    • Date and time is published by the university. It is your responsibility to check the time.

    Do not write an examination if there is a medical factor which might significantly impair your performance. If you are unable to write the midterm due to illness, you must inform your instructor before the midterm and present a note from your physician as soon as possible, detailing the period during which you were ill, in order not to be penalized (i.e., receive a grade of 0). The instructor will then tell you the course of action to follow regarding the missed midterm.

    If you have been or will be unable to write the final examination due to illness, you should contact the Science Undergraduate Advising office as soon as possible (within 48 hours of the exam).

    Course Resources

    Textbook

    The textbook material for the course is:

    • Cay Horstmann, Big Java (3rd edition), John Wiley & Sons, Inc. 2008

    For further reading, you can use the following reference books:

    • Paul T. Tymann & G. Michael Schneider, Modern Software Development Using Java, Thomson, 2004.
    • Any book on "Data Structures in Java" could be useful for the topics related to data structures.

    Online Resources

    The course material is available on the course web site: http://www.cs.ubc.ca/~gabrielm/211/, or from the CPSC 211 Vista site found at:https://www.vista.ubc.ca The Vista site also contains the course bulletin board and the student grades for the various course activities. To access the Vista site you need to use your Campus Wide Login (CWL) id and password. The course home site is accessible without any password.

    Topics

    The following is a tentative outline of the topics covered in the lectures and labs of this course. The order in which the topics will be presented may change.

    1. Class Design
      • Designing class attributes and methods
      • Designing methods with preconditions, postconditions and class invariants
      • Overloading equals, clone, etc.
    2. Object Oriented Design
      • Principles of class design
      • Discovering classes and their relationships
      • Realizing class relationships
      • Inheritance, interfaces and polymorphism
      • Types of inheritance
      • Inheritance vs Delegation
    3. Exception handling
    4. Testing
      • Unit testing
      • Basic Black-box testing
    5. Java's Collections
      • Algorithmic complexity and big-O notation
      • Generic types
      • Collections and iterators
      • Sets and lists
      • Maps
      • Sorted collections
      • Stacks and queues
    6. Recursion
    7. I/O Streams
      • Basic byte and character streams
    8. Graphical User Interfaces
      • GUI components
      • Containers and layouts
      • Events and listeners
    9. Multithreading
      • Threads
      • Thread scheduling and priorities
      • Synchronization

    Academic Conduct

    Unless otherwise stated, all work in this course is to be done on an individual basis. Students who do not do their own work ultimately cheat themselves the most. Submitting the work of another person as your own (i.e., plagiarism) constitutes academic misconduct, as does communication with others (either as donor or recipient) in ways other than those specified by the instructor. Such actions will not be tolerated. In this course, students may collaborate on assignments by discussing algorithms with each other. After such discussion, engagement in a mind-emptying activity (such as watching episodes of Gilligan's Island) for at least an hour is required before students continue to work on their own assignment. This ensures that each student has a thorough understanding of the concepts as a result of the collaboration. Although collaboration on algorithms is allowed, the line is drawn when students start to work on code. All code must be written alone. If any part of the code is based on someone else's work, this must be acknowledged by inserting comment statements noting the beginning and end of the relevant section of code. Students should be particularly careful when hiring a tutor. It is not permitted to submit code for an assignment or lab that was written in whole or in part by a tutor. All offences will be reported to the Department of Computer Science.

    As a student at UBC you should be familiar with the "Student Discipline" policies outlined in the "Academic Regulations" section of the UBC Calendar. As a Computer Science student, you are also expected to be familiar with the Computer Science Department Lab policies and responsibilities found at:

    The standard UBC regulations regarding misconduct will apply to all work submitted for grading in this course. It is sincerely hoped that there will be no need to invoke this policy.

    The penalties for engaging in academic misconduct at UBC are very high - even for a first offence. Don't do it!