Computer Science 231
Introduction to Computer Science for Computer Science Majors I
- 24 March 2017
- A sample solution for Assignment 3 is available - see the
Assignments section below.
- My apologies, I went to put today's lecture recording online
and realized that I forgot to start one! Sorry about that!
- 20 March 2017
- The raw midterm 2 scores are posted;
see the overall marks link at the top of the page.
The top mark was 20/23, so
there will be a +3 linear scale. In other words, take
your raw mark, add three to it, and that's your score
out of 23. The midterm and the answer key are posted
below with the other midterms. In general, I was happy
to see that the ``programming'' section was done much
better overall, but the results were more mixed on the
questions that were substantially similar to those
from past exams.
- 14 March 2017
- A reminder: the course assignments are individual
assignments. If you need help, feel free to see me or
one of the TAs. Reddit is not an acceptable
source of help.
- The extra optional midterm review is in MS 217 on Thursday,
March 16th from 5-6pm.
- 13 March 2017
- In addition to midterm review on Wednesday, the USRI is
scheduled for the end of class that day.
- 12 March 2017
- 10 March 2017
- Assignment 2 marks are posted. The extra test
file I gave to the TAs for testing is
here. However, it was
brought to my attention that some people had received
conflicting information about the
. character: it
could quite legitimately be specified by a
command and the player should have been able to move over
it, if it was in a room. Since this came up very late in the
marking process when the only fair option would've been to
remark all the assignments, I'll make Assignment 2 out
of 12 instead, effectively removing that test from the
evaluation so that no one is penalized for this.
- 9 March 2017
- Your request for more test-like questions inspired me
to dig through the strata of paper in my office, and
I unearthed a midterm answer key from 2009 - you
can find it along with the questions converted to
Python 3 in the usual location.
- 7 March 2017
- As I promised, I'll be offering a CPSC 231 ``master class,''
for want of a better name. This is an advanced session
and not a tutorial or review. It is not required
and is only recommended if you are completely comfortable
with the normal lecture material. I'll be doing it twice
(i.e., the same material on two different occasions) to
hopefully accommodate everyone who's interested.
The first one will be Wednesday, March 22 at 7pm in ICT 616;
the second will be Friday, March 24 at 4pm in ICT 618B.
It'll probably take around 90 minutes.
- 6 March 2017
- 3 March 2017
- Due to the state of UCIT networking today, the second
assignment's deadline is extended until 11:59pm
tonight (Friday, March 3).
- 27 February 2017
- Note that there are two weeks of participation and
practice exercises currently at your disposal. The
deadline for the extra one over reading break isn't
until this Friday, and the usual one for this week
(also due this Friday) is posted.
- 24 February 2017
- UCIT will apparently be having a campus network outage for about
an hour at some point during the night of Thursday, March 2.
Since your second assignment's due on Friday, March 3, please
be sure to plan appropriately.
- 19 February 2017
- Here's a news story
related to what you
did for your first assignment.
- 17 February 2017
- Your feedback also said that you wanted more exercise
questions and more opportunities to acquire
participation and practice points, so I've added an
extra exercise for next week. Its deadline is in two
weeks rather than the usual one week to account for
- 16 February 2017
- Your feedback said you wanted more test-like questions, and
you've got them: I converted two of the old Python 2 exams
to Python 3 and made an answer key for them, giving you
well over 100 extra questions to practice with.
- The first midterm's posted along with its answer key.
This is the master version, and questions are labeled
as to which question number they had in each version of
- 14 February 2017
- Happy Valentine's Day! The raw midterm scores are posted;
see the overall marks link at the top of the page.
There will be a +4 linear scale. In other words, take
your raw mark, add four to it, and that's your score
out of 26. I'll be explaining the questions, their
answers, and the reasoning behind them in Friday's
class. Teaser: the question asking if a certain piece
of code appeared in the lecture notes had nothing to
do with whether the code appeared in the lecture notes.
- 13 February 2017
- The sample implementation for Assignment 2 should hopefully
work for everyone now. There's a slight version difference
in Python on the CPSC machines that was causing the problem.
- 10 February 2017
- The sample implementation for Assignment 2 is now available
for you to run; instructions for this have been added to the
- 9 February 2017
- Assignment 1 marks are posted; those and future marks can be
found via the ``Marks to date'' link at the top of the page.
- 8 February 2017
- 6 February 2017
- 3 February 2017
- Danny (one of the TAs, if you don't know him) will be running
an extra, optional midterm review in
MS 527 at 5pm on Tuesday, February 7th.
- 27 January 2017
- 25 January 2017
- I'll be shutting off microPython at the end of the week;
we're past the point in the course where it's needed.
- 18 January 2017
- You can find the recorded lecture traces by following the
``Play back recorded lecture traces'' link at the top of the
- 16 January 2017
- 12 January 2017
- To save time during next week's tutorials, you can pick up
your CPSC account this week. Note that this is a
different computer account than your UCIT one. You
can get your CPSC account information at the CPSC help
desk on the main floor of Math Science, and you'll need
this for tutorials and for your assignments. Here's
showing where the help desk is located.
- 6 January 2017
- You may be interested in
the upcoming tutorials on using Linux.
Note this is separate from CPSC 231 and is completely optional.
- There are no tutorials the first week of classes.
- Some browsers cache previously-viewed copies of
web pages. Please make sure that you are viewing
the most recent copy of this page.
- I will be placing important announcements,
clarifications, and information on this web page
as the term progresses. It is your responsibility
to check this page frequently for updates. I won't
be using D2L. Or Facebook. Or Twitter. Or
smoke signals, semaphores, and interpretive dance.
Okay, maybe a little bit of interpretive
dance, but that's it.
General Course Information
Please read the course information sheet
In particular, be aware that the University regulations regarding
plagiarism apply to assignment submissions. In other words, using
someone else's code in your assignment without proper attribution
is plagiarism regardless of where the code came from (e.g., a book,
According to the Calendar's 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.
- Data and its representation
- Data types
- Boolean algebra
- Conditional statements
- Procedures and functions
- Object-oriented programming
- Program design
Lectures are in ENA 103, MWF 1-1:50pm.
There are four tutorial sections,
all 50 minutes long:
No late submissions will be accepted.
If you get sick, have an accident or family crisis, you should still come
see me like you would normally.
Note: TAs can not give extensions. Please do not ask them.
Schedule and Evaluation
||Friday, 3 February 2017
||Friday, 3 March 2017
||Friday, 24 March 2017
||Wednesday, 12 April 2017
|Participation and Practice
|Midterm Exam 1
||Friday, 10 February 2017
|Midterm Exam 2
||Friday, 17 March 2017
||Scheduled by the Registrar
As stated on the course information sheet,
in order to obtain a final grade of C- or better, you must achieve 50%
or better on the overall assignment mark and 50% or better on the overall
exam mark (final and midterms combined).
The grade conversion method from percentages to letter
grades I will use is below. Rounding will be
performed if necessary using the usual method. The square
brackets and parentheses are used in their mathematical sense,
meaning that square brackets are inclusive and
parentheses are exclusive. For example, a grade of
93.75 is an A, not an A-.
An A+ in the overall course will be
awarded at my discretion for outstanding performance
in all components of the course.
Lecture Overheads and Material
Please note: the slides may be changed up until class time as I
From the Google Drive menu, you can save these in a variety of formats,
Past Exams, Study Aids, and Extra Information
- Old CPSC 231 exams
- Old CPSC 217 exams
CPSC 217 is roughly a subset of CPSC 231, but targeted to a
I taught one of three sections of CPSC 217 in W10; some of
the questions on those exams are written by the other two
instructors. All the other questions are mine.
Exams marked ``Python 3 version'' originally used Python 2, and
I've converted the questions to Python 3 for you.
- Extra stuff
How to Contact Me
Please feel free to drop by my office (ICT 650);
I have an open-door policy but no scheduled office hours for CPSC 231.
If I'm in my office but the door is closed - a
rarity - please don't knock. I'm probably frantically trying to get
The best way to reach me outside of office hours is by email:
I read my email very frequently, even on many evenings and weekends; many
questions can be answered that way. If you want to arrange a
face-to-face meeting outside of my office hours, send me some mail and we
can set up a time.
Please include ``CPSC'' or ``231'' in your email subject line so that it stands
out from the tons of spam I get sent! My mail reader highlights messages
that contain CPSC or 231 in the subject line.
While I can be found on Facebook, I use it only for non-work
contacts, so I won't respond to any CPSC 231 messages or friend requests
on there, sorry! Same for my Twitter account, which I use for
retrogame-related things (although you're welcome to follow me on there
if that interests you - it doesn't affect your grade either way).