CMPT 231 Fall 2012 Syllabus


Dr. Sean Ho
Office hours: T 16:00 - 17:00 Neu5
Class location:
T 13:10-15:50 Neu37


Data Structures and Algorithms Basic organization of programs, optimizing program structure, modularization. Data structures, searching and sorting algorithms, handling large data sets, analysis of algorithms.


CMPT 140 or 141 or instructor's consent. It is expected that the student has at least one standard programming language (e.g., C/C++, Java, Python) in which he/she is fairly comfortable. Some level of mathematical reasoning, e.g., CMPT/MATH 150 (Discrete Math), will help the student to succeed.


Required: Introduction to Algorithms, Cormen, T., Leiserson, E., Rivest, R., and Stein, C., 3rd ed., MIT Press (2009). ISBN 0-262-03384-4. This text is available in the campus bookstore.


The exact set of topics covered will vary depending on instructor and semester. The following is a tentative planned set of topics for Fall 2012 (chapters from CLRS3):
  • Algorithmic complexity (ch1-5)
  • Sorting algorithms (ch6-8)
  • Fast data structures (ch10-13)
  • Dynamic programming and greedy algorithms (ch15-16)
  • Graph algorithms (ch22-24)
  • Linear programming (ch29)


Letter grade assignment follows the standard TWU grade scale, except that >=85% and <95% is an A; 95% and above is an A+.
HW Assignments(6) 40% Every other week
Exams (3) 30% In-class; see schedule
Final Exam 30% Set by Provost's Office


  1. Homeworks are expected to be individual work. If you find inspiration from fellow students or online resources, cite them in your report; indicate how they helped you.
  2. Late policy for homeworks is a penalty of 10% per calendar day, up to a week late. More than a week late and it will not be accepted unless there are extenuating circumstances (which must be communicated promptly with the instructor). The final assignment (HW6) will not be accepted late. We will use the timestamp on myCourses. It is your responsibility to make sure all parts of your assignment are uploaded to the right place in myCourses by the deadline.
  3. If you turn in your HW on-time, you can expect it to be marked within a week. If you turn in your HW late, you forfeit the privilege of getting prompt feedback.
  4. You should have a programming language and development environment in which you are fairly comfortable; get this sorted out in the first week of the semester. You may use any programming language you like for all assignments in this course, subject to the following:
    • Ask the instructor first if it's not C/C++, Java, or Python
    • Refrain from using library functions which defeat the purpose of the given assignment (e.g., if the assignment is to implement QuickSort, don't use the built-in sort function in Python or C++ STL).
  5. Laptops are permitted in-class only for course-related work. This means no Facebook, YouTube, Halo, etc., (unless directly related to coursework)!
  6. During in-class quizzes/exams, all of the following are not permitted and should be left in your closed/zipped bag and put on the floor:
    • Books, notes, cell phones, laptops, PDAs, iPods, dictionaries.
    Your desk should be clear except for your pencil/pen.
  7. All academic policies in the Academic Calendar are in effect, including "Academic Dishonesty and Plagiarism", "Attendance", and "Students with a Disability".
  8. In case of inclement weather, call (604) 513-2147 or see for official campus conditions.