Intro to Computer Systems

CMPT 120, Summer 2024

Greg Baker

This Course

It's Introduction to Computing Science and Programming I. We'll talk about basic concepts in computer science, and basic programming skills. (More later.)

Course web site: or find the course in CourSys.

This Course

Whoever you are, I'm glad you're here.

Intersex-inclusive Progress Pride flag Every Child Matters logo Black Lives Matter logo

This Course

Instructor: Greg Baker.

Office hour: Wednesdays 3:30–4:20 and Fridays 1:30-2:20 in CSIL (ASB 9838). [Except week 1 when CSIL is closed: in TASC1 9229 this week.]

… but getting into CSIL requires a key fob. Thoughts?

This Course

TAs and their office hours: to be announced.

Outside of office hours, the discussion forum is the best place for questions.

Emailing Greg has a low chance of success.

This Course

Also available to you: Computing Science Peer Tutoring, starting in about week 3.

Placement Test

This class is for students with little or no prior programming experience.

If you have programmed before, you may be able to enroll directly in CMPT 125, depending on course availability and only until end of 1st week of classes. See


  • Weekly exercises: 12 × 1.5% = 18%
  • Assignments: 4 × 5% = 20%
  • Quizzes: 2 × 15% = 30%
  • Final Exam: 32%

Late penalty: 20%/day.


Lectures: as scheduled, in-person. Audio recordings (hopefully).

My goals: introduce the basic concepts and get you ready to do the exercises and assignments.


Due Fridays (except the Friday of week 1).

My goal: make sure you actually try out the things we have talked about and figure out how to apply them. Each exercises will consist of several short problems.


The weekly exercises are necessarily small and self-contained. They will focus on individual concepts, but…


The four assignments will be larger programming tasks and integrate ideas from across the course (up to that point).

My goal: force you to figure out how to put the ideas from lectures + exercises together to sove real problems.


But of course the problems aren't real: I don't need 200 programs that all do the same thing.

The point of the exercises and assignments isn't to complete them and hand something in. It's to learn the material in a way that you can't in the lecture.

With that in mind, give them the attention and time they deserve.


The quizzes will be during the lecture time:

  • June 14 (Friday of week 6)
  • July 12 (Friday of week 10)

The final exam will be whenever/​wherever Student Services schedules it.

All closed book, on paper. Missing/​excusing exams requires medical documentation.


There is no required textbook for this course.

Possible reference material:


There is also a course course study guide that is from offerings long ago, brought up to date (I think completely) for this semester.

It should contain very similar material to what is delievered in lecture, but in a more complete, book-like format.


To get credit for this course, I expect you to demonstrate that you know the basic knowledge and skills of the course. That means:

  • A pass on the weighted average of the stuff where you demonstrate hands-on skills: exercises and assignments.
  • A pass on the weighted average of the quizzes and final exam.

Failure to do these may result in failing the course.


That rule isn't intended to fail someone just because they get 49% on the exams: it will be applied on an individual basis with a judgement call on the question has this student has demonstrated that they understand the basic concepts of the course?

If you're making an honest effort to complete the course work on your own, proceed and don't worry.


Academic Honesty: it's important, as always. All code you submit must be created by you, not somebody else, and by hand not with some code-generating tool.

If we can tell where your code came from (another student or some tool), then it's too close to that source. Proposed rule for avoiding this: don't look at others' code and write your code in the same sitting.


Examples of things that are not okay and will be treated as academic dishonesty:

  • Using a tool to create some code, cleaning it up a little, and submitting it.
  • Finding a solution (online or from your friend), looking at it until you really, really understand it, changing enough you think I won't notice the similarity, and submitting it.
  • Sitting beside your friend and creating a single solution together, even though you're touching different keyboards.


Working through the assigned problems is a lot of the way you're going to learn the course material. Think about them as opportunities for learning, not for marks.


In this course, I will actively look for instances of academic dishonesty.

If I find them, I will proceed as SFU policy requires, and that means filing Academic Incident Reports for the students involved. I will apply the most severe penalty that I think wouldn't be changed on appeal.


Summary of these slides: if you copy your work from someone else or ChatGPT, it's my goal for you to get an academic dishonesty case in your file and fail the course.


The quizzes and exams are individual work, closed book.

I will be asking for a grade of FD in the course for any academic dishonesty on tests.

Computer Requirements

You need access to a computer.

Windows or Mac or Linux all okay. Chromebook: probably okay. Tablet: no.

As long as you wouldn't describe your computer as absurdly old it's probably good enough.

Bigger screens and better keyboards will probably make you happier.

Computer Requirements

You have access to CSIL (the Computing Science Instructional Lab) as part of being in this course.

You need an access fob, and will probably get an email about getting started in the lab (typically opens end of week 1).

My Course Plan

I was the original creator of CMPT 120, but haven't taught it since 2011. Assigning courses to instructors is a complex problem.

My intention this semester: superfically modernize the course, but keep the basics the same.


  • Computer science basics: algorithms and data structures.
  • Python programming basics.
  • Controlling execution: loops and conditionals.
  • Storing data: lists, strings, dictionaries (?).
  • Common algorithms: searching and sorting.
  • Recursion.
  • Reading and writing files.