CPSC 221: Basic Algorithms and Data Structures
2015 Winter Term 2
Administration
Description: Design and analysis of basic algorithms and
data structures; algorithm analysis methods, searching and sorting
algorithms, basic data structures, graphs and concurrency.
For information on prerquisites, corequisites, and the like, please see the
UBC calendar entry for CPSC 221.
Texts:
See the Readings webpage.
Office hours:
See the Schedule webpage.
Note: Office hours are your time. You needn't make an appointment or wait outside the door.
Come right in and take part!
(If you want to meet privately with one of us, however, please let us know.)
Labs:
Labs are required and marked. Lab write_ups may contain a Pre-Lab section,
which must be completed before the lab session.
You may also work on labs at home, get help during scheduled Office Hours,
or post questions on the course discussion boards.
You should aim to finish your work and get it marked within the 2 hour session.
However, if necessary, you may continue to work on it over the following week,
as long as you have it completed no later than the beginning of your next lab session.
Getting your work marked if you are absent:
If you must miss your regular Lab session, you may request to be rescheduled into another lab section for the same week as the lab you miss.
Email your request to the Master Lab TA
Coulter Beeson at r7n8@ugrad.cs.ubc.ca
in advance, or if the absence is unexpected, within 24 hours of the missed session.
Be sure to include your official name, student ID number, your normal
lab section, reason for absence, and a list of possible alternate lab
sections you could possibly attend.)
Getting help with the current lab:
You can get help with your work on the current lab at Office Hours,
or by posting questions on the course discussion boards.
(See the course Calendar at Schedule
to determine what Office Hours are being held before your next lab session.)
Labs will introduce C++; however, as 2nd year students,
much of the responsibility of learning the new language will fall on you.
If you need C++ programming resources, check the
textbook section of the website
and make use the course discussion boards.
Evaluation:
Your final course mark will be based roughly on the following
breakdown. The staff reserves the right to change this scheme
(but do not anticipate using that right).
Labs | | 10% |
Theory Assns/Quizzes | | 15% (all equally weighted) |
Programming Projects | | 15% (all equally weighted) |
Midterm Exam | | 20% |
Final Exam | | 40% |
To pass the course,
you must obtain a 50% overall mark and, in addition, you must pass the final exam.
Students who fail the final exam will receive as their course grade
the minimum of their normally computed grade and 45%.
Approximate Topic Schedule:
See Readings on the Schedule webpage.
Communication:
Most electronic communication should go to Piazza.
(You are expected to read the Announcements daily!)
Personal questions or those that might violate academic conduct standards if posted
should go to your Instructor or to the individual staff member you
wish to contact (see the home page for email addresses).
Assignments:
There will be roughly three programming
projects and three written assignments
during the term.
- Programming Environment: You may use any development
environment you wish, but all programming projects must compile and
run correctly on the Linux ugrad.cs.ubc.ca servers (such as
lulu.ugrad.cs.ubc.ca) using GNU C++.
See the computing
and programming guideline pages for tips.
- Submission: Programming projects will submitted with the
"handin" tool.
Check handin's acknowledgment of your submission to see if your
submission proceeded correctly. Written assignments will be submitted
in the hand-in box for CPSC 221
(location will be announced).
- Schedule: Programming projects will normally be due at
9PM on the due date, and written assignments at 5PM.
- Late Policy: Late work will receive no credit,
but we can be flexible if you contact us promptly, well before the
due date. So, tell us if you're having trouble!
- Collaboration: See the academic conduct guidelines.
Exams: There will be one midterm and one final exam.
- Scheduling: Dates for the exams are available on the
Schedule webpage.
The midterm exam will be in the evening at the same time for both sections.
- Resources: Straight memorization is not a core course goal.
You may bring, for your own use, one two-sided (letter- or A4-size) page of notes.
No calculators, phones, or other electronic equipment is allowed!
- Concession (missing an exam):
Do not write an exam (especially the final!) if a medical factor might significantly
impair your performance. If you are unable to write a midterm exam due to illness,
inform your instructor immediately, detailing the period during which you were
ill, but do not present a doctor's note.
The instructor will establish and explain accommodation at that time.
If you are unable to write the final due to illness, contact your Faculty's
advising office (e.g., the
Science Undergraduate Advising office)
immediately.
Academic Conduct:
Collaboration enhances the learning experience.
We encourage collaboration in various ways throughout the course, subject to the rules stated here:
- Programming projects:
You may work on programming projects in groups of two, and we encourage you to do so.
A group hands in a single submission and gets a single grade.
(Specific projects may allow larger groups; any change will be stated in the project handout.)
Groups are described below. Your group may also work with any other person or resource subject to rules:
-
The group must spend at least 10 minutes working on each problem
independently before collaborating with others.
-
Collaboration with others must be limited to discussion
and brainstorming. No record of any sort (e.g., written or
electronic material) may be exchanged or leave the brainstorming
session.
-
After collaborating, each student must take a half-hour break
from the problem. Watching some
brainless TV
is a recommended activity.
-
Each group must write up their own solution independently,
using their own words to prove that they understand the problem on
their own.
-
Groups must acknowledge all collaborators or sources of
assistance in their submission, although you need only name CPSC
221 course staff, handouts, and required textbooks if you quote or
adapt directly from them.
You are allowed (and expected!)
to record the names of people in brainstorming sessions with you.
- Theory Assignments: Subject to the same conditions as Programming Projects.
- Labs: You are permitted to work on labs in groups of two.
- Groups:
- Must indicate they are working together in the
appropriate venue (on the front page/README for projects, to the lab TA for labs).
- Must submit only one joint solution to the lab/project.
- Will receive one grade for the lab/project that
applies to every group member (except in extreme circumstances).
Groups should collaborate rather than, for example, work on individual parts and stitch the result
together. For advice on group work, speak with the teaching staff and check out
All
I Need to Know About Pair Programming I Learned in Kindergarten
for a lighthearted but well-researched perspective on pair work in Computer Science.
- Exams
will follow the University's
Rules Governing Formal Examination,
including disallowing any communication by any means with anyone besides the exam's invigilators
except where specifically noted in exam instructions.
Violation of any of these rules constitutes academic misconduct and
is subject to penalties ranging from a grade of zero on a particular
assessment to expulsion from the University with a notation on your
transcript. If you are
uncertain as to what is or is not reasonable collaboration, please
contact the instructor. If you are having problems understanding or
keeping up with the material, please contact your instructor or TA to
discuss how we can fix the problem. Don't cheat!
cs221@ugrad.cs.ubc.ca
Last Modified:
Sun 22 Feb, 2015