University of Calgary
Rob Kremer
Course Description

CPSC 231: Introduction to Computer Science for Computer Science Majors I
Fall 2014
Department of Computer Science

  1. The final exam is Tuesday, Dec 16 19:00-21:00 in the Gold Gym.
  2. The notes on tracing [PDF, powerpoint, keynote] from Tuesday's supplementary lecture at posted. Also we have posted some practice exam questions.


Rob Kremer, ICT 748, email: (Please ALWAYS include "231" in the email subject line so I can prioritize your email ahead of all the other email I get.)
Tues/Thurs 12:30-13:45 in ENE 239
Office hours:
Tues 14:00-14:50, Thurs 10:00-10:50, and by appointment.
Course web site:
Official Course Info:
Example Programs: /home/231/tutorials (on the UNIX file system).  There are also practice assignments: They won't be for credit but they're extra problems that you can try in order to improve your programming and problem solving skills.
Tutorial Time Location TA
T05 TuTh 14:00-14:50
MS 160 Daniel Fisher
T06 MoWe 12:00-12:50 MS 160 Wei Fang
T07 MoWe 16:00-16:50 MS 176 Wei Fang
T08 TuTh 11:00-11:50 MS 160 Daniel Fisher

TA Office Hours email
Daniel Fisher by appointment
Wei Fang by appointment

In case you need to pick up on missed Lecture or tutorial for some reason, the other lectures and tutorials for 231 this term are:
Lecture/Tutorial Time Location
L01 TR 09:30 EEEL 210
L03 TR 14:00 KNB 126
T01 MW 10:00 MS 160
T02 MW 17:00 MS 160
T03 TR 12:00 MS 160
T04 TR 16:00 MS 176
T09 MW 09:00 MS 176
T10 MW 13:00 MS 176
T11 TR 10:00 MS 176
T12 MW 16:00 MS 160

Continuous Tutorial Schedule:



Mahshid Marbouti
Danny Fisher

Yao Zhao

Wei  Fang
Reza Zakerinasab
14:00-15:00 Justin Kelly

Rafael Simon Maia 


Course Description

Introduction to problem solving, the analysis and design of small-scale computational systems, and implementation using a procedural programming language. For computer science majors.


None.  But Computer Science 101 is strongly recommended as preparation for this course. See the statements at the beginning of the Computer Science entry of the University Calendar. (Antirequisites: Credit for Computer Science 231 and any of 215, 217, 235, Computer Engineering 339 or Engineering 233 will not be allowed.)

Misuse of Computer Facilities, Plagiarism, and Cheating

Academic misconduct (cheating, plagiarism, or any other form) is a very serious offense that will be dealt with rigorously in all cases. A single offense may lead to disciplinary probation or suspension or expulsion. The Faculty of Science follows a zero tolerance policy regarding dishonesty. Please read the sections under the heading "Student Misconduct" in the Academic Regulations section of the University Calendar.

These serious offenses will carry sanctions. Copying of assignments from anywhere without appropriate references, cheating on exams, or misusing facilities will result in punishment ranging from course failure to criminal prosecution. If you are unsure about these issues do not hesitate to consult with the course instructor.

This course has no group-work content, so, while discussion with other students is certainly acceptable, all course work must be done independently, without direct input from any other source. This includes, but is not limited to, copying code (or snippets of code) from other sources.  For detailed information on specifics related to this course, please see Academic misconduct vs collaboration: what is allowed for this class.


Tony Gaddis.  Starting Out with Python.  Addison-Wesley.  (recommended only)
You can find other textbooks on Python in the free online library website: Safari


The University policy on grading and related matters is described in the university calendar.


The course will have a Registrar's scheduled final examination and a common midterm exam which will be scheduled in an evening outside of class (Oct 23, 7PM).  The midterm exam is worth 25% of your final grade, and the final is worth 40% of your final grade.


