CPSC 221: Basic Algorithms and Data Structures
2016 Winter Term 2 (January-April 2017)
Administration


Home Learning Goals Schedule Administration Readings Lab/Lecture Notes Assignments (Theory/Programming) Computing

Description: Design and analysis of basic algorithms and data structures; algorithm analysis methods, searching and sorting algorithms, basic data structures, graphs and concurrency.

Prerequisites: You need to have passed one of CPSC 210, EECE 210, or CPEN 221; and you need to have passed either CPSC 121 or MATH 220. You will be dropped from the course if you do not have the prerequisites or their equivalent (e.g., in case you transferred from another post-secondary institution). The Department of Computer Science enforces prerequisites.

The SSC Web page listing the course scheduling information and prerequisites is found at this link. Note that you can make minor changes to the URL if you want to see information about another course.

Texts: See the Readings webpage.

Office Hours: See the Schedule webpage. The page might not be updated in the first week, that is, until the instructors and TAs get their schedules worked out.

Normally, when we hold office hours, we service a small number of students at the same time, since other students may be interested in the same question as posed by another student. If you need to meet privately due to confidentiality reasons (personal, medical, etc.), we can do so.

Labs:

Your scheduled lab sessions are required, and marks are awarded for various deliverables. 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; but, please don't post your code on the discussion board. 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 are not able to attend your regular Lab section (or you were so far unable to register to any Lab section), you can try to attend another Lab section at the discretion of the TAs running that section. For example, if the room is packed or if the TAs are busy with students who are actually registered in that section, they might turn you away). Therefore, it's recommended that you e-mail the TAs running the section that you want to attend, as early as possible, so they can keep track of how many extra people would like to attend. Then, they could let you know in advance if the section is too full.

Getting Help with the Current Lab: You can get help with your work on the current lab at TA Office Hours, or by posting questions on the course discussion boards. Many of the TAs will be holding office hours, so there will likely be a lot to choose from.
(See the course Calendar at Schedule to determine what Office Hours are being held before your next lab session.)

Labs will introduce C++; however, because you are second-year students, and this is at least the third programming course that you have taken, much of the responsibility of learning the new language will fall on you. If you need C++ programming resources, you should read the textbook (see the textbook section of the website), visit the Computer Science Reading Room (aka CS library on the 2nd floor of the ICCS building -- yes, you can borrow books, and they have lots of useful books), visit instructional Web sites, make use of office hours, make use of the course discussion boards, etc. But, don't cheat! It's not permissable to copy parts of someone else's code or to hire a tutor to write some of your code.

Evaluation:

Your final course mark will be based tentatively on the following breakdown. The staff reserves the right to change this scheme, but we do not anticipate changing it.

Labs 10%
Theory Assns/Quizzes 15% (will be equally weighted)
Programming Projects15% (may be equally weighted)
Midterm Exam20%
Final Exam40%

To pass the course, you must obtain a 50% overall mark and, in addition, you must pass the final exam. In accordance with the Department of Computer Science's practice, 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 e-mail addresses).

Assignments: There will be roughly three programming projects and three written assignments during the term.

Exams: There will be one midterm and one final exam.

Academic Conduct:

Collaboration enhances the learning experience. We encourage collaboration in various ways throughout the course, subject to the rules stated here:

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 suspension 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!

 

Last Modified: January 2, 2017