Course Syllabus

Please note that some links on the course syllabus page are only accessible to registered students.

Two fundamental rules

  1. You are responsible for knowing the contents of the syllabus and all of the information about the course provided on Canvas.
  2. You are responsible for knowing the contents of instructor announcements made on Canvas, which means that you should make sure you receive such announcements and that you check for new ones at least once a day.

When to email?

For all class-wide questions, we encourage you to first post on Ed Discussion if you can't make to an help session (aka office hours). Only questions of a personal nature or related to your own grade should be emailed to a TA or Instructor. If you are hesitant to ask a question on Ed Discussion, you can always post anonymously and no one including the Instructors will know who posted it :) Remember, there are no stupid questions!

Response Times

When you email your TA or us (the instructors), you can normally expect a response within 24 hours. You should usually expect your assignments to be graded within five days of the due date. Projects 2 and 8b require more manual grading from the TAs, so they may need one additional day. Some extra time may also be needed to grade the portfolio project, due to its complexity.

Contact Information is in the "Where to go for help?" section of the Syllabus.


This course is aimed at expanding and optimizing the mental models of thinking and solving real life problems that you learned in CS 161 and also come up with new ones of your own! And we are here to help you in this journey! If you have any questions about anything during the term, please feel free to post them on Ed Discussion or Teams or send us a direct message on Teams at @pfeilw or @ummaredd or @zhangluy

Instructor: Luyao Zhang


Instructor: Doshna Umma Reddy





Please always prefix your subject with [CS162] when emailing.

Instructor Help Sessions (aka Office Hours):

  • Luyao
    • Available for help Session on Teams: Thursday 2-4 PM. Other time is available upon request. 
  • Doshna Umma   
    • Available for help Session on Teams: Tuesday 1-3 PM or by appointment. Other time is available upon request. Please include [CS162] in your subject line when emailing.

Discussion Forums and Help Session Location:

  • Ed Discussion (a Q&A forum for help from the instructor and other students). To access the forum click on the 'Ed Discussions' in the left navigation.
  • Teams (a forum for help sessions and also for more informal interaction with other students); Details to join Teams can be found under start here module

TA Help Sessions (From week 1 - week 8) Will be hosted on General channel on Teams. 

Pacific Time Monday Tuesday Wednesday Thursday Friday Saturday Sunday
9:00 AM
Morgan Baker
9:30 AM
10:00 AM
Xiao Yu Chen
10:30 AM
11:00 AM
sanchit chopra
11:30 AM
12:00 PM
12:30 PM
1:00 PM
1:30 PM
2:00 PM
Yu Liang
Aaron Fowler
2:30 PM
3:00 PM
Jordan Pearcey
3:30 PM
4:00 PM
4:30 PM
Brandon Arsenault
5:00 PM
Austin Webber
Nate Luginbill
5:30 PM
6:00 PM
6:30 PM
7:00 PM
7:30 PM
8:00 PM
8:30 PM



Individual Grading assignment and TAs' email address:  

Student last name from to            Grading TA                   Email

A---Bo                                             Xiao Chen          

Br---C                                              Sanchit Chopra  

D                                                      Austin Webber  

E---G                                                Liang Yu             

H---J                                                Nathaniel Luginbill

K---Le                                               Aaron Fowler     

Li---Mi                                              Jordan Pearcey  

Mk---P                                              Morgan Baker    

Q---Si                                                Sara Harder       

Sm---V                                              Manucher Buicki

W---Z                                               Brandon Arsenault


Austin Webber is our lead TA.  If you want to discuss your grade with your grading TA, you could include Austin in the conversation as well.

Other Resources:



Canvas is the LMS (Learning Management System) that you are using right now to view this course. For questions about Canvas, check this list of help topics.

Ed Discussion

There is a link to Ed Discussion in the left sidebar of Canvas. This ongoing Q&A forum is a valuable resource for getting official answers to your questions (and often helpful student responses also). It's good to use the search box before posting, to see if your question has already been addressed.


Teams is a forum for more informal interaction with your fellow students. It is also where TAs and the Instructors will hold help sessions (aka office hours).

You can download and install the desktop or mobile app from hereor also use it from the browser.

Here's how we'll use Teams:

  • Announcements All announcements relevant to Teams (e.g. change in help session timings) will be posted here by the TAs and Instructors.
  • General
    The landing channel when you first join. This is where help sessions will be held and where you can discuss course-related questions with other students.
  • Random
    Random chat among course members (students and teachers)

On Teams you can:

  • Create your own channels
    For group-work or study-groups you can create your own (private or public) channels!
  • Create ad-hoc teleconference sessions
    Click the "phone" icon next to the channel title and invite people to join you!
  • Engage with the TAs and Instructor during help sessions
  • Engage with each other

