CS101 Syllabus

Instructor: Ashley Taylor
(ataylor4 AT stanford DOT edu)
Office Hours: Tuesday, 3:00-4:30PM
Thursday, 11:45-1:30PM
Gates 400
or by appointment
Teaching Assistant: Tyler Conklin
(tconklin AT stanford DOT edu)
Office Hours: (*see note below) Mondays
12:20-2:20PM
Gates 167
or by appointment

CS101: Introduction to Computing Principles teaches the essential ideas of computers to an audience with no prior computer experience. CS101 is geared to use live code exercises in class -- bringing the ideas to life, but without bogging down too much in computer idiosyncrasies. We recommend that you bring a laptop or tablet to lecture each day to follow along with the work. Some lectures may end early to give time to work on that week's homework.

CS Majors and students who have already completed CS106B are not allowed to take CS101 - the concepts are too similar to those covered in other CS courses. It's fine to take CS101, fall in love with CS, and then become a CS major.

If you would like to learn how to code, you should take CS106A. If, instead, you're interested in learning more about how computers work or the technical concepts discussed in the news, CS101 is the class for you!

CS101 Themes

Computers are an important part of the modern world (email, DNA sequencing, cell phones, medical devices, etc.), but the jargon of computers can be intimidating. Fortunately, the inner workings of computers are surprisingly simple. You will be shocked at how little is required for you to program the computer to solve interesting problems.

In addition to understanding how computers work, we will talk about many of the topics involving computers that define our world, such as artificial intelligence, computer security, bitcoin and cryptocurrency, and the internet. We want you to have the tools to understand some of the jargon and big concepts in computer science at the level of a WIRED article, for example.

CS101 Free Online Versions

Google generously supported the initial research to create some of the materials that have gone into CS101. There's a free online version of the course with videos: Stanford Online CS101, covering 70% of what we do in a quarter. There's also a free version of the web materials available here: introcomputing.org

Course Details

Course Format

Grades

Your overall course grade will be determined as a weighted average of the following categories:
Homework 32% (4% each)
Paper 8%
Midterm 25%
Final 35%

Homeworks

We'll have weekly homeworks, eight in total. The exam problems will very much resemble the homework problems, so the point of the homeworks is giving you practice on problems so you can solve them on the exams.

Every student has two free late days to use over the course of the quarter. Each late day is a 24-hour extension, and to use a late day, just submit the homework later. You can submit a homework up to two days late to receive credit. After all the late days have been used, the homework will lose 25 percentage points per 24-hour period. In the case of serious illness, a campus-wide computer lab outage lasting a majority of the time for a given assignment, or other extenuating circumstances, email Ashley (ataylor4 AT stanford DOT edu); generally, extensions will not be granted otherwise, as that is the purpose of the late days. One or two late days may be used on any homework assignment.

Homeworks will be submitted via Canvas. Every week will include written exercises, and some weeks will include code exercises as well. Code exercises are graded on functionality (whether the code does what it's supposed to), and they should be submitted separately on Canvas.

A discussion forum on Canvas will be available each week. Please post general questions there, and email Ashley and Tyler with specific questions. Publicly posted questions should not reveal answers in any way.

Paper

You will write a short (3-4 page) paper discussing artificial intelligence in society. More information will be released during week 6, and the paper will be due Thursday, May 31, at 11:59PM. Extensions on the paper will only be given in very rare circumstances and can only be granted by contacting the instructor.

Exams

There will be one in-class midterm and one final exam. Like most classes in the school of engineering, I'll curve the class at the end of the quarter, although individual exams will not be curved. However, on an absolute scale, if the whole class does very well, I'll give better grades, and no grade will be curved down (i.e. if you get at least 90%, you're guaranteed an A-). Exams are closed note, though a reference sheet will be provided.

If an extraordinary medical or personal circumstance occurs that prevents you from taking the midterm or final exam to the best of your ability, please contact the instructor as soon as possible.

Students with OAE accommodations must contact Tyler (tconklin AT stanford DOT edu) by the end of week 3 to receive those accommodations for the exams.

Honor Code

In the spirit of collegial and cooperative learning, you are free to discuss ideas and approaches with other students, and then implement the solution yourself. The key is this: you should type and debug all the code you submit. In particular, it is not appropriate to email or share code phrases to be pasted in. The Computer Science department produces many honor code cases at Stanford. This is not because CS is a magnet for cheating; it's just that online submissions provide a large body of evidence, and computer science has tools which do an extremely good job of finding cheating.

For the written homeworks, you should cite any sources you use. Although you may talk to a friend about these questions, your answers should reflect your own thoughts in your own words, and you should cite any study partners. Note that citations do not excuse using another's work in an inappropriate way.

Please read our honor code document as well as the university-wide honor code policy thoroughly.

Javascript Computer Language

We'll be using a variant of the Javascript computer language for our coding exercises. We will definitely not be learning or using the whole language. Instead, we'll explore coding in a few well carved-out areas, doing examples and exercises within those areas. CS101 provides substantial "foundation" code that your code will be built on, allowing us to focus on key ideas without writing entire computer programs.

Acknowledgments

Thanks to Nick Parlante for developing this course as CS101 and to Marty Stepp for his guidance and help. Some materials were inspired by Berkeley's Beauty and Joy of Computer Programming as well (available here), as well as from Zsuzsanna Szalayné Tahy's paper.