Course Syllabus

Hi and Welcome to CS 165 – Accelerated Introduction to Computer Science*

My name is Anahita Sanandaji and I will be your instructor for this course. I am super excited to work with all of you!

Robust understanding of computer science and programming is a skill that is necessary for many different areas, and even potentially in your job. No matter what programming language you choose to work with now or in future, the important thing is to think algorithmically and solve problems efficiently, and this is one of the main goals of this course. We use C++ for this class and cover the fundamentals of topics including data types, flow control, debugging, functions, object-ordinated programming (OOP), and basics of data structures. This course basically combines two other introductory courses (CS 161 and CS 162) that is why called “Accelerated”.

For me, programming is a crucial tool to implement my design ideas. For example, during my PhD research, I created a 3D Game in Unity to enhance 3D spatial skills of novice users. I initially designed the game starting from low-fidelity paper-based sketches to more interactive higher-level prototypes. I then used C# in Unity to write the scripts necessary for developing my game. My favourite programming language is still C++, although I also code in Java, C#, and python. I also have some web programming experience (JavaScript and HTML).  How about you?

Here is my introduction video:

Let's have a great term!

NOTE: Some links in this syllabus page may only be accessible to currently enrolled students.



Syllabus Quiz


NOTE: Some links in this syllabus page may only be accessible to currently enrolled students.

Anahita Sanandaji (instructor):

I will be using Canvas Announcements to broadcast information about the class. Please make sure your Canvas preferences are set to send you email notices of new Announcements.  

Please check syllabus " Getting Help" part to become familiar with the steps you should take to ask questions and find answers to your questions for this class. Please tag your email with "[CS 165]" in the subject line.

Instructor Communication Policy: I will check email and Piazza frequently and will respond to course-related questions within 1 business day if possible.

Instructor Office Hours: Will be announced weekly. I also take office hours by appointment and frequently check Piazza and my email. 

TAs Contact information:

Enrolled students, please see this link for TA info: Who is Gading Whom

Note: Please don't try to communicate with your TA or instructor by posting on your assignment in Canvas - they don't get notified of such posts in a useful manner. Instead, you should contact them via email.

Piazza information:

Piazza is a Q&A discussion forum. You can access Piazza as a separate website or as a tool within Canvas.  You can enroll yourself in Piazza by following the link in the left sidebar.

The Piazza Q&A platform is also geared toward students helping other students. Anybody can post or answer a question, and you can even do so anonymously if you're shy.  Students are strongly encouraged to post questions (about lectures, assignments, or anything class-related) to Piazza first, rather than email the instructor. Students should also frequently check in to answer other questions. Not only will this enable everyone to get help quickly, but teaching someone else is the best way to learn something, so you'll be improving your understanding of the material as well.

I will reward active participation in Piazza by giving extra credit to those students who contributed to the discussion through good questions and answers!

Slack information:

Slack is a synchronous discussion forum for more casual conversation with fellow class members.

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. Then find class-cs165-sp19. Alternatively, after setting up the slack using your ONID, you can directly connect to

Please read Slack - How To (for Students) to become familiar with the steps required to set up Slack for this class.



Ecampus Student Resources

NOTE: Some links in this syllabus page may only be accessible to currently enrolled students.

Here are some tutorials to help introduce you to the tools we'll be using in this course.  Please let me know if you have any additional questions about any of these topics:

Canvas (which you are in currently) is the course management software used for this course, and contains most of the instructional material besides the textbook.  When searching for help on how to use Canvas, it helps to include the term "instructure" which is the name of the company that makes Canvas.

Canvas Basics Guide


TEACH is the website where you enable your ENGR account.  On the TEACH page there should be a link for you to "Create a new account (Enable your Engineering resources)".   The login for your ENGR account is the same as your ONID login.


The Ecampus Exams and Proctoring Form is where you will tell us who your proctor will be for the exams.  Please see the module titled Proctored Exam Information.


