CMPT 120 Intro. to CS & Programming I
Undergraduate course, Simon Fraser University, School of Computing Science, 2024
An introductory course on programming and some CS-related concepts (e.g., history, problem-solving). Python is the programming language of choice.
This is for reference only. For actual outline refer to the course webpage at Canvas (our LMS). Content is subject to change (plus I often update it). This is the schedule I used for Spring 2024.
Course Description
An elementary introduction to computing science and computer programming, suitable for students with little or no programming background. Students will learn fundamental concepts and terminology of computing science, acquire elementary skills for programming in a high-level language, e.g. Python. The students will be exposed to diverse fields within, and applications of computing science. Topics will include: pseudocode; data types and control structures; fundamental algorithms; recursion; reading and writing files; measuring performance of algorithms; debugging tools; basic terminal navigation using shell commands. Treatment is informal and programming is presented as a problem-solving tool.
Course Objectives
This course introduces students to fundamental concepts of computing science and programming. By the end of the course, students will be familiar with building blocks of a computer program such as variables, arrays, pointers, recursions; as well as higher level concepts such as analysis of algorithms and coding style. Students will gain valuable knowledge and experience by solving problems using computational thinking.
By the end of this course students should be able to:
- Design and implement solutions to problems using computational thinking and Python
- Explain, analyze, and compare algorithms in terms of performance
- Describe and utilize fundamental computing science concepts such as data structures
- Maintain good coding practice and style
Recommended Textbooks
Think Python - How to Think Like a Computer Scientist (LINK)
Think Python - How to Think Like a Computer Scientist: Interactive Edition (Runestone) (LINK)
Course Schedule
Week | Topics | Readings/Watchings1 |
---|---|---|
1 | Course intro
| Runestone chapters:
|
2 | Build an interactive chatbot! (Part 1)
| Runestone chapters:
|
3 | Build an interactive chatbot! (Part 2)
| Runestone chapters:
|
4 | Build a recommendation system! (Part 1)
| Runestone chapters:
|
5 | Build a recommendation system! (Part 2)
| Runestone chapters:
|
6 | Simple graphics & animation (Part 1)
| Runestone chapters:
|
7 | Reading break | - |
8 | Review & Midterm | - |
9 | Computer vision & image processing (Part 1)
| Runestone chapters:
|
10 | Computer vision & image processing (Part 2)
| Runestone chapters:
|
11 | Under the hood (Part 1)
| Runestone chapters:
|
12 | Internet & big data (Part 1)
| Runestone chapters:
|
13 | Internet & big data (Part 1 cont’d)
| Runestone chapters:
|
14 | Internet & big data (Part 2)
Review | External readings (skip the lambda examples): |
?? | Final Exam | - |
Extras
References in Topics/Readings are for reference only. If there is any topic/concept that is in conflict between class slides and any of these references, what is taught in the classes will be used. ↩