CMPT/ISYS 14x Fall2007 Syllabus

Courses

  • 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)

Instructor

Dr. Sean Ho
twu@seanho.com
(604) 513-2121 x3209, Neufeld 5
Office hours: MW 9-10, TF 4-5, R 3-4
Everyone: MWF 14:35-15:50 Neu30
140/145: R 13:10-14:15 Neu30
cmpt14x.seanho.com

Objective

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.

Prerequisites

  • 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

Notes

  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 [2007-2008 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 www.twu.ca/conditions.

Text

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 http://www.csc.twu.ca/rsbook/ or http://www.modula-2.com. 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

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

Marking

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 double 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!