CS106A Syllabus

CS106A introduces computer programming for people who have not programmed before. To learn programming, you need to do a lot of guided programming, and have a lot of help at hand - that's CS106A! Recently, CS106A has switched to using the Python programming language and lab-style coding in lecture. But at it's heart it's still CS106A - introduce the world of computers to a broad audience.

Key course facts...

Nick Parlante, nick.parlante@cs.stanford.edu, Gates 189
I'll be available at the end of class each day, a great time to ask questions. Nick's office hours are MWF 3:00-4:00 or email to set up an appointment.

Head TA Brahm Capoor, brahm@stanford.edu, Gates B02

Topics

We will cover all the important topics of basic programming in Python: types, numbers, strings, functions, linear collections, dictionaries, logic, decomposition, good programming style, whole-program structure, text, file-processing, debugging, and performance. We'll also touch on more advanced topics you might want in the future, including lambdas, comprehensions, modules, and Jupyter notebooks.

Python is a huge language with many advanced features, and CS106A does not do the whole thing. CS106A teaches the important core features, and you will be able to solve real programming problems with just this course.

Ways and Units

CS106A satisfies the university WAYS-FR requirement if taken for a letter grade. Undergraduates should sign up for 5 units. Graduate students have the option of taking it for 3-5 units, but the workload is unchanged.

Section

There will be a weekly section, signups begin Thu 5pm week 1. The signup link will be on the course page. You will have your own section leader for the quarter who will lead section and grade your homeworks.

Resources

In lecture we'll have links to some online code exercises on parlante.org.

We'll also web pages of Python language reference, and there is no required textbook.

Python 3 / PyCharm

We will use Python version 3. At first you will just use parlante.org so you don't need to install anything. Later we will do larger exercises where you will need a computer with Python 3 installed on it. You will also need to install the free PyCharm development environment. We'll have detailed instructions for that when we get there.

Lab In Lecture

It's best to bring a laptop to lecture. We will experiment integrating little exercises within lecture. Education research shows that doing a little activity with what you just saw helps a lot with learning. (see Carl Wieman, Stanford school of ed.)

Homework

We will have weekly programming assignments. Usually homework will go out Thu and be due the following Tue night.

Tresidder LaIR

Tons of programming help is available at the Tresidder LaIR, which is on some tables 150 feet downhill from the Tresidder Starbucks. LaIR hours are Sun, Mon, Tue, Wed, Thu nights (this fits well with HW due Tue night, with 2 days of grace period).

Exams

There will be a midterm and a final. The exams will look a lot like the homework problems, so an excellent first step is to feel like you understand and could reproduce your homework solution code. Everyone must attend the exams.

Grading

Homework 35%

Section 5%

Exams 60% (Final is 3x the midterm)

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 ok to share or paste in someone else's code or get code from a previous quarter. It is not ok to look at someone else's code and type it in as your own.

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 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 clearly descried in this way.

As mentioned above, CS106A exams will very much resemble the homework problems. So that's an additional reason you need to author and understand your own code.

On a related note, when you are done with a homework - please don't post your code on the internet! That causes problems for us and for people trying to learn the material later.

Philosophy and the Honor Code

It's not that people can be divided into cheaters and non-cheaters in some pre-ordained way, though that is an easy way to think about life. It's more that the stress and bad decision making of a particular moment make a cheater of someone. If you feel you are in that position, contact Nick or Brahm and we promise we'll work something out where you can pass this class vs. making a huge mistake.

Lateness

1. Worked turned in by the due date will get a 5% on-time bonus. The 5% is small enough that will be unlikely to change anyone's grade, it's just a token reward for people who start the work early enough to finish on time. (60% this happens)

2. After the due date, each assignment will have a full-credit "grace period", 48 hours unless documented otherwise on the assignment. Even work which does not function perfectly can get a lot more points than zero, so you should turn in what you have. (35% of the time, this happens)

3. Work turned in later than 48 hours can get some credit, but loses about 15% per day beyond the grace period. If you turn something in very late, please contact your section leader so they know it's there to grade. With the 15% penalty going, it's probably better to turn in what you could get working and move on to the next assignment. We have a lot of assignments. And of course contact the head TA (Brahm) to arrange extra time for extraordinary circumstances.

Topics and Weekly Schedule

Below is a draft topic plan, although the topics are still shifting around a bit. There is plenty of time in 10 weeks to cover all the important Python topics we need. The exam dates are fixed and you must attend the exams to pass the class.