Syllabus INCOMPLETE
Introduction
Welcome to CPSC203, where we treat programming as both a puzzle and a playground. In this course, you’ll learn how to use Python to wrangle numbers, words, images—even music—into surprising results. We’ll build simulations, play with graphs and trees, and peek into how computers tackle problems that seem impossibly big. Along the way, you’ll pick up habits of real programmers—like testing your code, keeping track of versions, and breaking big problems into smaller ones. Most importantly, you’ll discover how computational thinking can help you ask and answer questions in your own field of study.
Instructor information
Course description and learning objectives
Learning Outcomes for CPSC203
By the end of this course, students will be able to:
Implement algorithms in Python fluently, using appropriate libraries (e.g., Pandas, Matplotlib, NLTK, PILLOW) for data analysis, visualization, and simulation.
Use core data structures (lists, dictionaries, trees, graphs) to represent and manipulate complex data, and explain the tradeoffs in their use.
Leverage APIs and diverse data sources (CSV files, images, text, music) to retrieve, process, and transform data into meaningful output.
Apply problem decomposition and abstraction to design solutions for multi-stage, data-driven problems.
Design and implement simulations based on classic algorithms (e.g., Voronoi diagrams, Markov chains, graph traversal), and connect them to real-world applications.
Evaluate algorithmic efficiency, including describing problems in terms of computational feasibility and applying approximation strategies where exact solutions are infeasible.
Apply principles of software engineering (testing with unittest, version control with Git, modular design, type hints) to produce reliable and maintainable code.
Reflect on the role of computation across disciplines, recognizing how programming can be used to formulate and answer questions in students’ own study domains.
Lecture material
Course requirements
Deliverables for the course include the following components:
Problem of the Week (POTW) – You will complete approximately 50 small programming exercises, 5 per week. These are intended to be a simple coding refresher, and they should take you approximately 15 minutes per day.
Classroom Meetings – Class meets Tue/Thu, 3:30-5p, in MacMillan 360. All sessions are recorded and posted, but we make no guarantees about the quality of the presentation, nor do we try very hard to replicate the in-class experience for online participants.
Lab – The material presented in the weekly lab is more detailed and more applied than the classroom narrative. It is an opportunity for you to make sure you can DO the things we talk about in class. Lab exercises are asynchronous video instruction together with PrairieLearn exercises. There are 10 over the term, beginning in week 3.
Examlets – Five self-scheduled 50 minute assessments to be completed on PrairieLearn in the Computer Based Testing Facility (CBTF). You will be given ample practice materials to use in preparation for the examlets. Examlet questions will be a mix of coding and conceptual questions.
Projects – Most of the coding in the course will occur within three significan coding projects. Though we place no constraints on your use of outside resources for completing these exercises, all of the algorithms and problem solving they contain may appear on examlets.
Final Exam – Like the examlets, the final exam will be self-scheduled within the CBTF. The exam window – approximately 5 days – will be posted later in the term.
Course content
Grading and exam policies
Item | Weight | Due date(s) |
---|---|---|
Problems of the Week | 10% (10 x 1%) | Fridays at 6 PM |
Labs | 5% (10 x 0.5%) | Fridays at 6 PM |
Programming Projects | 9% (3 x 3%) | Three in the term |
Examlets. | 50% (5 x 10%) | ~ Bi-weekly |
Final Exam | 26% | TBD |
You must pass the final exam (50%) to pass the course.
Accessibility
Academic misconduct
Land Acknowledgement
UBC’s Point Grey Campus is located on the traditional, ancestral, and unceded territory of the xʷməθkʷəy̓əm (Musqueam) people. The land it is situated on has always been a place of learning for the Musqueam people, who for millennia have passed on their culture, history, and traditions from one generation to the next on this site.