Important Messages
*** The WebCT Vista site will only be accessible starting September 8th, or shortly thereafter ***
*** Labs start September 14th ***
Course Description & Prerequisites
Introduction to Software Development: 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.
Prerequisite: Prerequisite: Either (a) all of CPSC 213, CPSC 221 or (b) all of CPSC 216, CPSC 219, CPSC 220 or (c) all of CPSC 211, CPSC 213, CPSC 260, EECE 320.
Course Objectives
When you complete this course, you should be able to:
Overall Objectives
- Explain the technical and interpersonal challenges of software development
- Communicate technical matters with programmers, managers, and clients effectively
- Perform each phase of the lifecycle effectively, using up-to-date methodologies or tools
Objectives by topic
Lifecycle
- Explain the basic software lifecycle
- Explain the risks of skipping or reducing any phase of the lifecycle
- Recognize the types of tools that are used in each phase
- Explain the typical difficulties of technical communication
- Describe several types of requirements
- Argue for the need for requirements
- Elicit requirements from a client
- Recognize good and bad requirements
- Recognize basic architectures
- Design a project with UML
- Explain and apply good design principles
- Explain and apply common design patterns
- Design a project in a group setting
- Quickly implement high-quality code from a design
- Improve code quality and productivity by using software tools
- Explain several implementation philosophies
- Coordinate implementation efforts using a code repository
- Break up implementation work into units for parallel implementation
- Identify and eliminate problems using an issue tracking system
- Test code with unit tests, system tests, and user tests
- Explain basic testing terminology
- Recognize common testing frameworks employed in the industry
- Explain basic intellectual property issues
- Recognize the implications of common licenses
- Explain the differences between patents, copyrights, and licenses
Course Structure
Lectures
- Section 101: Monday, Wednesday, Friday 10:00am - 10:50am in DMP 110
Labs
Here is the lab schedule for this term. Each lab is 2 hours long:
| Section | Day | Time | Place | TA |
| L1B | Tuesdays | 11:00am to 1:00pm | ICCS 015 | Long |
| L1D | Wednesdays | 11:00am to 1:00pm | ICCS 015 | Thomas |
| L1F | Thursdays | 2:00pm to 4:00pm | ICCS 015 | Thomas |
| L1J | Mondays | 1:00pm to 3:00pm | ICCS 015 | Long and Mohan |
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 attendance is mandatory.
Each lab session is supervised by a teaching assistant (TA), who will introduce the necessary tools, provide instructions for the projects, and answer questions. Your lab grade will be based on your attendance and your groupmates evaluations.
If, because of illness, you cannot attend a given lab, please contact the TA immediately.
Tentative lab topics
Final lab topics and dates will be posted on WebCT Vista.
- SRS introduction/Requirements elicitation
- Design and UML
- Jazz and RTC (Rational Team Concert) tutorial (part 1)
- Jazz and RTC tutorial (part 2)
- Issue tracking introduction
- JUnit introduction
- Project development
- Project demo (by students)
People
Instructor
Meghan Allen- Office: ICCS 243
- Phone: (604) 822-4912
- Email: meghana AT cs DOT ubc DOT ca
- Office Hours: Mondays 11am-12pm and Fridays 12pm-1pm
I also have an open door policy. If my door is open - come on in! (and I'm available by appointment. Please ask if you need extra time or privacy!)
Graduate Teaching Assistants
- Long Zhang zhlong73@cs.ubc.ca
- Mohan Raj mohanr@cs.ubc.ca
- Thomas Dang manofsushi@gmail.com
Evaluation
Your grade in this course will be based on the following activities:
- Lab (attendance and group evaluations),
- Class participation (weekly or daily activities during lecture),
- The group project,
- Two midterm examinations, and
- A final examination.
Your final mark will be calculated using the following formula:
- 5% class activities, lab attendence, quizzes etc.
- 35% for the project and project-related assignments
- 10% for the first midterm
- 15% for the second midterm
- 35% for the final examination
- possible ~5% Bonus: best project and/or possible participation bonuses
To pass this course, you must obtain a 50% overall mark and, in addition, you must:
- pass the project overall, AND
- pass the implementation phase of the project (assignments 3 and 4), AND
- pass the final examination.
Students who fail the project, the implementation phase of the project, or the final exam, will be assigned as the final grade in the course the minimum of 45% (an F) and the grade computed using the above formula. The instructors reserve the right to modify the course grading scheme at any time.
Grade disputes
If you feel that your assignment, project, or exam was graded incorrectly or unfairly, PLEASE discuss the grade with your TA or myself, during regular office hours. You have 7 days after a grade is returned to dispute the marking.If you find a marking error, it will be corrected immediately. I will not remark individual questions if you disagree with the marking scheme. However, I will re-mark your entire exam if you feel that the grading scheme used was unfair and would like me to re-evaluate your exam.
Posting grades
Grades will be posted regularly via WebCT Vista.
Grading scale
| Percentage (%) | Letter Grade | 90-100 | A+ |
| 85-89 | A |
| 80-84 | A- |
| 76-79 | B+ |
| 72-75 | B |
| 68-71 | B- |
| 64-67 | C+ |
| 60-63 | C |
| 55-59 | C- |
| 50-54 | D |
| 0-49 | F |
Assignments
This term, we are planning to have one large project, broken into 4 assignments.
The submission procedure will be clearly specified in the assignments.
Late policy: TBA
Your projects are group work, but no inter-group communication about projects is permitted unless explicitly noted in the assignment description. Please read the policies section found at the end of this course outline.
Note that the project is a mandatory component of this course. You must obtain a passing average grade in the project in order to pass the course. You must also received a passing average grade in the implementation phase of the project.
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.
Examinations
There will be a midterm, and a final examination. Each exam will be closed-book.
The first midterm (50 minutes) will be held on:
Wednesday, October 14th - starting at 10:00amThe second midterm (50 minutes) will be held on:
Monday, November 16th - starting at 10:00amThe final exam (150 minutes) will be scheduled by UBC. We should get the exam schedule sometime in October.
Do not write an examination if there is a medical factor which might impair your performance. If you have been unable to write the midterm 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 the midterm. 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 your home faculty as soon as possible. For example, Science students, you would contact the Science Undergraduate Advising office. For more information on this subject, visit: http://www.essential.science.ubc.ca/Academic/Advising/concession.jsp
Course Bulletin Board
The course bulletin board on WebCT Vista is required reading, as the instructor and TAs may post important information there. You should check the bulletin board about once a day. In addition, you are encouraged to post your questions about the course material on the course bulletin board. You are also encouraged to respond to questions for which you know the answer. Students who help other students by answering questions on the bulletin board could receive extra participation credit. The instructors and the TAs will regularly monitor the bulletin board and try to answer your questions as promptly as possible. In case you need a face-to-face discussion, you can bring you questions regarding the course material, assignments, project and labs to
- the lab sessions,
- the instructor's office hours listed above,
- appointments made with the instructor or your TA.
Course Resources
Textbook
There is no textbook material for the course, the lectures and assigned readings will contain all information on the exams.
Online Resources
The course material is available on the CPSC 310 WebCT Vista site found at: http://www.vista.ubc.ca or directly from the course home site: http://www.ugrad.cs.ubc.ca/~cs310.
The WebCT Vista site also contains the course bulletin board and the student grades for the various course activities. To access the WebCT Vista site you need to use your Campus Wide Login (CWL) id and password. The course home site is accessible without any password.
The course calendar is available online as a public google calendar at: http://www.ugrad.cs.ubc.ca/~cs310/calendar.html. Note that this calendar is tentative and may change.
Course Outline
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.- Overview of lifecycle
- Topics
- Motivation for rigorous development cycle
- Different types of development
- Code-and-fix
- Waterfall, Staged-Release
- Agile
- Practical example of a development cycle
- Simple requirements gathering
- Design with UML
- Implementation with an IDE and a source repository
- Simple system testing
- Topics
- Requirements
- Motivation for requirements
- Types of requirements (functional/non-functional, commonly used diagrams/notation)
- Common difficulties (integrated with steps)
- Basic steps
- Elicitation
- Analysis
- Specification
- (Management)
- (Validation)
- Design
- Motivation for design
- Basic architectures
- Good design principles
- Modeling (some review)
- Important Patterns (some review)
- Implementation
- IDE
- Approaches to implementation
- Coordination Issues
- Quality issues
- Test
- Motivation for testing
- Basic concepts
- Types of testing
- Intellectual property
General Advice
- Start the projects early.
- Attend every class and lab, which will both save you time (in the long term) and improve your participation grade.
- Be a good group member, their evaluations of your performance are important
- Do your share of the work
- Be polite to groupmates
Academic Conduct
Unless otherwise stated, all work in this course is to be done on an individual basis. Students should know where to draw the line between getting legitimate outside assistance with course material and outright cheating. Students who obtain too much assistance without learning the material 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 permitted for assignments and exams. Such actions will not be tolerated. 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 individual work submitted for grading in this course. It is sincerely hoped that there will be no need to invoke this policy.