Data Structures and Algorithms
Basic organization of programs, optimizing program
structure, modularization. Data structures, searching
and sorting algorithms, handling large data sets, analysis
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.
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|
- 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.
- 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.
- 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.
- 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).
- Laptops are permitted in-class only for course-related work.
This means no Facebook, YouTube, etc., (unless directly related
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!
- For the in-class exams (including the final):
- YES: textbook, paper notes
- NO: electronic devices (e.g., cell phones, laptops, iPods, dictionaries)
in the Academic Calendar are in effect, including
"Academic Dishonesty and Plagiarism", "Attendance", and
"Students with a Disability".
- In case of inclement weather, call (604) 513-2147 or
for official campus conditions.