Welcome to CS106A
- Instructor - Nick Parlante
CS senior lecturer, previously at Google
- Head TA - Ngoc Nguyen
- Course page for everything: cs106a.stanford.edu
- CS106A teaches basic coding and problem solving
- No prior experience required
What Is The Plan for CS106A?
- Start the very beginning
- We are 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 .. you will be amazed at what you can do
- Partly because computers are powerful
- Partly because coding is easier than you think
CS106A in 1 Slide
Why Take CS106A?
- 1. Understand What Computers Can Do
The nature of computers is code
Understand what computers can and cannot do
Not intimidated, pushed around, like computers are some unkownable 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
CS106AX is an "accelerated" variant of CS106A taught this quarter for people who already have some programming experience and want an extra-challenging experience. It's more advanced and moves more quickly.
CS106AX is designed for those with prior programming experience who want to review introductory material while challenging themselves with more elaborate programming assignments. Because those taking CS106AX have prior experience, we're able to cover the basics more quickly, understand how larger programs are constructed, and understand why the implementation of web applications often relies on an ability to code in multiple languages.
With that in mind, CS106AX teaches two programming languages: JavaScript and Python. JavaScript programs are typically executed within the web browser to foster interactivity and substantially improve user experience, and Python is often used to implement the server-synthesized HTML pages and deliver them to the browser.
CS106AX is intentionally offered at the same time as CS106A, so students can choose which of the two is the better fit without having to worry about how their choice will impact their class schedule.
CS193q is a 1 unit seminar that teaches Python very quickly, just mentioning the various features. Geared for people who already know how to program and want to see how programming constructs work in Python.
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.
CME193 is a 1-unit course in applied Python for scientists and engineers. It is a course one could take after CS106A.
Foreshadowing - Story Arc
The story arc of many computer challenges
Step 1 - Broken Code, Broken Computer
- Click the Run button .. the code doesn't work
- The code syntax is kind of weird and fragile
- e.g. computer wants
MM-DD-YYYY
, but we have 9-27-2024
- Computers are powerful but see also kind of mechanical and stupid
- The computer needs each part of the date in just the right spot or it breaks
- The computer lacks insight to just see what's going on the way a person can
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
- This is the bad news
Step-2 - Weird But Not Difficult
- The good news
09-27-2024
- weird looking, but not difficult
- If we can work in the computer's language, we gain its power
- We do not need to be intimidated by the computer - it's the one with limitations
- The syntax constraints can be weird, but they are not difficult
- Weird but not difficult = CS106A week 1
Course Details
We will go through the main course details quickly here, then we'll start coding. Please read the syllabus for the spelled out details.
Everything on Course Page cs106a.stanford.edu
- cs106a.stanford.edu - everything is here
e.g. office hours
- Ngoc Nguyen - 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
- Video will be available of every lecture within a few hours
- So it is possible to take the class if you cannot make lecture
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
"Experimental Server" - Nick's research project
- "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 starting week 2
- 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 begin Thu, not first come first serve
No A+ Grades
- We may not give any A+ course grades
- Had some inappropriate students in the past
- This course is for learning programming and problem solving
Late Days
- Theory:
We will give you a little more time to get it right
Within limits!
- Say homework is due Wed 11:55pm
- 1% on time bonus
- 48 hour grace period (so .. Fri 11:55)
- Then 15% off per day
- Ask the TA for extra time in exceptional circumstances
Email before lecture time is best
- Can get partial credit for partial solution
- Advice: shoot for the Wed due date, slip if needed after that
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 Sun of week 2
See "Getting Help" and "Lair" links on the course page
- If you are stuck for 2 hours on something ..
Better to get help, get unstuck
Office Hours - Nick and Ngoc
- Nick and Ngoc - right after class
Just bring your laptop down and ask
- Then we have hours most days, starting Wed
- Hours will be listed on course page
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. Pasting in or copying code = not allowed
- 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 typically do 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
CS106A Important True/False Disclosure
Q. You say everyone can do this class. True/False - CS106A is an easy course.
False. It's doable, but "easy" is not the word that springs to mind.