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”.
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.
Anahita Sanandaji (instructor): firstname.lastname@example.org
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.
Instructor Office Hours: Will be announced weekly. I also take office hours by appointment and frequently check Piazza and my email. Please tag your email with "[CS 165]" in the subject line.
TAs Contact information:
Enrolled stdeunts 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.
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.
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).
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.
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:
- Login to TEACH.
- Under "External Sites", click on "Microsoft Imagine Login".
- Click on "Developer Tools" and then "Visual Studio 2017".
- 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.
The syllabus page shows a table-oriented view of the course schedule, and the basics of course grading. You can add any other comments, notes, or thoughts you have about the course structure, course policies or anything else.
To add some comments, click the "Edit" link at the top.