There are 6 "mini assignments" worth 1% each, and and 5 harder "full assignments" worth 4%, 5%, 6%, 7%, and 7% respectively.  See assignment submission requirements.  Assignment due dates and links to the assignment specifications (when they become available) can be found in the "Lecture/Lab Schedule" section below. 

There are also practice assignments: They won't be for credit but they're extra problems that you can try in order to improve your programming and problem solving skills.

Continuous Tutorials (CT for short)

In addition to my office hours and your time in lab there will be time set aside for you to ask questions. These sessions will typically be staffed by the tutorial instructors but they are not mandatory for students and are provided so that you can get help while you are in the computer lab.

The CT is located in the first floor Math Sciences computer lab (there will be signs near the cubical desks).

Continuous tutorial schedule: TBA

Lecture/Lab Schedule

Before we begin, see the orientation.

Tuesday 12:30-13:45
Thursday 12:30-13:45
Introduction to the course [pdf, ppt, key]
(slides 1-31)
Introduction to the course (slides 32-41);
Introduction to computer programming [pdf, ppt, key] (slides 42-55)

Text: Chapter 1 & 2,  Appendix A (if you want to install Python on your own computer - not the recommended approach to take for this course)

Sep16/18 Introduction to computer programming (continued) (slides 56-80)

Tutorial: CPSC network; Lab tour; Text editor (Emacs), The file system.
Introduction to computer programming (continued)
Tutorial: Exercise: using UNIX commands and the script program.

Sep23/25 Introduction to computer programming (continued)
Tutorial: Concepts for Assignment 1
Branching/decisions [pdf, ppt]
Text: Chapter 3
Tutorial: Working at Home
Mini assignment 1: Due Monday Sept 22

Full assignment 1: Due Friday Sept 26
Branching/decisions (continued)

Tutorial: Documentation and Errors
Looping/repetition [pdf, ppt]
Tutorial: Branching
Mini assignment 2: Due Friday Oct 3
Looping/repetition (continued)
Text: Chapter 4
Tutorial: Branching
Looping/repetition (continued)
Tutorial: Nested Branches and Loops
Mini assignment 3: Due Friday Oct 10
Functions/decomposition [pdf, ppt]

Text: Chapter 5 (don't worry about the material in Section 5.9, 5.10 yet)
Tutorial: Loops

Functions/decomposition (continued)

Tutorial: About Assn 3
Midterm review
Tutorial: Debugging and more on Assn 3
Full assignment 2: Due Monday Oct 20

Out of class midterm: Thursday Oct 23 at 7PM - 8:15 PM in SB 103
Functions/decomposition (continued)

Tutorial: Functions
Composites [pdf, ppt]

Text: Composites, Lists & Tuples: Chapter 7; Composites, Strings: Chapter 8

Tutorial: Strings
Mini assignment 4: Due Monday Oct 27
A2 marks returned Oct 31
Composites (continued)

Composites (continued)

Full assignment 3: Due Friday Nov 7
Nov11/13 Reading Days
Files and exceptions [pdf, ppt]

Text: Chapter 6

Tutorial: Lists, Assignment 4

Introduction to problem solving [pdf, ppt]
Classes and objects [pdf, ppt]
Text: Chapter 10

Tutorial: Assignment 4, Graphics
Full assignment 4: Due Friday Nov 21
A3 marks returned Nov 17


Recursion [pdf, ppt]

Tutorial:Object-Oriented Programming
History of Computer Science [pdf, ppt]
Text: Chapter 12

Mini assignment 5: Due Wednesday Nov 26
Introduction to Computer Science [pdf, ppt]
Final exam review
Mini assignment 6: Due Monday Dec 1

Full assignment 5: Due Friday Dec 5
A4 marks returned Dec 3
Final exam:  Tuesday, Dec 16 19:00-21:00, Gold Gym. 
To help with the exam there is the notes from the extra tracing tutourial and some practice exam questions.

A5 marks returned by the date of the final exam.

CPSC 231: Introduction to Computer Science for Computer Science Marjors I
Department of Computer Science

Last updated 2014-09-23
Rob Kremer