Anda di halaman 1dari 5

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 everywhere


- code, CPU, packet .. can use CS101 material every day
Computers can be irritating: jargon, crazy error
messages (apologetic)
CS101 teaches coding and essential ideas, but it less
demanding than CS106A
CS101 #1: See how computers work, strengths,
weaknesses.
CS101 #2: Understand the nature of code. Don't be
intimidated.
CS101 #3: Hidden agenda, some of you will love it and
think about taking more CS courses such as CS106A,
and CS101 is good preparation
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
Tue/Thu 1:30-2:50 in 50-52H. There's no section, we just do
everything in class.
Our main course site is at http://web.stanford.edu/class/cs101/ --
everything will be maintained there (shortcut: cs101.stanford.edu)
Nick Parlante Home Page -- nick.parlante@cs.stanford.edu

Course Format
No paper -- I'm not bringing paper copies of anything to class. See
http://web.stanford.edu/class/cs101/ for everything. Each lecture has
one or more written pages like this, linked off front page. It's very
easy to see what we did each day.
Code in page -- Often lecture will include a little code demo or example
in the page (we'll see this later today).
Scrolling -- for lecture I'll go through the pages pretty quickly to show
and talk about the main ideas. Then you can go back to page later if
needed to try the same code I did and review the explanations.
You Try It -- In lecture, I might say "now you try it", and give time for
everyone to work on the example, then we can discuss it.
Homework exercises -- The homeworks will be due soon after we do
something in lecture, e.g. Tue/Thu we do exercises, then the
homework exercises are due the following Mon. Often I'll leave extra
time for you to work on the homework exercises at the end of lecture,
so you may finish most of each week's homework in class. (Theme:
tighten up the timing between seeing a concept and doing it yourself.)
Homeworks
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.

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.

Week-#/Monday-Date
Week 1, Mon=Apr 3, starting Tue Mar 29 -- Introduction, basic code,
start digital images
Week 2, Apr 10 -- Image loops, color channels
Week 3, Apr 17 -- Image if-logic, digital bluescreen effect, take your
own bluescreen picture
Week 4, Apr 24 -- Topics: computer hardware, bits bytes, computer
software
Week 5, May 1 -- Topics: analog and digital, compression, Thu May
4th Midterm in class
Week 6, May 8 -- Topics: Networking, wi-fi, internet, the web
Week 7, May 15 -- Table data code, iteration, logic, counting
Week 8, May 22 -- Basic spreadsheets, Thu begin Computer Security
Week 9, May 29 -- Computer security, passwords, hacks, oh my.
Internet economics and privacy.
Week 10, June 5 -- Conclusions, big ideas, no class Thu
Finals -- Final Exam Fri June 9th 12:15-3:15