This course is closed. The accuracy of this page's content is not guaranteed. [Return to]

You really should consider upgrading your browser to a more recent version. You'll still be able to view everything on this site, but it'll be an ugly experience.

CPSC129: Intermediate Programming II (F'04)
Course Outline

Instructor: Dave Rogers

Course Description

Students will continue the exploration of object-oriented software design begun in CPSC 128 by implementing and analyzing a number of standard dynamic data structures and their associated algorithms. Emphasis on the separation of behaviour and implementation will allow students to compare the theoretical and empirical efficiency of the algorithms that operate upon these structures. The course will be taught using the Python programming language, together with some examples in Java for contrast. The course has a mandatory lab component.

Learning Outcomes

Upon successful completion of the course, students will be able to:

  • Contrast competing algorithms based upon complexity, memory, and recursion limits;
  • Distinguish between, and implement simple versions of, standard abstract data types such as lists, queues, trees, and dictionaries;
  • Construct modular and reusable data types that subscribe to the best practices of object-oriented design;
  • Demonstrate the purpose of abstract classes or interfaces when separating implementation from behaviour;
  • Apply software engineering techniques such as assertions and unit tests when writing software; and
  • Trace the behaviour of method calls on polymorphic instances from within an inheritance hierarchy.

Delivery Methods/Format

Theoretical concepts will be presented in a lecture format (3 hours/week). Laboratory exercises (1.5 hours/week) will reinforce this material through hands-on programming practise, and will also introduce language syntax and tool use.


CPSC128 or permission of the instructor. The course will take up where CPSC128 left off, so fluency in the Python language is compulsory.

Course Requirements

Attendance and Participation

Attendance is mandatory. A student may be dismissed from the course if more than 10% of the scheduled contact hours are missed. Dismissal from a course may result in loss of full-time status and loss of sponsorship funding.

Dishonesty and Plagiarism

The assignments are individual assignments and group submissions are not permitted. All submissions should be original work prepared for that specific assignment. To copy another person's work or present it as your own will result in penalties. Note that plagiarism is defined not only as submitting someone else's work as yours, but also includes submitting the same assignment for more than one course without the explicit permission of the instructor. The penalties for plagiarism include receiving a mark of 0 for the assignment, a mark of F for the course and expulsion from the College.



Approximately seven assignments will be distributed throughout the term, together worth 50% of the final mark. Late submissions will be penalized 20% per working day, unless prior arrangements have been made with the instructor.


Approximately six quizzes will be held throughout the term, together worth 25% of the final mark. The quizzes will cover the concepts taught in the lectures. The one quiz with the lowest mark will be discarded from the term evaluation. Quizzes may not be rescheduled, except in exceptional circumstances and only where prior arrangements have been made with the instructor.

Final Examination

One final examination, which will cover the entire course, will be given at the end of the term. The exam is worth 25% of the final mark.


The student's grade will be calculated as follows:

Component Weight
Assignments 50%
Quizzes (best 5 of 6) 25%
Final Examination 25%
Total 100%

Letter grading will follow the College's standard, which can be found in the Letter Grading section of Academic Regulations in the College Calendar.

Required Textbooks/Materials

Python in a Nutshell Other than a Python language reference such as "Python in a Nutshell" (Alex Martelli, O'Reilly & Associates), there is no textbook for this course. Readings will be assigned from various online references to supplement the lecture material. Lecture notes and handouts will also be posted to the course's website.

Data Structures and Algorithms in Java, 3rd Edition Students wanting to explore the subject from a Java-only perspective may wish to reference: "Data Structures and Algorithms in Java, 3rd Edition" (Michael T. Gooderich and Roberto Tamassia, John Wiley & Sons).


CPSC 129 is structured much like the CPSC 116 course and so is expected to have similar transferability, which currently include:

  • British Columbia Open University (BCOU): CPSC (3)
  • Simon Fraser University (SFU): CMPT (2)
  • University of British Columbia (UBC): CPSC 1st (3)
  • University of Northern British Columbia (UNBC): CPSC (3) 1XX
  • University of Victoria (UVIC): CSC 115 (1.5)

For more information about transferability contact the Arts & Science Division.