Today: Last lecture, your future in CS, conclusions

Thanks To Ngoc and the Section Leaders

Thanks to Ngoc and the section leaders! The only way this course can work is with their prodigious and generous efforts. Ngoc and the section leaders are a tribe selected for technical skill and generosity - a fantastic group of people and we are lucky to have them.

Final Exam

Python Guide

I'm gradually working on and expanding the Python Guide, aiming to keep it as a free resource on the web. If you want to find it in the future, it's linked from my home page and the CS106A page.


What is the Role of CS106A?

CS106A First Day Claims vs. Today

You will never not know this nature of the computer. Even if you never write another line of code.

Learned All The Programming Techniques?

Sadly, no.

Learned the Important Core

Here is the deal: Python and the space of all programming techniques is very large. A bigger space than you might think. The "Programming Python" book is over 1600 pages long. Fortunately, many of these features are for rare cases, you do not need to know them to get things done.

You have learned the most important 80% core: loops, lists, strings, functions, tests, files. There's a few more important techniques in CS106B, in particular, recursion.

Building on these core concepts, you know enough to read about (or work with the AI), to solve more difficult problems.


Women in CS Trend - 1994 - 2020

Slide from Mehran Sahami. The blue bars is number of students. The red line is the percentage of women. Both are going up which is great, and it looks like a gradual broadening of the field.


alt: increasing percentage of women in CS


Programmer Shortage vs. AI

I talk about programmer shortage first, and then AI coming on the scene.

Long Term Pattern - Programmer Shortage

Why is there a Programmer Shortage?

Nick Python T-Shirt Story

I was on a bicycle, wearing ratty clothes and a "Python" t-shirt stopped for a red light. A person walking in the cross-walk in front of me, stopped, turned to me, and asked if I was looking for work.

Not to disillusion you about graduating from Stanford, but that is not how hiring is normally done.

Like how desperate for programmers was that person? That is what an extreme programmer shortage looks like!

Free Breakfast Story

When I worked at Google, there was a nice free breakfast available at the office. The free breakfast would end at 10am. The funny part is that some people would complain .. the free breakfast cuts off too early, how am I supposed to get here by 10am?

What does this story tell you? That google cares about the morning nutrition of its team? Or that google is spending money on entitled nerds in the face of a desperate programmer shortage.

I suppose the other lesson is that it is human nature to grow accustomed to whatever blessings one has in life, and then risk seeing them as entitlements.


Aside: AI Land Grab

Why is there so much hype and spending by companies to get into AI? I think there is a rush-to-occupy-new-land mentality, as by getting there first, they can dominate the space for the future. This suggests spending huge sums to be first. It is a valuable new space, but I'm skeptical that these vast sums will pay off.

AI vs. Programming Jobs
Much Code is Formulaic

Nobody knows how this will play out. Last year, the story int he CS department was that graduates got jobs, but they had to work harder to get jobs than in past years.

Much computer code is formulaic, where AI can perform very well. We should not be surprised that writing code is an area where AI can do a lot.

Parable 1 - Computing Square Roots

When I was in elementary school, we learned how to compute square roots manually. Calculators with square-root keys were not common. Now, nobody learns to do this, as the calculator solves it so well.

Some tasks are so well solved by a computer, that the skill can disappear from people. We know the mathematical theory, but we wholly give the actual solving over to the machine. We do not nostalgically hold onto computing the square roos manually. We humans can put our time into something else.

Parable 2 - Stuck AI Program

There is a story going around computing circles of the programmer who uses AI to produce a program. But then when asked to fix a bug or add a feature, they are unable to do it. A computer program that you cannot fix or improve is not very valuable.

Here we would say the human has given over too much to the AI, and gotten kind of stuck.

Using an AI, it's easy to tell yourself: I understand how this works, I'm just being time efficient. The risk is that the AI kind of fools you into thinking you have a handle on things but in reality you've made the second parable.

Synthesis - Hybrid Work

Doubtlessly, this will work out with a hybrid work pattern, where the programmer delegates some work to the AI, saving lots of time (square-root), but keeping their human understanding in the loop enough to guide and fix things where the AI falls short.

As a shorthand I think of it this way: say there used to be a team of 8 people. Working with AI .. how big should the team be? Perhaps it can be as productive with 4? It's certainly not just 1, and it's certainly not 8.

AI vs. Programmer Jobs

I expect AI to allow projects to finish with fewer people. We might also now solve problems that were being ignored before.

For hybrid work, I see CS106A as setting out the basics you need to know - loops, strings, dicts, files .. you need a basic understanding of all that to support hybrid work with the AU.


Background: Many Computer Languages

Python Niche - Programmer Efficient

Code Ideas We've Seen in Python

Your Second Programming Language

Here is some C++ code

// comments start with 2 slashes
int i = 0;                 // declare var + type
while (i < 100) {          // parens + braces
    i += 1;                // same as py + semicolon
    if (is_bad(i)) {       // parens + braces
        return;
    }
    i += "Hello";          // error detected
    // int/string types different,
    // so above does not work.
    // Error is flagged at edit-time:
    // earlier than python, an improvement
}

Possible Next Steps

Most Stanford students take 1 or 2 CS classes and keep with their chosen major. It's easy to imagine they use Python here and there as part of their work.

After CS106A ..

Next "CS106" CS106B

Aside: Selecting A Major

Selecting a major, it's nice if you enjoy the sort of work that is a big part of that major. CS106B plays this role a bit for CS.

How do you feel, finishing each CS106B project. There are many ways to pick a major. One angle is - you should enjoy the main topics that make up a major.

Think About Section Leading

CS Major - Code and Math Tracks

CS has programming, as you would expect. There is also a parallel CS-math track, feature integer mathematics, proofs, and reasoning with probability distributions.

  CS Major - Parallel Tracks
Programming          Math
CS106A               CS103
CS106B               CS109
CS107                CS161
CS111

Next Course FAQ

Aside: What is CS Integer Mathematics?

CS Major Tracks / Concentrations

Some Select Courses

We'll just mention a few courses you could take, build the picture that there are many different areas of CS you might explore. Many of these require CS106B as the pre-requisite.

Scientific Python CME 193

Applied Machine Learning CS129

Human Computer Interaction (HCI) CS147

Graphics CS148


Human Computer Interaction - HCI Design

Handle examples - the point here, is that the object communicates its function visually, and this connects to some low-level part of the brain, so you just know intuitively how to operate it. The best interfaces work this way, and the language of it is visual, not words.

This last one is wrong. It's a push door, but they have put a "pull" handle on it, so people keep using it the wrong way. Putting the "push" sign on their is not the right solution.

Symbolic Systems Major

A sibling to the CS major - similar intellectual domains but less focus on coding

An interdisciplinary major that uses the lenses of CS, Philosophy, Psychology and Linguistics to study systems that use symbols to represent information. In Symsys you can concentrate on AI, Neuroscience, Natural Language, Philosophical Foundations or design your own concentration.


Self-Driving Cars - Machine Learning

Needs to work for 100% of Cases

Part of getting code to work is that you need to chase down those rare, difficult cases as well.

Below is a difficult case for the self-driving logic, although all the people in the audience understands what they are seeing easily.

alt: bike attached to back of car


Where is the Magic in CS?


alt: ghost input image with foot in the way

Where is the Insight? The Power?


Where is the power in this story?

Fare Well Python Programmers!

In closing, I'll say that teaching this class is very satisfying endeavor - it's great to see the light in someone's eyes when the power we know in CS starts working for that student.

Best of luck with your future projects!