This is the home page for the course CPSC 252 for Winter 2004 Term 1 (September - December, 2004).
NOTE 1: The programming language used in Computer Science 252 is C++. A number of students have asked if the course was being switched to Java and the answer is no. The 2004 Winter Session of this course will continue to use C++.
NOTE 2: There is no textbook for the course, nor any supplementary books required. All of the course material will be available on the web starting at the beginning of the term (It is not available right now).
When you complete this course, you will have acquired the following:
You must be registered for one of the lab sections in this course. It is your responsibility to ensure that you are registered in both the lecture section and one of the lab sections. You must attend the lab in which you are registered.
A passing grade in CPSC 152 or 122 is required. If you do not have these prerequisites you will be required to withdraw from the course. It is your responsibility to insure that you have met this requirement.
This course assumes that the students are already familiar with the following basic C++ concepts:
It
is strongly recommend that students who have inadequate knowledge of any of
the above areas study the short on-line tutorial described in the
section C++ tutorial below.
Personnel
In addition to the course instructor, there are teaching assistants
(graduate student TA's) and markers (undergraduate students) who are part
of the course staff.
TA's
conduct lab sessions, hold office hours, and are available on WebCT to answer
questions.
Markers mark the assignments and project phases, assist in the
labs for one hour during each lab session, and are available on WebCT to answer
questions.
Each lab section has a TA and a marker.
These are indicated in the following table.
| Name | Office | Phone | Office Hours | ||
|---|---|---|---|---|---|
| Instructors | Kellogg Booth | ksbooth@cs.ubc.ca | FSC 3641 | 604-822-8193 | Mon & Wed after lecture, or by arrangement -- Tue morning is usually good |
| Norman Hutchinson |
norm@cs.ubc.ca | CICSR 319 | 604-822-8188 |
Mon & Tue after lecture, or by arrangement | |
| TA's | Abhishek Gupta | agupta@cs.ubc.ca | TBA | TBA | |
| Juan Li | juanli@cs.ubc.ca | TBA | TBA | ||
| Wei-Lwun (Aaron) Lu | vailen@interchange.ubc.ca | TBA | TBA | ||
| Brad Penoff | penoff@cs.ubc.ca | TBA | TBA | ||
| Xiang (Sam) Xuan | xxuan@cs.ubc.ca | TBA | TBA | ||
| Yunjing (Jane) Zhang | yunjing@cs.ubc.ca | TBA | TBA | ||
| Markers | Tanya Ellchuk | ellchuk@interchange.ubc.ca | |||
| Jody LeBlanc | leblancj@interchange.ubc.ca | ||||
| Mike Li | liiji@interchange.ubc.ca | ||||
| Greg Tiu | gtiu@shaw.ca | ||||
| Jonathan Wong | jtywong@hotmail.com | ||||
Every student is expected to attend all lectures and the assigned lab section
each week.
(See the sections on lectures and
labs below for more
detailed descriptions.)
The weekly schedule is in the following table, which indicates the time and
location for the labs and lectures.
| Section | Day | Time | Room | |||||
|---|---|---|---|---|---|---|---|---|
| Lectures | 101 | Mon | 900-950 | BUCH A106 | ||||
| Tues | 1300-1350 | LSK 200 | ||||||
| Wed | 900-950 | BUCH A106 | ||||||
| Fri | 900-950 | BUCH A106 | 102 | Mon | 900-950 | IRC 6 | ||
| Tues | 1300-1350 | MATH 100 | ||||||
| Wed | 900-950 | IRC 6 | ||||||
| Fri | 900-950 | IRC 6 | ||||||
| Section | Day | Time | Room | 1st TA | 2nd TA | Marker | Box | |
| Labs | L1A | Mon | 1200-1450 | LSK 310 | Gupta | Zhang | TBA | #14 |
| L1B | Wed | 1200-1450 | LSK 308 | Gupta | Xuan | TBA | #14 | |
| L1C | Wed | 1500-1750 | LSK 302 | Li | Wong | TBA | #14 | |
| L1D | Mon | 1800-2050 | LSK 308 | Lu | Gupta | TBA | #15 | |
| L1E | Mon | 1400-1650 | LSK 308 | Li | Lu | TBA | #15 | |
| L1F | Thu | 1400-1650 | LSK 310 | Lu | Li | TBA | #15 | |
| L1G | Mon | 1700-1950 | LSK 302 | Xuan | Zhang | TBA | #16 | |
| L1H | Wed | 1200-1450 | LSK 310 | Penoff | Zhang | TBA | #16 | |
| L1J | Wed | 1500-1750 | LSK 310 | Penoff | Ellchuk | TBA | #16 | |
| L1K | Mon | 1800-2050 | LSK 310 | Zhang | Gupta | TBA | #17 | |
| L1L | Wed | 1500-1750 | LSK 308 | Tiu | Ellchuk | TBA | #17 | |
| L1M | Thu | 1400-1650 | LSK 302 | Gupta/Xuan | Li | TBA | #17 | |
Information regarding accounts for the the lab sections is available from the Department of Computer Science on the web at http://www.cs.ubc.ca/kiosk/. Make sure that you have both a Computer Science account (userids are four characters, alternating between alphabetic and numeric: a0b1) and a WebCT account (these are different) that links to the home page for this course. You will need these by the end of the first week of the term so you can prepare for your first lab during the second week of the term.
Information on the computer labs where your lab sections will be held
and where you can work off-hours is on the departmental website at
http://www.cs.ubc.ca/ugrad/facilities/.
This provides the locations for the various labs and the hours of
operation.
You will need an access code for after hours.
This will be posted on the WebCT bulletin board.
A good place to start is
http://www.cs.ubc.ca/ugrad/facilities/getting_started.shtml.
C++ tutorial
A short document that describes the fundamental C++ concepts that students should know before they take CPSC252 is a part of a larger Reference Manual that contains information about numerous computer applications and tools that are available on the campus. This Web-based document has been developed by the "Roadmap to Computing" group and can be accessed from the group's homepage: http://www.roadmap.ubc.ca/
The same group that developed the reference manual has also developed a small number of interactive, web-based courses introducing some important programs and tools that you will use in this course. We strongly recommend that any student in CPSC 252 go through the course on Unix and the course on text editors.
When
you finish a course please complete and submit the questionnaire that is given
at the end of the course. Your feedback is very important to the people who
provide the Roadmap material.
Calendar
There are a number of important deadlines and other dates that you should be
aware of.
These are listed in the following table.
Any changes will be announced on WebCT in the bulletin board as well as in
an updated version of this table.
| Date | Event(s) Note: all dates are subject to change | Labs | A/P | |
|---|---|---|---|---|
| Week 1 | ||||
| Tues | Sep 07 | Lectures begin for CPSC 252 | ||
| Week 2 | ||||
| 1 | ||||
| Week 3 | ||||
| Mon | Sep 20 | Assignment 0 due | 2 | |
| Tues | Sep 21 | Last date for withdrawal without a W on your transcript | ||
| Week 4 | ||||
| Mon | Sep 27 | 3 | ||
| Tue | Sep 28 | |||
| Wed | Sep 29 | |||
| Thu | Sep 30 | |||
| Fri | Oct 01 | Assignment 1 due | ||
| Week 5 | ||||
| 4 | ||||
| Week 6 Midterm 1 this week (labs cancelled) | ||||
| Mon | Oct 11 | Thanksgiving (no classes) | ||
| Tue | Oct 12 | Midterm during class | ||
| Fri | Oct 15 | Last date for withdrawal with a W on the transcript | ||
| Assignment 2 due | ||||
| Week 7 | ||||
| 5 | ||||
| Fri | Oct 22 | Assignment 3 due | ||
| Week 8 | ||||
| 6 | ||||
| Fri | Oct 29 | Assignment 4 due | ||
| Week 9 | ||||
| 7 | ||||
| Week 10 Midterm 2 this week (labs cancelled) | ||||
| Mon | Nov 08 | Midterm 18:30-20:00
Student ID 10000000-16599999 in IRC 1 Student ID 16600000-51999999 in IRC 2 Student ID 52000000-99999999 in IRC 6 |
||
| Thu | Nov 11 | Remembrance Day (no classes) | ||
| Fri | Nov 12 | Assignment 5 due | ||
| Week 11 | ||||
| 8 | ||||
| Week 12 | ||||
| 9 | ||||
| Week 13 | ||||
| Fri | Dec 03 | Last Day of Classes | finish | |
| Project Phase 1 due | ||||
| Project Phase 2 due | ||||
| Week 14 | ||||
| Tues | Dec 07 | Examinations Begin | ||
| Week 15 | ||||
| Thu | Dec 16 | Final Exam 8:30-11:15, WOOD 2 (AAA-SZZ) & WOOD 1 (TAA-ZZZ) | ||
| Week 16 | ||||
| Tue | Dec 21 | Examinations end | ||
The primary course content is contained in the Course Notes that are available on the course website(see the important note below).
Another document that will be very useful for the lab exercises and the project is: UBC Roadmap to Computing (Getting Connected or Advanced Tools) that was mentioned earlier. This resource manual provides a comprehensive introduction to most of the applications and tools that you will use during this course. A hard copy of it is available from the Bookstore for a nominal price, but there is also an on-line version that you can access at: http://www.roadmap.ubc.ca.
The
Department of Computer Science has implemented a coupon system for lab
printing and course handouts. For more details, please see the CPSC
undergraduate web site:
http://www.cs.ubc.ca/ugrad/.
Lectures
The course material will be covered in the lectures. Some of the topics covered in this course are conceptually quite difficult. It is therefore absolutely essential that you ask questions whenever you don't understand something presented in the lectures. You should attend all lectures; if you are unable to attend a lecture because of illness or similar reasons, make sure you get the lecture notes from a classmate.
The primary course content is contained in the Course Notes. Important: The notes will be updated from time to time during the term, so it is recommended that you not print the entire set of notes unless you are willing to print the updates as they are released.
Most of the lecture material will be presented on the blackboard. but occasionally additional examples and special topics will be presented using PowerPoint or overhead transparencies.
Some of the material that will be presented in lecture is available in the Overheads path of the course web page. Lectures will not follow these notes, but there is some material of interest there although most of the material repeats the course notes in "fill in the blank" format that invites students to complete the examples by referring to the course notes.
Ask
your lab TA if you have any problems with printing the notes.
Labs
Formal laboratory sessions are an important part of this course. Each lab is designed to provide you with the practical knowledge and skills required for the completion of your assignments and the term project. Some of the tricky details of C++, makefiles and debugging will be covered in the labs.
Labs start the second week of term. They are held in the lab sections listed above, each of which contains workstations connected to servers.
Each lab session is supervised by a graduate teaching assistant, who will explain any practical knowledge you need at the beginning or the lab, and will then be available to answer questions during the lab. Your TA will also ask you to do some small exercises during the lab and evaluate your progress. Your lab work will be evaluated in the lab - it will not be handed in for marking.
You should attend all labs. If, because of sickness or similar reasons, you cannot attend a given lab, you may be allowed to go to another lab the same week, if there is an available computer on which you can work. You must ask the teaching assistant for permission to attend a lab other than the one in which you are registered. If you have not made up all of the lab work by the end of the next scheduled lab session, see your TA immediately.
This term, we will have three lab assignments and a project. The assignments are designed to help you become familiar with the concept of object-oriented design and some of the advanced features of C++, like classes, constructors and operator overloading. The project will give you the opportunity to design and use some of the data structures you learn in the course, and help you acquire some project management skills appropriate for single-person programming projects and practical programming skills in the language C++. The project will be divided into three parts. In each part, you will be asked to design, implement and test a subset of the project. As part of marking your project, we may test your program with our own data; you must therefore follow the project instructions exactly.
The due dates for the assignments and the project are in the Calendar section above.
Assignments and projects will be submitted electronically along with signed hardcopy of a Title page. Lab 1 and Assignment 0 explain the hand-in procedure you should follow and your lab TAs will discuss it with you during the first lab. To be on time, work must be submitted by midnight on the due date for all assignments except for Assignmet 0 (which is special). There are procedures that must be followed for both the hardcopy Title page and the electronic submissions. These will be explained at a later date.
You will have between one and two weeks to work on each assignment and project segment. Hardcopy may be handed in up to 48 hours after the due date without penalty but late penalties will be assessed for the electronic version. If you decide to hand in late, 1/3 of your marks will be forfeited for any electronic hand-in that is at most 24 hours late, 2/3 will be forfeited for any electronic hand-in that is at most 48 hours late. Hand-ins (hardcopy or electronic) that are more than 48 hours late will receive a mark of zero.
Note
that the project is a mandatory component of this course. You must pass the
project component in order to pass the course.
Examinations
There will be two midterms, one that will be held during lecture and one during the evening, and a final examination at the end of the term. Each exam will be closed book.
The two midterms (45 minutes and 90 minutes, respectively) will be held on the dates noted in the Calendar section above (Midterm 1 and Midterm 2).
The final examination (2.5 hours) will be in December at a date and time scheduled by the Registrar's office.
Do not make travel plans during the examination period until the exam schedule is announced. The tentative date is just that -- tentative!
Note that the final exam is a mandatory component of this course. You must pass the final exam in order to pass the course.
If you miss an examination because of sickness or similar reasons you must inform your instructor by phone or by e-mail prior to the exam. You must provide a note from your doctor detailing the period during which you were medically incapable of writing the exam. Do not write an examination if there is a medical factor which might impair your performance without first consulting your instructor.
You may bring one 8-1/2 x 11 inch sheet of paper of normal thickness with writing on one or both sides. Writing can be handwriting, computer printing, xerography, or any other mechanism for getting marks on paper. Anything you think would be useful on an exam can be written on your sheet of paper.
Your final mark in this course will be calculated by the following weighted average formula:
| Component | Weight |
|---|---|
| lab exercises | 7.5% |
| assignments | 7.5% |
| term project | 15% |
| midterm exams | 30% |
| final examination | 40% |
To pass this course, you must meet all three of the following criteria:
Failure to meet any one of these criteria will result in a term mark that is the smaller of the overall mark computed according to the formula given above and a mark of 45.
The instructor reserves the right to modify the marking scheme, if necessary, at any time.
At
any time up to the first withdrawal date,
you may add or drop courses without any record on
your transcript. After that and until
the second withdrawal date you may withdraw from the
course, but a W will be recorded on your student record. No further
withdrawals will be permitted after the second withdrawal date, except for medical or similar
reasons.
Cheating
Your assignments are expected to be your own work. They will be thoroughly checked for similarities and any kind of plagiarism will not be tolerated. Your attention is directed to the "Plagiarism" section of the University Calendar and the Computer Science Undergraduate Handbook.
All source code (including comments) must be your own work. The only exception is code that is provided to you by the instructor (which can be used without attribution). Discussion of concepts and ideas for code is permitted, but use of someone else's code is prohibited. If you include code in an assignment or a project that you developed after consulting with someone else, it is strongly suggested that you include a comments in the code that clearly indicate the name of the person with whom you consulted and the way in which this affected the code. Failure to attribute ideas gained from consultation with others (the instructor, the TAs, the markers, other students in the course, or any one else including private tutors) will be considered an act of plagiarism by you.
You should not provide copies of your code to anyone. If someone submits a copy of your code for an assignment or a project this will be considered an act of plagiarism by you.
MOSS (Measure of Software Similiarity) is a very effective software system (MOSS) that is used regularly to look for similarities in the program solutions that students submit for courses in our department. MOSS is used in this course, not only to look for plagiarism between students who are registered this term, but also to compare solutions submitted this term with solutions submitted in previous terms for assignments or projects that might have elements in common with the assignments or project this term.
Plagiarism is an academic offense at UBC. Plagiarism occurs whenever a student submits code that was not written by the student, regardless of where the student obtained the code, whether it be from another student in the course, or a student or non-student outside of the course. Any student who provides code to another student is also guilty of an academic offense. Confirmed cases of plagiarism in this course will result in a zero for the assignment or project on which plagiarism was detected (a zero on the project means an automatic failing mark for the term). Recommendations will also be made for additional disciplinary action by the department or the University as appropriate.
This is a serious matter!
In previous terms students have been given zeros
for the term for engaging in plagiarism and recommendations for futher
disciplinary action were made.
Illness and mark appeals
If you miss an exam, an assignment, or a lab due to illness or other reason, you must contact the instructor within seven (7) days of returning to University. No consideration will be given unless this is done within the required time period. Notification must be made in writing, providing adequate information. Use the mark change request or illness form.
A similar policy applies to mark appeals.
Appeals will only be accepted within seven (7) days of marks being
posted for labs, assignments, and phases of the project,
or exams being posted and returned for midterms.
There is a
mark change request or illness form.
available on the web for this purpose.
Please use it.
General notes
If you don't understand something covered in class, ask about it right away. The only silly question is the one that is not asked. If you get a poor mark on a lab exercise, an assignment, a project segment 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. It is therefore advisable to start working early and not fall behind.