Course Syllabus

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


Instructor: Luyao Zhang


Instructor: Samarendra Hedaoo

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 I am here to help you in this journey! If you have any questions about anything during the term, please feel free to post them on Piazza or Slack or send me a direct message on Slack at @hedaoos or @zhangluy.


Syllabus quiz

Schedule of assignments and quizzes

Winter 2020 CS 162 syllabus

Course: CS 162 – Introduction to Computer Science II

Credits: 4

Instructors (for all sections):

Required textbook: None


Communication Policy:

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.

Response times

When you email your TA or us (the instructors), you should expect a response within 24 hours. You should usually expect your assignments to be graded within four 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.


OSU catalog course description, including pre-requisites/co-requisites

Basic data structures. Computer programming techniques and application of software engineering principles. Introduction to analysis of programs. Lec/lab.

Prerequisites: CS 161 or EECS 161.

A minimum grade of C is required in CS 161 and EECS 161.


Course content

  • modules
  • exception handling
  • unit testing
  • inheritance, composition, polymorphism
  • searching, sorting, algorithm analysis
  • file handling, serializing objects using pickle or json
  • more on recursion
  • linked lists, stacks, queues
  • generators
  • first-class functions
  • decorators


Course Learning Outcomes

At the completion of the course, students will be able to…

  1. Design and implement programs that require:
  • multiple classes, structures
  • hierarchies of classes that use inheritance and polymorphism
  • understanding of abstraction, modularity, separation of concerns, exception handling
  1. Construct and use basic linear structures (arrays, stacks, queues, and various linked lists) in programs, and be able to describe instances appropriate for their use.
  1. Classify moderately complicated algorithms in these complexity classes: O(1), O(log n), O(n), O(n log n), and O(n2).
  1. Develop test-data sets and testing plans for programming projects
  2. Produce recursive algorithms, and choose appropriately between iterative and recursive algorithms.


Course tools

  • Canvas is the course management software used for this course.
  • PyCharm is an IDE (integrated development environment) for Python. It's where you'll write your programming assignments.
  • Gradescope is the site where you'll submit your code for the assignments.
  • is a Python environment that can be embedded in Canvas pages. It's what runs the interactive exercises at the end of each lesson page.
  • Piazza is an asynchronous Q&A forum.
  • Slack is a synchronous discussion forum where TAs will hold office hours, and which is also for more casual conversation with fellow students.
  • GitHub is a popular tool for hosting version-controlled code repositories.

More information about these tools is available on the "Tools you will need" page, in the "Start here" module in Canvas.


Coursework and Grading Policies

  • Your code will be tested to make sure it works correctly. It is your job to make sure that your code will behave correctly for any possible tests. One simple test is provided on Gradescope, for which you get immediate feedback. The remaining tests are "hidden" until the due date has passed.
  • You may submit assignments and quizzes up to 48 hours late for half-credit, with the exception of the portfolio project and the end of course conversation. If you have extenuating circumstances, please contact me about them as early as possible.
  • The quiz in this course is open book test. You may take the quiz twice, with 15 minutes for each attempt. Your score will be that of your most recent attempt.
  • All assignments are due at 11:59pm Pacific Time. Be aware of what time zone Canvas is using to display deadlines. If it's not your local time zone, you can set it to be. The Canvas phone app always displays times for the time zone the phone is in. This is important to keep in mind if you will be traveling.
  • In this course you may use commands or techniques that haven’t been covered in the course, but only what is available in the Python standard library. Always ask first before using any modules or packages that are not part of the Python standard library, unless they’re explicitly mentioned in the assignment specifications, otherwise you may lose points. The reason for this is so you don’t circumvent using material that the assignment was designed to make you practice.
  • If you disagree with a score on any coursework, contact your TA by email within one week of receiving your grade. If you are dissatisfied with your TA's response (or if they neglect to respond at all), then you should contact me about it.
  • There is no extra credit.
  • I don't plan to “curve” the grades, but that's something I'll re-assess at the end of the term.
  • Makeup exams will only be given for exams excused in advance by the instructor.
  • Incompletes will be given very rarely. If you have been doing well in the course so far, but an emergency comes up that prevents you from continuing according to schedule, let me know as soon as you can.


Weights for Grading

Assignments 70%

Quizzes 30%


Letter Grade Percentages

93-100% A       90-93% A-       87-90% B+       83-87% B         80-83% B-        77-80% C+

73-77% C         70-73% C-        67-70% D+      63-67% D        60-63% D-       0-60% F


Being Mentally Prepared

The projects in CS 162 are larger and more challenging than the projects in CS 161, so you will need to budget your time accordingly.

Other people in the course may have more background in the subject than you do. Don't feel intimidated or put off if other students talk on the discussion board about topics that we haven't covered yet (or may not cover in this class at all). What's important is that you understand what we have covered.

Taking online courses tends to feel more isolated than taking on-campus courses. Even though there are still all the normal course elements - lectures, readings, homework, a teacher whom you can ask questions, etc. - sometimes students in an online course will feel like they are "teaching themselves" because interactivity in such a course is less forced and less immediate. I can't see or hear you, so I can't judge whether you're having trouble by your tone or expression. I am always happy to help, but you have to take the initiative and let me know when you run into problems.


Getting Help