OSU's primary motivation in providing this Teams experience is to give you, the student, a built-in mechanism for building relationships and collaborations among yourselves.

To join Teams to attend the help sessions and to talk to your classmates, follow the instructions to join Teams under start here module


PyCharm is the IDE (Integrated Development Environment) that you will use in this course to develop your assignments. There are a few steps you'll need to follow to get PyCharm set up on your computer:

  1. Download and install the current version of Python 3, found here.
  2. Download and install the Community edition of PyCharm, found here.
  3. Run PyCharm and answer the setup questions (accept the default if you aren't sure). When you reach the welcome screen, click on "Create New Project". You should now see this screen:
    PyCharm new project screen
  4. In the "Location" path, replace "untitled" with "greeting". This will be the name of your project.
  5. Click on the little arrow to the left of "Project Interpreter". You should now see the following:
    PyCharm select interpreter screen
  6. Click on "Existing interpreter" and select whatever version of Python 3 you installed (make sure to select the interpreter you installed, not the installer file). PyCharm will remember this choice as the default for future projects (which is good, since Python 3 is what we'll use throughout the course). [If the Python 3 interpreter you installed doesn't appear, open the Settings/Preferences dialog, select Project | Project Interpreter, click the The Configure project interpreter icon and select Add. Next select System Interpreter and then select your installation of Python 3.] You should now see this screen:
    PyCharm blank project screen
  7. Near the top of the left pane, right-click on the project folder ("greeting"), select "New/Python File", and name the new file "". In your new document, type the following: print("Hello world.")
  8. Right-click anywhere on the document and select "Run 'greeting'" (which has a little green triangle icon to its left). This should make "Hello world." print to the output window. Congratulations - you've just created and run a program in Python!
  9. Click on "Python Console" at the bottom left of your screen. This changes the bottom window from an output window to a console window, where you can use Python commands interactively. Try entering in this window the same print command that you put in your program. Interactive mode is handy for trying out simple things quickly, but for more complex things it's easier to write a program (or "script" as they're often called in interpreted languages such as Python). If you run your program again, the bottom window will switch back to showing the output of your program.


GitHub is a popular web hosting service for Git repositories. Git is a distributed version control system that makes it easy to keep backups of different versions of your code and track changes that are made to it. You'll be using GitHub to host your assignment code. The assignment page in Canvas will contain a GitHub invitation link for each coding project. When you accept that invitation, GitHub will create a repository for you for that project. Your project's repository contains all of your project's files and stores each file's revision history. You can clone these repositories and then commit and push updates to them from within PyCharm. Cloning a repository creates a local copy of it. Committing a change updates your local copy. Pushing a change updates your repository on GitHub.

Install Git:

  1. Download and install Git.
  2. In the Settings/Preferences dialog of PyCharm, select Version Control | Git in the left pane and specify the path to the Git executable.

Use PyCharm to clone your repository from GitHub:

  1. From the welcome screen, choose Checkout from Version Control | Git.
  2. In the Clone Repository dialog, specify the URL of the remote repository you want to clone (there are detailed steps on the Assignment 1 page). You can click Test to make sure that connection to the remote can be established.
  3. In the Directory field, specify the path where the folder for your local Git repository will be created into which the remote repository will be cloned (you can use the default path provided).
  4. Click Clone. To create a PyCharm project based on the sources you have cloned, click Yes in the confirmation dialog.

Use PyCharm to commit and push changes:

  1. To invoke the Commit Changes dialog, select the files (or an entire changelist) in the Local Changes view (in the Version Control tab in the lower left) and click Commit button on the toolbar (or right-click and choose Commit Changes). The Commit Changes dialog lists all files that have been modified since the last commit, and all newly added unversioned files.
  2. Enter a commit message. You can click Message history to choose from the list of recent commit messages.
  3. From the Commit drop-down selection choose "Commit and Push". Then in the pane that pops up, confirm the Push.
  4. From the Commit drop-down selection choose "Commit and Push". Then in the pane that pops up, confirm the Push. Make sure that you commit and push. If you just commit, that will only update your local copy of the repository, not the copy on GitHub. The push is what updates the copy on GitHub.


At the bottom of each assignment page is a link to Gradescope, which will open in a new tab. On Gradescope you'll be able to click a link to submit your projects from GitHub. is the tool that was used to create the interactive exercises in the lessons. The exercises are embedded in the lesson pages in Canvas, but you will need to be logged into in order to view them. You'll receive an invitation to join the "classroom" around the first day of class.

Privacy Policies

Follow this link to access Privacy Policies for commonly used external tools that require the user to create an account.

Microsoft Teams

Follow this link to access the Privacy Policy for Microsoft Teams.

Ed Discussion

Follow this link to access the Privacy Policy for Ed Discussion.

Course Summary:

Date Details Due