Welcome to CS106A
- Instructor - Nick Parlante
CS senior lecturer, previously at Google
- Head TA - Elyse Cornwall
- Course page for everything: cs106a.stanford.edu
- CS106A teaches basic coding and problem solving
- No prior experience required
How Does This Class Work?
- Start the very beginning
- Careful to go step by step, little exercises every day
- Like swimming, you can't just read about it
- Learn by doing
"reps" - Nick's favorite word
Technology to practice ideas right away
- In just a couple weeks .. amazed at what you can do
- Partly because computers are powerful
- Partly because coding is easier than you think
Why Take CS106A?
- 1. Understand What Computers Can Do
The nature of computers is code
Understand what computers can and cannot do
Not intimidated like computers are some dark magic
- 2. Solve Real Code Problems
Python is powerful
In 10 weeks, you'll learn enough to solve real problems
Handy if you take CS106A early enough to use it
- 3. Hidden Agenda
You might find you like it
Take CS106B
We have a whole department of this stuff!
Other CS Courses
(pasted from syllabus)
CS106A is the main, 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 while still satisfying the university requirement.
Foreshadowing
The story arc or a typical CS106A project...
Step-1 - Code is Broken
Theme: "broken" is the natural state of code
- Click the Run button .. the code doesn't work
- Angry Emoji ðŸ˜
- The code syntax is kind of weird
- The error messages are unhelpful
- e.g.
MMDDYYY
- Not a natural format for a person
- OTOH not especially difficult
- Computer systems can be weird and seemingly fragile
You see this trying to enter data into web forms
Like you type a comma in the wrong place and everything breaks and you have to type in everything again
Aside: Why is syntax inflexible?
- Computers are powerful but also mechanical and kind of stupid
- e.g.
MMDDYYY
- The computer needs each part of the date it just the right spot or it breaks
- The computer lacks insight to just see what's going on the way a person can
Step-2 - And Then it's Going To Work
- The syntax is weird, but it is not difficult
- Weird but not difficult = CS106A week 1
- We will show you how A connects to B, B connects to C
- We will show you how to fix some common problems
- You can fix one problem after another for an hour
- And then you click the Run button and it all works
Very satisfying!
Keeps us going in CS
- Perhaps the more broken it was, the more satisfying when it works?
Iffy incentives there!
Course Details
We will go through the main course details quickly here, then we'll start coding. Please see the syllabus for more information.
Everything on Course Page cs106a.stanford.edu
- cs106a.stanford.edu - everything is here
e.g. office hours
- Elyse Cornwall - our super head TA
Email her if you need a problem solved, extension, OAE
Email before classtime for quick response
- Python Guide free reference Nick is writing
link on course page
Videos
- Lectures this quarter are not taped
- BUT lectures from last quarter are available and will be 90% similar
- You can use the old videos, but check the written notes for this quarter's details
- That said, we try to run a dynamic lecture and hope you can attend in person
Most of your life you will not be on a campus, but right now you are!
Python Language
- Using the computer language Python3
- A great language for getting things done easily
- Very popular for data, all sorts of things
Education Theory - Learn By Doing
- Education research, Carl Wieman (Stanford)
Do a little activity with what you just saw
- Lab/Exercises within lecture - reinforce
We'll use live-coding technology in lecture
- "Reps" - Nick's Favorite Word
Learn by working a few examples
Tech makes it easy to have many examples ready
Lecture Notes and Exercises
- I'll provide notes like this each day
- Notes include live code examples and exercises
There is always a Show Solution button on these
- Taking your own notes - what works best for you
Research says that taking notes helps you learn
And/or typing in the code following along with lecture
Lecture Goes Pretty Fast - Lecture Examples
- After lecture, you should, say, 60% understand the ideas
- You can review the notes / exercises to solidify your understanding
See it solved in lecture .. can you solve it yourself?
Perhaps done right after class
Perhaps done when the homework comes out on these topics
- At first when solving an exercise, glancing at the lecture example
- Ultimately, practicing enough to solve without glancing at anything
Weekly Section
- Small group section
- Weekly review of pre-homework problems
- Section leader will also grade all your homeworks
- Section times on Wed - Thu - Fri
- Watch Wed lecture first, as section builds on this
- Signups Thu week-1
Typical Week Schedule
- Give out homework (HW) on Thu
- Lecture on that topic through Fri
- Section, say, Thu on HW topic
- HW is due Tue or Wed following week
- We are careful to give you the weekend
- Advice: Start the HW Sun eve, see how it looks
Late Days
- Theory:
We will give you a little more time to get it right
Within limits!
- Say homework is due Wed 11:55pm
- 2% on time bonus
- 48 hour grace period (so .. Fri 11:55)
- Then 15% off per day
- Ask Elyse for extra time in exceptional circumstances
Email before classtime is best
- Can get partial credit for partial solution
- Advice: shoot for the Wed deadline
Office Hours - Lair
- CS106A provides a lot of help - The Lair
- The Lair has a huge team of section leaders, providing help 7:00-11:00 Sun-Thu eve.
Starts Mon of Week-2 (MLK holiday)
See "Getting Help" on course page
Office Hours - Nick and Elyse
- Nick and Elyse - right after class
Just bring your laptop down and ask
- Then we have hours most days - see course page
- Nick: Mon 3:00-4:00 Durand
Ed Forum
- Ed is a class forum for students to ask and students and staff to answer questions
- Don't post a copy of your code into Ed
- If you have a weird issue, you can see if someone has a solution on Ed
- If you need someone go over your code, use the office hours and the Lair
Honor Code
- See long form in syllabus
- 1. You can talk to other students, share ideas, plans, insights
- 2. You need to write and debug your own code
- 3. Avoid looking at another student's code
- 4. Please - don't put your solutions on the Internet
- Honor Code problems stem from a moment of weakness
- If you are in a real fix, talk to Nick to work something out, pass this class
Instead of making a big mistake
- We have automated tools for finding issues
- We may not scan for Honor Code problems until the end of the quarter
- Week 10 retractions
Nick's Theory of the 10 Week Quarter
- We're going to go quite fast at the start of the quarter
- Reduce the load at the very end
- This first material is weird but not that difficult
- Just hang in there, this will give us more time later