Course Syllabus

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

instructor photo

Hello! My name is Tim Alcon and I will be your instructor for CS 161 - Introduction to Computer Science I. Computer science is a fascinating field, full of interesting problems to work on, and it certainly doesn't hurt that computing skills are in high demand. Whatever your particular set of motivations for taking this course, it is my hope that you will gain knowledge and skills that will help you progress toward your goals.

There's a quote that "Computer science is no more about computers than astronomy is about telescopes." It can seem to those not familiar with computer science that it's only about how to program computers, but that's not the case. Computer science was being done before computers ever existed (Ada Lovelace and Alan Turing are notable examples). It spans a whole plethora of sub-disciplines including: bioinformatics, cryptography, computer networking, computer security, software development, robotics, artificial intelligence, algorithm analysis, database design, computer graphics, natural language processing, and cognitive science, among others. So what exactly do all these areas have in common? The key idea linking them is that of an algorithm. In essence, an algorithm is a pattern for how to manipulate and transform information, which is a common concern for each of those sub-disciplines. In fact the word for "computer science" in many other languages transliterates as "informatics," or the science of information.

So if computer science isn't just about programming computers, why is it that you start with a course on that topic? Because it gives you a language in which to express algorithms. Algorithms are not tied to any specific form of expression, but for a computer to read and execute our algorithms, we must use a mathematically precise grammar and syntax, i.e. a computer language. Such a language is also useful because it forces us to be very precise about how we want to manipulate or transform the relevant information - there is no room for ambiguity. This course currently happens to use Python, but it's not really about learning Python. It's about learning to think algorithmically. Since Python is the vehicle we're using, you will naturally be learning that along the way, but once you get the hang of thinking algorithmically, programming in other computer languages will (mostly) just be a matter of learning some new syntax and conventions.

Computer science is a challenging discipline - it can be hard for many people to adjust to the highly analytical and detail-oriented style of thinking that is required - but I believe it's something almost anyone can learn given sufficient interest, dedication and practice. Do not be embarrassed to ask lots of questions along the way - that's what I and the TAs and tutors are here for.


Tim Alcon (instructor):

Office hours on Slack: TBD

TA assignments and contact information are provided in an announcement at the beginning of the term.

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)
  • #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). 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.

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 (the repositories that I've created for each project).  These URLs will be provided on the assignment pages.  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.


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