CMPT 231 Fall 2013 Syllabus


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


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 2013 (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)


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) 45% Every other week
Exams (3) 25% 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 write-up; indicate how they helped you.
  2. Late policy for homeworks is a penalty of 5% 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. This course is primarily theory/math, however some assignments will have a programming component. You should have a programming language and development environment in which you are fairly comfortable; get this sorted out in the first few weeks of the semester. You may use any programming language you like, 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, etc., (unless directly related to coursework)! A recent study by McMasters U found that multitasking on laptops in class negatively affects not only the laptop user but also nearby classmates who can see the screen!
  6. For the in-class exams (including the final):
    • YES: textbook, paper notes
    • NO: electronic devices (e.g., cell phones, laptops, iPods, dictionaries)
  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.