Today: Last lecture, your future in CS, conclusions

Final Exam

Chat After Class / Office Hours

I'm happy to talk to people after class at Bytes cafe with any sort of CS questions. I also have regular office hours Tue and Wed .. feel free to stop by and talk about anything.

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?

Computers - Now You Know

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. Most programs, even very advanced programs, are centered around those core features. If you need to use a less-common technique, you may look it up and figure out as you go. That's how most programmers proceed - the core they know well, the other stuff they look up as they go.


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


Fact: 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 mony on entitled nerds in the face of a desperate programmer shortage.

I suppose the other lesson is that whatever blessings you have in life, there is a risk you get used to them very quickly, and then feel foolishly entitled to them.


AI and Coding

Fact: today an AI can write chunks of code that are a good start, especially for common code patterns, and then the AI code needs some fixing. No doubt that will be a productive coding strategy in the future, a sort of AI+human team. Indeed, such AI+human patterns maybe describes how AI works in many endeavors.

I also appreciate that the basic loop/logic knowledge taught in CS106A are useful for the human in this AI+human strategy.

AI Eliminate Programmer Jobs?

Here is my guess about AI and programmers.

I think the AI makes programmers more productive, but does not remove the need for programmers.

Partly because this is, say, a 2x increase in productivity, not the AI eliminating the need for the programmer to make the thing work. Partly because the unmet demand for programmers is so large, that even with 2x productivity boost, you still need a lot of programmers.

Counter story - suppose the AI can just write the code with very little need for a human to contribute. Then that really would put a dent in the demand for programmers. I don't see that happening, but this is all just speculations about the future.

"It is difficult to make predictions, especially about the future." - Yogi Berra


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;                 // must declare var
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

If you want to take CS106B, we generally recommend taking it within 6 months. It happens topics and workload in CS106B go up or down somewhat depending on who's teaching it, so you have to think a little bit which quarter is right for you. Any version of CS106B is fine for going on in the major.

Think About Section Leading

Map of CS Major

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

Human Computer Interaction (HCI) CS147

Graphics CS148

Applied Machine Learning CS129


Human Computer Interaction - HCI Design

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.


Big Data - Machine Learning

Ghost Example

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.

alt: bike attached to back of car


Thanks To Elyse and the Section Leaders

Thanks to Elyse and the section leaders! The only way this course can work is with their prodigious and generous efforts. Juliette 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.

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!