CMPT/ISYS 14x Fall 2008 Syllabus


  • CMPT 140: Introduction to Programming (Part 1) (3h) (wk1-7)
  • CMPT 141: Introduction to a First Modular Language (4h)
  • CMPT 143: Introduction to a Second Modular Language (2h)
  • CMPT 145: Programming and Modula-2 (Part 2) (2h) (wk7-12)


Dr. Sean Ho
(604) 513-2121 x3209, Neufeld 5
Office hours: MW 16:00-17:00, T 15:00-16:00, R 13:00-15:00 (revised!)
Everyone: MWF 14:35-15:50 Neu21
140/145: R 13:10-14:15 Neu21


This group of courses is designed to provide an introduction to programming and to a modern high level language (Python) so that the student becomes a competent programmer. Emphasis is placed on Structured Programming techniques. By the end of this course the student will be able to define a problem, determine the necessary input/output requirements, prepare an algorithm to solve the problem, write structured Python code, debug the program, and produce documentation specifying how the program can be used and the methods by which the program achieves its objectives.


  • 140: B.C. High School Computer Science 11, Cmpt 100/112/115 OR equivalent.
  • 141: Algebra 12 AND high school programming in C, Pascal, or Java OR equivalent with marks of at least a "B".
  • 143: University credit for a programming language such as C, Pascal, or Ada
  • 145: TWU CMPT 140 or the equivalent


  1. The normal sequence for most students is 140 and 145 (5hrs total). You must take 145 if you wish to take ANY more computing science courses.
  2. CMPT 145 students not taking 140 this year must do labs #4, #5, and #6 with a complete writeup. 145 students may but are not required to join the lectures in progress before the midterm/140 final (about 6 weeks into the course.)
  3. All three of 140/141/143 and of 141/143/145 are offered by the same instructor at the same time and in the same classroom except that the 140 and 145 students have an additional lecture each Thursday for introductory material, extra examples, and more review time. 141/143 students may attend this session if they wish. 141/143 students are still responsible for knowing the content of any posted lecture notes from the Thursday lectures.
  4. This course will require four (141/143/145) or five (140) hours of class time per week and laboratory time of about four hours per week (likely two for 143) using one of the school computers. There is a lab fee. This course satisfies the science but NOT the labscience requirement for a degree at Trinity Western University.
  5. All labs must be done on time. If two are missing, there is no credit for the course. Sign up for one of the weekly lab sections (MTW 18:00-22:00); your labs are due on the first lab section after the due date posted in the course schedule.
  6. Use any other person's work without attribution and you get zero; do it twice and there will be no credit for the course. Any such cases also go into the University's files for future reference.
  7. This is a course in the fundamentals of a scientific discipline, NOT about hacking together web sites or the like. You must have excellent English and the ability to concentrate for long periods of time on problem solving.
  8. Students who miss more than 25% of class sessions may be barred from taking the final exam [2008-2009 Academic Calendar p.38].
  9. In case of inclement weather, the TWU campus conditions will be announced on local radio stations and posted on the TWU website; for more details please see
  10. As Christian scholars pursuing higher education, academic integrity is a core value of the entire TWU community. Students are invited into this scholarly culture and required to abide by the principles of sound academic scholarship at TWU. This includes, but is not limited to, avoiding all forms of plagiarism and cheating in scholarly work. TWU has a strict policy on plagiarism (see academic calendar 2008-09, pp. 37-38). Learning what constitutes plagiarism and avoiding it is the student's responsibility. An excellent resource describing plagiarism and how to avoid it has been prepared by TWU Librarian William Badke and is freely available for download (PPT file) or used as flash (14 minute) (8 minute) tutorials of varying length.


Sutcliffe, Richard J. Modula-2: Abstractions for Data and Programming Structures (Using ISO-Standard Modula-2), Bradner: Arjay Enterprises, 2004 - 2005 Ed. Parts 1, 2 and Appendix.
The text is available as a coursepack in the bookstore in Reimer Student Centre, as well as on-line at or We will generally follow the topic outline from this textbook, and most of our homeworks and labs will be taken or adapted from its exercises.

Supplemental text: Allen B. Downey, Jeffrey Elkner and Chris Meyers, How to Think Like a Computer Scientist: Learning with Python, Green Tea Press.


Topics outline is subject to revision; not all topics apply to Python.
  • Topics from Chapter One and General Themes:
    • Introduction to problem solving
    • Computers and algorithms in the problem solving process
    • Abstractions for representing data and program structures
  • I: Topics for CMPT 140/141/143 students (first 7 weeks)
    1. Programs, data, literals/constants/variables (real, integer, string)
    2. Basic structural abstractions: if..then, Booleans, for loops
    3. Procedures, function procedures, blocks, scope, and local variables
    4. Iterations, enumerations and arrays
    5. Applications Programming -- Math, Physics, and strings
    6. Modules and libraries: use and design
  • II: Topics for CMPT 141/143/145 students (last 5.5 weeks)
    1. Data Storage Issues: Machine level and file models
    2. Intermediate structured datasets and records; CASE
    3. Intermediate programming: parameters, scope, local modules, exceptions, termination
    4. Intermediate Data Structures and methods, recursion
    5. Pointers and indirection


Letter grade assignment follows the TWU percentage to grade equivalents except that >=85% and <95% is an A; 95% and above is an A+.
CMPT 141/145 CMPT 140/143
Labs 20% 25%
Midterm+quizzes25% 25%
Homework 10% 10%
Major Paper 10% (not required)
Final Exam 30% 35%
Journals 5% 5%
Midterms count as triple quizzes. Please see the link "Additional CMPT policies" on the course homepage for more detailed information regarding marking of the labs.

Journals (Daily Devotions)

This course will give you some essential tools for software design; in the same way, an essential tool for your spiritual growth is God's Word, the "owner's manual" for our lives. You need to be reading the Bible and praying every day or you will not be a well-equipped toolsmith. To help keep you accountable, I ask that by the start of every class you email or hand in a sheet of paper with
  • your name and student number, and
  • for each of the days since the last time you handed in a sheet,
    • that day's date,
    • the reference to the passage you read on that day, and
    • a short sentence or two describing what you learned from that passage (e.g., a principle for life, a promise from God, an aspect of God's character).
If you miss a few days, it's okay, but do try to make it up later. I'll record that you did your journals and give them back to you; I look forward to learning from your insights into the Scripture!