To the faculty page of James Tam | Return to the course web page |
Day/Time |
Lectures will
be held live during the scheduled day/time (passcode for both =
hope)
|
James Tam |
|
Office time: TR (3:50 PM - 4:30 PM) via a Zoom link (passcode = 'hope'): |
|
Email: tam@ucalgary.ca (Make sure you specify the course name and number in the subject line) |
|
General information |
Official course
information sheet (summary of official course requirements)
|
General assignment information |
Grade calculator to estimate your term grade: [Excel spreadsheet] Academic misconduct vs. collaboration: what is allowed for this class 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 |
Official recommended textbook |
"Starting Out with Python"
(Gaddis T)
Addison-Wesley, 5th edition.
You can purchase the eText from the university bookstore. If you also want a print edition you have an option to purchase it at a discount. |
Link to other UC licensed textbooks | Safari website: ['Free' books]. (If you see a message about security issues with this site then likely it's because UC-IT hasn't configured it properly so you can contact them about the issue: www.ucalgary.ca/it) |
To use the computers in the first floor Math Sciences lab you will login using your CPSC account. By default the account name and password will be identical to that of your university account. For more information about your CPSC account (such as how to change your password) see the following [Information link]. The labs are accessible 24/7 using your UC ID card If you have access problems then contact [Campus security] to your card can be enabled.
Teaching tutorials (you registered for a section with you signed up for the course): Teaching will be in person in the computer labs - below - starting the week of May 8 - 14). Teaching materials will be available in D2L under 'content' in D2L and under Content->Teaching tutorials
- Tutorials include mandatory information for the course. Time will be spent on the following: TA's teaching new skills, discussion of assignment requirements.
Tutorial
Location Instructor name
Contact information
T01: MW 09:00-10:50 MS 176 Aminbeidokhti, Amir (a MAC user) amir.aminbeidokhti@ucalgary.ca T02: MW 17:00-18:50 MS 160 Farajian, Samin (a MAC user) samin.farajian@ucalgary.ca T03: MW 15:00-16:50 MS 160 Farajian, Samin (a MAC user) samin.farajian@ucalgary.ca T04: TR 16:00-17:50 MS 160 Al Marouf, Ahmed (a Windows user) ahmedal.marouf@ucalgary.ca T05: MW 11:00-12:50 MS 176 Aminbeidokhti, Amir (a MAC user) amir.aminbeidokhti@ucalgary.ca Teaching schedule for the teaching tutorials
Shortcuts for each week of tutorial
- May 1 - 7 (no tutorials held this week)
- May 8 - 14
- May 15 - 21
- May 22 - May 28
- May 29 - June 4
- June 5 - 11
- June 12 - 18
Week
Activities for the teaching tutorials
May 1- 7 Tutorials don't start until next week May 8 - 14 (in person tutorials start this week: locations/days/times) First tutorial: [Examples] [Exercises]
- Time to work through A0 with the tutorial instructor available for help.
- Going over the A1 requirements
- Running the IDLE python editor
- Display of output
- Triple quoted output
- Common operators
- Operator precedence, the order of execution for python operators
Second tutorial: [Examples] [Exercises] [Solutions]
- Getting user input
- Formatting output using escape codes
- Information types
- Formatting output using format specifiers
- Types of programming errors: syntax, runtime, logic
- Documenting your python programs
- Making backups and program versioning
- Going over the mini-A2 requirements
May 15 - 21 First tutorial: [Examples] [Exercises] Second tutorial: [Examples] [Exercises]
- Going over the A2 requirements
- IF
- IF-ELSE
- Logic (AND, OR, NOT) and branching
- Going over the mini-A3a requirements
- IF-ELIF
- Multiple IFs
- Examples of logic errors in branches
- WHILE-loops
- FOR-loops
- Counting FOR-loops (iterating through a number sequence).
- FOR-loops iterating through the characters in a string
- Nesting
- A branch in a loop
- A loop inside of a loop
May 22 - May 28 First tutorial:
- Monday: Victoria Day holiday, no classes today.
- Tuesday: In order to stay in sync with Monday's tutorial no classes will be held today.
Second tutorial: [Debugging examples] [Functional decomposition: examples] [Functional decomposition: exercises]
- Going over the mini-A3b requirements
- Bug hunting: Tips for finding and fixing the errors in your programs.
- TAs will clarify what is and is not allowed in terms of helping others (collaboration) vs. academic misconduct. Presentation material [PDF] [PowerPoint]
- Going over the A3 requirements
- Tracing simple programs employing functional decomposition (order of function calls).
- Defining and using a Boolean function.
- Tracing more complex programs which employ functional decomposition.
- Illustrating the importance of good programming style (by employing poor style).
May 29 - June 4 First tutorial:
- More complex examples of programs employing functions: return values, local variables, global variables, scope, tracing the order of function calls, parameter passing mechanisms (value, reference), the importance of programming style (tracing an example employing bad style in order to illustrate)
- Going over the mini-A4a requirements
- Going over the mini-A4b requirements
- [Examples: functions] [Exercises: functions]
Second tutorial:
- Basics of lists vs. strings.
- Creating fixed sized lists, creating lists dynamically & randomly.
- List references and passing lists as parameters.
- Using the chr function and ASCII codes.
- 2D lists
- [Examples: lists] [Examples: 2D lists] [Exercises: lists]
June 5 - 11 First tutorial:
- More complex programs involving 2D lists (closer to real world applications).
- Employing a debugging tool in a program. [Examples] [Exercises]
- Going over the mini-A4c requirements
Second tutorial:
June 12 - 18
- Open tutorial:
Similar to regular CT, students can attend the help session of any tutorial instructor and not just the one they are registered in.
- No new teaching will occur.
- The tutorial instructor will be available during the [scheduled tutorial time in the usual tutorial room] (not the CT area) to answer student questions.
Help tutorials = Continuous tutorials (or CT for short) where you can go for help outside of class
- These in-person 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.
- Location: First floor Math Sciences computer lab (near MS151 at a desk labelled as the "217 CT" or something similar).
- You are NOT restricted getting help from the CT session staffed by the person whose tutorial you are registered in (you can go to any TA for help).
- If you have questions then it's best to ask them during the CT unless it's a question that can be answered fairly quickly via email.
Continuous tutorial schedule: [CPSC 217 schedule for spring 2022]
Shortcuts for each week of lecture
- Student orientation
- Week 1: May 1 - 7
- Week 2: May 8 - 14
- Week 3: May 15 - 21
- Week 4: May 22 - 28
- Week 5: May 29 - June 4
- Week 6: June 5 - 11
- Week 7: June 12 - 16
Approximate time each topic will be covered in lecture Lecture topics & schedule Relevant textbook chapters: "Starting Out with Python" (Gaddis T) Addison-Wesley. Graded & ungraded component due during the week: Note that all assignments are due at 4 PM Student orientation
- Getting started as a new CPSC student. Includes information on how to access the CPSC computer network when you are working from home. A portion of these lessons will be covered in tutorial later in the term term, other resources are available for your reference. [Orientation link]
Not applicable May 1 - 7 (there is only one lecture this week).
- Introduction to the course, administrative about how the course will be run such as grading information. [PDF notes] [PowerPoint]
- Introduction to computer programming [Examples]
- Part I: writing and running a python program, variables, displaying information to the user, common math operators. [PDF notes] [PowerPoint]
- Introduction to programming: Chapter 1 & 2, Appendix A (additional information for installing Python on your own computer)
May 8 - 14
- Introduction to computer programming [Examples]
- Part II: Getting information from the user, formatting text output. [PDF notes] [PowerPoint]
- Introduction to computer programming [Examples]
- Part III: Named constants, documenting programs, prewritten python functions, common programming errors, programming style: layout and formatting of your program. [PDF notes] [PowerPoint]
- Branching [Examples]
- Part I: IF, IF-Else, Logical-AND, Logical-OR, Logical-NOT. [PDF notes] [PowerPoint]
- Branching: Chapter 3
May 15 - 21
- Branching [Examples]
- Part II: Logic and branching, multiple IFs, the IF-ELIF structure, nested branches, the IF-IN operator, using an epsilon. [PDF notes] [PowerPoint] [Exercise descriptions]
- Looping/repetition [Examples]
- Part I: while-loops, for-loops, sentinel controlled loops. [PDF notes] [PowerPoint]
- Part II: nesting branches and loops. [Examples] the break instruction and why it generally shouldn't be used, infinite loops, testing loops. [PDF notes] [PowerPoint] [Case study: branching, looping, nesting in a simple adventure game]
- Part III: Usability heuristics for user friendly program design. [PDF notes] [PowerPoint]
- Optional extra resource, nesting and loops. This semester some of this material was incorporated into Part II of the repetition notes: [PDF notes] [PowerPoint]
- Branching: Chapter 3
- Loops: Chapter 4
- Mini-A2 Friday May 20 (TA deadline to release grades May 27)
May 22 - 28 (Monday May 23 is the Victoria Day holiday: no office hours or CT sessions)
- Functions/decomposition
- Part I: The top down approach to functional decomposition, defining functions, calling functions you have defined, scope (local and global), declaring variables locally, benefits of declaring variables locally. [PDF notes] [PowerPoint] [Examples]
- Part II: Parameter passing, function return values, function specific style requirements, documenting function. [PDF notes] [PowerPoint] [Examples]
- Functions: Chapter 5 (don't worry about the material in Section 5.9, 5.10 yet)
May 29 - June 4
- Functions/decomposition
- Part III: return to scope, what level/where to declare variables, Boolean functions, splitting up long functions, common errors with functions, program design & testing functions. [PDF notes] [PowerPoint][Examples]
- Functions/decomposition: Helper exercises/programs:
- Helper 1: Decomposing a nested structure into multiple functions.
- Helper 2: Determining the level in a functional hierarchy should variables be declared.
- Helper 3: Inter-function communication. Information from what function needed in another function.
- Composites
- Part I: Declaring list variables, accessing a list vs. elements in a list, passing list as parameters, methods of parameter passing, avoiding list bound exceptions. [PDF notes] [PowerPoint] [Examples] [Exercises]
- Part II: , using multi-dimensional lists, creating 2D lists, accessing a 2D list and its parts, basic list operations, strings & tuples. [PDF notes] [PowerPoint] [2D list examples] [String and tuple examples] [Working with two parallel lists]
Composites: Lists & Tuples: Chapter 7
Composites: Strings Chapter 8
June 5 - 11
- Introduction to problem solving
- How to come up with a program when the solution or even a definition of the problem isn't immediately self-evident. [PDF notes] [PowerPoint] [Examples]
- More advanced 2D list exercise:
- Files & exceptions
- Reading from and writing to text files using python's iterating for-loop as well using the more generic algorithm employing a while-loop. Exception handling to deal with common run-time errors. Creating dynamic 2D lists when the dimensions are unknown ahead of time (such as reading the data from a file). [PDF notes] [PowerPoint] [Examples]
Files: Chapter 6
- Mini-A4a: Monday June 6 (TA deadline to release grades June 13)
- Mini A4b: Wed June 8 (TA deadline to release grades June 15)
June 12 - 18 (16th is the last day of the term).
- Introduction to computer science:
- An overview of some research areas and higher level courses in Computer Science (Human-Computer Interaction, computer graphics, artificial intelligence, computer vision, software engineering, computer security, games programming. [PDF notes] [PowerPoint]
- Computer history:
- A brief overview of computer history: developments in computers and related technologies from the 1970s onward. [PDF notes] [PowerPoint]
- Since all the required material has been covered as of Tuesday June 14 this will be the last lecture for this semester.