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. Due to a last-minute scheduling change I will be teaching this course, instead of Tim Alcon. I am super excited to work with all of you!

Robust understanding of computer science and programming is a skill that is necessary in 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 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-fidilety 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 favorite 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?

Let's have a great term!

 

Anahita Sanandaji (instructor): sanandaa@oregonstate.edu

I take office hours by appointment. I also check Piazza and my email often.

 

Sonam Kindy (TA): kindys@oregonstate.edu

Theodor Schutfort (TA): schutfot@oregonstate.edu

 

Tutoring

Ecampus Student Resources

 

 

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 recouces)".   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.

Course Summary:

Date Details Due