< CS101

CS101 Syllabus

CS101, Introduction to Computing Principles teaches the essential ideas computers to an audience with no prior computer experience. CS101 is geared to use live code exercises most days in class -- bringing the ideas to life, but without bogging down too much in computer idiosyncrasies. It is recommended to bring a laptop or tablet to lecture each day to follow along with the work. Also, there will also be time at the end of lecture to finish that week's homework exercises in class. CS101 teaches the core ideas of computer science, but is not as demanding as a full introductory-programming course like CS106A.

What "essential ideas of computer science" means we will revisit many times. For now we'll say that, despite appearances, computers have a few simple, deep qualities which govern how they work, and understanding those qualities is useful for anyone.

CS Majors are not allowed to take CS101 - it's too basic. It's fine to take CS101, fall in love with CS, and then become a CS major.

Course in a nutshell: Taking CS101 you will learn a lot about code, bugs, and how computers work, and it's less work than CS106A.

CS101 Themes

Computers are an important part of the modern world (email, DNA sequencing, cell phones, ...), 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 (this is basically the theme of our homeworks).

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'a also a free version of the web materials available here: introcomputing.org

Course Details

Course Format


We'll have regular homeworks (homeworks = 35% of grade). The homeworks are not that hard, with an average score around 95%. 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.


There will be 1 in-class midterm and 1 final exam (exams = 65% of grade). Like most classes in the school of engineering, I'll curve the exams instead of a 90%=A scheme. However, on an absolute scale, if the whole class does very well, I'll give better grades. You must pass the final exam to pass the class. If someone does terrible on the midterm but studies and does much better on the final, I will count their midterm less.

Late Days

Every student gets 3 "late days" to use to extend the deadline of an assignment. No permission is required to use these .. just turn the work in late. These are to account the various problems and miscues real life, allowing you a little extra time to turn in high quality work. On the other hand, 3 days is not much, so plan to hit the deadlines and save the late days for real emergencies. We record how late each assignment is turned in and do an accounting at the end of the quarter.

The goal of the late-day system is treating all the students the same. After the late days are used up, work loses a half letter grade per day. If you have an exceptional circumstance, contact Nick to see about getting some sort of accommodation.

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: all the code you submit you should type in and get working yourself. In particular, it is not appropriate to email or share multi-line 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.

Each homework submission has a "README" section where you can write notes for the grader. If you think a bit of collaboration may have crossed the line, mention it in your README notes for that homework. You can never get in honor code trouble for collaboration mentioned in this way.

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.

Firefox and other Browsers

The CS101 infrastructure that supports our work within the browser is pretty advanced, so it only works with the most recent versions of Firefox, Chrome and Safari. Chrome and Safari will work, but Firefox provides much better error messages which can be a big help, so Firefox is recommended: get firefox. Microsoft Internet browsers are a little iffy but might work.

Topics and Weekly Schedule

Below is an weekly topic plan. Some weeks focus on coding, and other weeks have topics lectures such as "networking" or "bits and bytes". Often there will be a homework due Monday covering the topics of the previous week.