PuTTY and Terminal are terminal emulators – they provide a window where you will interact with the OSU server ("flip"), using a command-line interface.  Terminal comes included on Macs. On Windows, you'll need to download PuTTY.  Note that where you are doing your work is on the school server ("flip") - a terminal emulator just connects you to that server.  After logging in (as demonstrated in the videos below), it will ask you for "terminal type".  The first time it asks, you can just hit <enter>.  If you already tried something else, then you can enter "xterm".


PuTTY tutorial video



Mac Terminal tutorial video 


Linux is the operating system used on flip (the school server you'll be using).  There are a lot of Linux commands, but the most important ones for you right now are: ls (list current directory), cd (change directory), mkdir (make a new directory), mv (move or rename a file), cp (copy a file), g++ (compile C++ programs), vim (a text editor you can use to write your C++ source files).

Guide to some common commands


FileZilla and Cyberduck are utilities you can use to transfer files between your computer and flip. You'll need to download and install whichever one you decide to use.


FileZilla tutorial 


Code editors provide an environment in which you can create and edit computer programs.   There are two main types: command-line editors and IDEs.

A command-line text editor such as vim or nano will let you edit files on the school server.   Even if you do much of your coding in an IDE, it's very useful to be able to use a command-line editor.  For one thing, it allows you to do some final debugging or other edits without having to transfer files back and forth.  Assignment 1 will have you use a command-line editor to create a simple C++ program.  If you enter "vimtutor" at the command-line on flip, it will start up a vim tutorial (in vim itself) that will help you learn the basics.  Also see this gamified tutorial.

An IDE provides a (for most people) more familiar graphical interface.  I recommend not using an IDE for this course, because since it takes care of certain details for you, you may not remember those details when you need to.  If you decide to use an IDE then for those of you with Windows, I recommend Visual Studio, which students can download free via DreamSpark.  For those of you with a Mac, I recommend Xcode, which you can install for free.   Both Visual Studio and Xcode allow you to compile and run your code in addition to editing it, however you must test your code on the school server ("flip").  As the syllabus mentions, C++ code that works in one environment may not work in a different environment.  Two common gotchas to watch out for are:

  • When creating a new project in Visual Studio make sure you select "Empty Project", not "Win32 Console Application".
  • Both Visual Studio and Xcode will sometimes automatically initialize the value of a variable or array (you'll learn what this means soon).  If you rely on that being done for you, then your code may fail when run on the school server.

XCode is available free through Apple's app store. 

Visual Studio is available free through Microsoft Imagine:

  1. Login to TEACH.
  2. Under "External Sites", click on "Microsoft Imagine Login".
  3. Click on "Developer Tools" and then "Visual Studio 2017".
  4. Either the Community or Enterprise version will work.  I believe the only difference is that the Enterprise version has a feature called CodeLens - you can look up info about it and decide if that's something you want.


Mimir is where you will submit your coding assignments.  You can login to Mimir by clicking on the link in the Start Here module titled "Mimir One-Click Login App".  From there, selecting an assignment and submitting your code should be straightforward.  Once you've submitted it, tests will automatically be run against it, typically some number of tests that are "hidden" and one that isn't.  For the test that isn't hidden, you'll be told whether your code passed or failed, and you can click on the gear icon for information about what went wrong, if anything.  The test that isn't hidden is provided so you can verify that you submitted your code correctly, that it compiles, and that there aren't any formatting issues.  Since the number of submissions is limited, make sure you don't waste them.  Your score for an assignment is based on how many tests your code passes.  If your code meets all of the assignment specifications, it will pass all of the tests.  If your code doesn't pass a test, then you will not receive the points for that test - partly because your code didn't meet the specification(s) being tested, and partly because you didn't test your code sufficiently to reveal the error.


Piazza is a Q&A discussion forum.  You can access Piazza as a separate website or as a tool within Canvas.  You can enroll yourself in Piazza by following the link in the left sidebar.

Slack is a synchronous discussion forum for more casual conversation with fellow class members. Please read Slack - How To (for Students) to become familiar with the steps required to set up Slack for this class.


* NOTE: Some links in this syllabus page may only be accessible to currently enrolled students.

Course Summary:

Date Details Due