- CMPT 140: Introduction to Programming and Modula-2
(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)
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
- 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.
- 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.)
- 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.
- 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.
- 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.
- 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.
- 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.
- Students who miss more than 25% of class sessions may be barred from taking
the final exam [2006-2007 Academic Calendar p.34].
- 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
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
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.
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)
- Programs, data, literals/constants/variables (real, integer, string)
- Basic structural abstractions: if..then, Booleans, for loops
- Procedures, function procedures, blocks, scope, and local variables
- Iterations, enumerations and arrays
- Applications Programming -- Math, Physics, and strings
- Modules and libraries: use and design
- II: Topics for CMPT 141/143/145 students (last 5.5 weeks)
- Data Storage Issues: Machine level and file models
- Intermediate structured datasets and records; CASE
- Intermediate programming: parameters, scope, local modules, exceptions, termination
- Intermediate Data Structures and methods, recursion
- 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+.
Midterms count as double quizzes.
Please see the link "Additional CMPT policies" on the course homepage for
more detailed information regarding marking of the labs.
| || CMPT 141/145 || CMPT 140/143 |
|Labs || 20% || 25% |
|Midterm+quizzes||25% || 25% |
|Homework|| 10% || 10% |
|Major Paper|| 10% || (not required)|
|Final Exam|| 30% || 35% |
|Journals|| 5% || 5% |
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
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.
- 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), and