When you have a question about something, the order of steps you should take to pursue answers is roughly the following:

  1. Review the relevant materials (assignment description, readings, lectures).
  2. Search the class discussion board on Piazza (it can take some practice to learn how to refine your searches well) to see if your question has been answered already.
  1. Post to the class discussion board on Piazza (by doing #1 and #2 first, you might save yourself asking a question, and you might also then be better able to help others). When you post a question on Piazza and it's answered there, that benefits other people who have the same question (if you're shy, you can post anonymously).
  1. If you've tried #1-3 and feel like your question hasn't been fully addressed, please email your assigned TA or myself. Or attend one of the office hours on Slack.
  1. For questions about assignment grading, first ask your TA. If that doesn’t resolve the issue, then ask me.
  1. For questions relating to course policies or administration, email me directly. You are allowed to post small snippets of non-working code as discussed in the section on Academic Integrity below. That also applies to answering other students’ questions - please use pseudocode or give hints so the student will have the satisfaction (and learning reinforcement) of figuring out the solution for themselves. When you are willing to help others on the discussion board and take pains to not make anyone feel like they asked a dumb question, you are reinforcing both your technical knowledge and your people skills, both of which are highly valued not just here, but out in the real world.

Online tutoring is available. The link to the signup form is here.


Technical Assistance

If you experience any errors or problems while in your online course, contact 24-7 Canvas Support through the Help link within Canvas. If you experience computer difficulties, need help downloading a browser or plug-in, or need assistance logging into a course, contact the IS Service Desk for assistance. You can call 541-737-8787 or visit the IS Service Desk online.


Academic Integrity

The Code of Student Conduct prohibits Academic Misconduct and defines it as:

Any action that misrepresents a student or group’s work, knowledge, or achievement, provides a potential or actual inequitable advantage, or compromises the integrity of the educational process.

To support understanding of what can be included in this definition, the Code further classifies and describes examples of Academic Misconduct, including cheating, plagiarism, assisting and others. See the Code of Student Conduct for details.

You are expected to do your own work and demonstrate academic integrity in every aspect of this course. Familiarize yourself with the standards set forth in the OSU Code of Student Conduct Section 4.2. You must only access sources and resources authorized by the instructor.

You may not show your work to any other current or future students without the instructor's authorization. Violations of these expectations or the Code of Student Conduct will be reported to the Office of Student Conduct and Community Standards. If there is any question about whether an act constitutes academic misconduct, it is your responsibility to seek clarification and approval from the instructor prior to acting.

Academic Integrity DOs and DON’Ts

  • You are encouraged to discuss course content with each other, even including general discussion of homework assignments and how to fix specific issues.
  • You may post small snippets of non-working assignment code to Piazza or the official course Slack. If you have trouble narrowing the problem down to a small snippet, just describe the problem as well as you can and/or ask your TA for help.
  • You may ask conceptual questions related to assignments on Piazza or the official course Slack.
  • You may post code for the exploration exercises on Piazza or the official course Slack.
  • You may not post any quiz questions or answers in any form.
  • You may not make your code publicly accessible. For example, any git repo you post assignment code on must be private, with the exception of the Portfolio assignment.
  • You may share and compare your assignment code with other students on Piazza or the official course Slack starting the Sunday after the assignment was due. Keep in mind that there's not just one correct way to write a program - there's almost always a variety of correct approaches. As you compare with others' code, try to notice what seem to be advantages or disadvantages of a particular approach, and don't be afraid to ask questions about why someone made a certain design decision.


Students with Disabilities

Accommodations for students with disabilities are determined and approved by Disability Access Services (DAS). If you, as a student, believe you are eligible for accommodations but have not obtained approval please contact DAS immediately at 541-737-4098 or at DAS notifies students and faculty members of approved academic accommodations and coordinates implementation of those accommodations. While not required, students and faculty members are encouraged to discuss details of the implementation of individual accommodations.


Student Conduct Code

This program strives to prepare students for careers in computer science, which includes preparing students to communicate professionally. Therefore, students in this class are expected to communicate in a professional manner in discussion forums, email messages and all communications for this course. Critiques, disagreements, problems, or other topics of a sensitive nature can be addressed, but should be addressed civilly and professionally. If a student's communications become unprofessional, disruptive, abusive, inflammatory, or if they otherwise obstruct the learning process of the class, the instructor may restrict the student from participating in the electronic forums associated with the class and notify Ecampus and the OSU Office of Student Conduct and Community Standards. Productive learning communities and workplaces depend on civil, professional discourse. It is our hope that this policy strengthens your learning community and prepares you for the professional workplace.


Online Privacy

Posts to Canvas or Piazza discussions or Canvas groups are public messages, and all such posts will be viewable by the entire class or the assigned group members. If you prefer that only the instructor sees your communication, use a private message or email. Posting of personal contact information is strictly at your own risk.

Please put the prefix [CS162] in the subject when you send emails to us so we can identify your emails quickly.

Samarendra Hedaoo (Instructor):

Luyao Zhang (Instructor):

For all class-wide questions, we encourage you to first post on Piazza if you can't make to an office hour. 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 Piazza, you can always post anonymously and no one including the Instructors will know who posted it :) Remember, there are no stupid questions!

Office hours on Slack: To be announced by the end of the week 1. Until then you can post on Piazza.

TA assignments and contact information will be provided in an announcement by the end of Week 1 too.

Piazza (a Q&A forum for help from the instructor and other students)

Slack (a forum for more informal interaction with other students, and also for office hours)


Ecampus Student 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.


There is a link to Piazza 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.


Slack is a forum for more informal interaction with your fellow students. It is also where TAs and I will hold office hours. Please connect to the Workspace ( - this is the central connection point for all OSU-oriented slack workspaces. You should then select the "Sign in with ONID" and be able to connect.

Here's how we'll use the Class Slack Workspace:

  • #announcements
    The landing channel when you first join. We will use this for announcements specific to Slack.
  • #random
    Random chat among course members (students and teachers). Bring your own memes here!
  • #general (You will have to join this channel manually to really get anything out of Slack)
    Class-specific discussions, office hours, etc.

On Slack 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 office hours
  • Engage with each other

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


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. 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 name> | 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.

Course Summary:

Date Details Due