Syllabus


Hi there 👋 and welcome to CS106A!

CS106A introduces code and computer programming for people who have not programmed before. Code and programming are central to so much in modern life, yet code can appear to be impossibly opaque. By working gradually and with its army of section leaders, CS106A takes students into the world code, building things they could not have imagined.

Staff

Instructor: Cynthia Bailey Lee, cbl@stanford.edu

SL: Selaine Nicole Rodriguez, selaine@stanford.edu

Topics

For SSEA, we will be previewing the first 3-4 weeks of the CS106A course, staying fairly faithful to what the course looks like in the regular school year. The full CS106A course 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 cover all of Python's features. CS106A teaches the important core features, and you will be able to solve real programming problems with just this course.

Other Courses: CS105 CS106A/B CS193Q CME193

CS106A is the first course in programming and computer science, for people who with zero experience. CS106B is the second course, teaching more advanced programming and computer science for people who know basic programming. CS105 is a more lightweight introduction to CS ideas, but without as much coding as CS106A. CS193q is a 1 unit seminar that teaches Python very very quickly - geared for people who already know how to program but do not know Python.

CME193 is a course in applied Python for scientists and engineers. It is a course one could take after CS106A.

Python Resources

In lecture we'll have links to some online code exercises on an "experimental server" set up by Nick Parlante, another CS106A instructor. Other times we will distribute a .zip file with that day's code examples.

We'll use web resources as our Python reference as we go, and Nick Parlante maintains a free Python Guide with more detail on Python topics (linked off the course page too).

There is no required textbook, and a book is not needed for this course. However, if a student insisted on a recommendation, "Introducing Python" by Lubanovic is a good introductory book.

Python 3 / PyCharm

We will use Python version 3. You will install Python and PyCharm (the "integrated development environment, IDE) as part os assignment 0. At the start we'll use the experimental server which works without installing anything. Later we will do larger exercises where you will use Python 3 and PyCharm installed on your computer. We'll have detailed instructions for that when we get there.

Lab In Lecture

We will experiment integrating little exercises within lecture, so expect to do some exercises live as we go. Education research shows that doing a little activity with what you just saw helps a lot with learning. (see Carl Wieman, Stanford School of Education)

Homework

The full CS106A has assignments weekly programming assignments. During SSEA, we will complete parts of assignments similar to those used in the school year.

Honor Code

Although there are no grades during SSEA, we strive to not interfere with your ability to properly earn credit in the full CS106A if/when you take it. We attempt to offer homework and other practice that will not be the same as the school year ones, in hopes that you won't run into any trouble with possible plagiarism by turning in the same work in real CS106A. However, you should be aware of the course's policies on plagiarism, the Honor Code, and re-submitting work you did previously, in case an issue arises later. That policy is explained here:

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. You should not be looking at another student's homework code.

For discussion or tying out ideas, the many lecture examples work well and of course it's fine for everyone to look at and experiment with that code.

Web search: it's fine if you search the web to find the right 2 line phrase to solve something, like "sort strings" - programmers do that sort of search all the time, and finding and using short phrases like that is fine. Do not, however, search for a whole homework function and paste in what you find. We want you to write that code.

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 described 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 situation make a cheater of someone. If you feel you are in that position, contact Chris and I promise we'll work something out where you can pass this class vs. making a huge mistake.

Topics and Weekly Schedule

See the course calendar for up-to-date details.