welcome to cs 106l!
TRANSCRIPT
![Page 1: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/1.jpg)
Welcome to CS 106L!Stick around!
![Page 2: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/2.jpg)
Today- Introductions
- Course Logistics
- The Pitch
- C++ Basics
![Page 3: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/3.jpg)
FrankieInto:
- Outside
- My Toyota Sienna
- Crosswords
- Programming
Language Theory
- Magic
- Brandi (Oct 7 @ frost)
![Page 4: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/4.jpg)
FrankieNot Into:
- Inside
- People who drop 106L
![Page 5: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/5.jpg)
SathyaInto:
- EE + Physics
- Computational Physics
- Violin
- Climbing
- LoL/Valo
![Page 6: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/6.jpg)
SathyaNot Into:
- Blisters
- Leetcode
![Page 7: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/7.jpg)
Today- Introductions
- Course Logistics
- The Pitch
- C++ Basics
![Page 8: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/8.jpg)
Lecture- Held Tuesdays and Thursdays 3:15-4:45pm in 380-380C (here
and now)
- We will usually try to keep lectures closer to an hour, just
wanted to give ourselves time to get into the cool stuff!
- No lecture week 10!
- You can email us to request a screen recording of a lecture
but we want you to come in person!
![Page 9: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/9.jpg)
Office Hours- Sathya: Thursday 12:30-1:30 in person, 5-6 online!
- **both online this week!
- Frankie: Wednesdays, 3:10ish-4:10ish in person, 6-7pm online!
- We want to talk to you! Come talk!
- Extra office hours when assignments are due!
- Stay tuned for more (will Frankie’s be outside?)
- Watch the website (cs106l.stanford.edu) for more info
![Page 10: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/10.jpg)
Assignments- There will be 3 very short assignments
- You only need to do 2 to pass the class
- Pairs are allowed! (Not at all necessary)
- 3 late days, more if you fill out feedback forms!
- Email us to work out any extensions
- Check out the assignment setup page ASAP!
![Page 11: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/11.jpg)
Questions?
![Page 12: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/12.jpg)
Today- Introductions
- Course Logistics
- The Pitch
- C++ Basics
![Page 13: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/13.jpg)
Why CS106L?
![Page 14: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/14.jpg)
CS106B- Focus is on concepts like
abstractions, recursion,
pointers etc.
- Bare minimum C++ in
order to use these
concepts
- Focus is on code: what
makes it good, what
powerful and elegant
code looks like
- The real deal: No Stanford
libraries, only STL
- Understand how and why
C++ was made
CS106L
![Page 15: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/15.jpg)
Why C++?
15
![Page 16: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/16.jpg)
16
C++ is still a very popular language
Tiobe Index, 2021
![Page 17: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/17.jpg)
Classes that use C++BIOE 215: Physics-Based Simulation of Biological Structure
CME 253: Introduction to CUDA (deep learning)
CS 144: Introduction to Computer Networking
CS 231N: Convolutional Neural Networks for Visual Recognition
GENE 222: Parallel Computing for Healthcare
ME 328: Medical Robotics
MUSIC 256A: Music, Computing, Design I
MUSIC 420A: Signal Processing Models in Musical Acoustics
![Page 18: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/18.jpg)
18
Companies that use C++
![Page 19: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/19.jpg)
19
Browsers written in C++
![Page 20: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/20.jpg)
20
Software written in C++
![Page 21: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/21.jpg)
Games written in C++
![Page 22: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/22.jpg)
22
The F-35 Lightning II
(Joint Strike Fighter) relies
extensively on C++
The Spirit rover was operational
for over 6 years when the
mission was only planned to run
for around 3 months
Other cool stuff written in C++
![Page 23: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/23.jpg)
Why C++?
Fast Lower-level control
![Page 24: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/24.jpg)
What is C++?
![Page 25: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/25.jpg)
Some C++ Code
#include <iostream>
int main() { std::cout << "Hello, world!" << std::endl; return 0;}
![Page 26: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/26.jpg)
Also some C++ Code
#include "stdio.h"#include "stdlib.h"
int main(int argc, char *argv) { printf("%s", "Hello, world!\n"); // ^a C function! return EXIT_SUCCESS;}
![Page 27: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/27.jpg)
Also (technically) some C++ code#include "stdio.h"#include "stdlib.h"
int main(int argc, char *argv) { asm( "sub $0x20,%rsp\n\t" // assembly code! "movabs $0x77202c6f6c6c6548,%rax\n\t" "mov %rax,(%rsp)\n\t" "movl $0x646c726f, 0x8(%rsp)\n\t" "movw $0x21, 0xc(%rsp)\n\t" "movb $0x0,0xd(%rsp)\n\t" "leaq (%rsp),%rax\n\t" "mov %rax,%rdi\n\t" "call __Z6myputsPc\n\t" "add $0x20, %rsp\n\t" ); return EXIT_SUCCESS;}
![Page 28: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/28.jpg)
C++ History: Assemblysection .textglobal _start ;must be declared for linker (ld)
_start: ;tell linker entry point
mov edx,len ;message length mov ecx,msg ;message to write mov ebx,1 ;file descriptor (stdout) mov eax,4 ;system call number (sys_write) int 0x80 ;call kernel mov eax,1 ;system call number (sys_exit) int 0x80 ;call kernel
section .datamsg db 'Hello, world!',0xa ;our dear stringlen equ $ - msg ;length of our dear string
![Page 29: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/29.jpg)
C++ History: AssemblyBenefits:
- Unbelievably simple instructions
- Extremely fast (when well-written)
- Complete control over your program
Why don’t we always use Assembly?
![Page 30: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/30.jpg)
Assembly looks like thissection .textglobal _start ;must be declared for linker (ld)
_start: ;tell linker entry point
mov edx,len ;message length mov ecx,msg ;message to write mov ebx,1 ;file descriptor (stdout) mov eax,4 ;system call number (sys_write) int 0x80 ;call kernel mov eax,1 ;system call number (sys_exit) int 0x80 ;call kernel
section .datamsg db 'Hello, world!',0xa ;our dear stringlen equ $ - msg ;length of our dear string
![Page 31: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/31.jpg)
C++ History: AssemblyDrawbacks:
- A lot of code to do simple tasks
- Very hard to understand
- Extremely unportable (hard to make work across all systems)
![Page 32: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/32.jpg)
Next in C++ History: Invention of CProblem: computers can only understand assembly!
- Idea:
- Source code can be written in a more intuitive language
- An additional program can convert it into assembly
- This additional program is called a compiler!
- Take CS143 to learn more!
![Page 33: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/33.jpg)
- T&R created C in 1972, to much praise
- C made it easy to write code that was
■ Fast
■ Simple
■ Cross-platform
- Learn to love it in CS107!
C++ History: Invention of C
Ken Thompson and Dennis
Ritchie, creators of the C language.
![Page 34: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/34.jpg)
C++ History: Invention of C- C was popular because it was simple.
- This was also its weakness:
- No objects or classes
- Difficult to write generic code
- Tedious when writing large programs
![Page 35: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/35.jpg)
- In 1983, the beginnings of C++ were created by Bjarne
Stroustrup.
- He wanted a language that was:
- Fast
- Simple to use
- Cross-platform
- Had high-level features
C++ History: Welcome to C++!
The man himself <3
![Page 36: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/36.jpg)
C++ History: Evolution of C++
C with Classes
C++
C++98
C++03
C++11
C++14
C++17
1979 1983 1998 2003 2011 2014 2017 ?
C++20
36
We are here
2020
C++23
![Page 37: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/37.jpg)
But...What is C++?
![Page 38: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/38.jpg)
Today- Introductions
- Course Logistics
- The Pitch
- C++ Basics
![Page 39: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/39.jpg)
C++: Basic Syntax + the STL
Basic syntax
- Semicolons at EOL
- Primitive types (ints,
doubles etc)
- Basic grammar rules
The STL
- Tons of general
functionality
- Built in classes like maps,
sets, vectors
- Accessed through the
namespace std::
![Page 40: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/40.jpg)
Basic syntax
- Semicolons at EOL
- Primitive types (ints,
doubles etc)
- Basic grammar rules
Standard C++: Basic Syntax + std libraryThe STL
- Tons of general functionality
- Built in classes like maps, sets, vectors
- Accessed through the namespace std::
- Extremely powerful and well-maintained
![Page 41: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/41.jpg)
CS106B- Stanford libraries abstract
away messy details of C++
- C++98*
- “Use this function we
made for you called
getInteger”
- “““style”””
*plus range-based for-loops
- All the messy details
- C++17 (sneak peak at 20)
- Learn how cin is used to
make getInteger
- Learn how to abstract
away messy details for
others
NOT: memorize c++ syntax
CS106L
![Page 42: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/42.jpg)
Design Philosophy of C++
42
![Page 43: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/43.jpg)
Design Philosophy of C++
43
- Only add features if they solve an actual problem
- Programmers should be free to choose their own style
- Compartmentalization is key
- Allow the programmer full control if they want it
- Don’t sacrifice performance except as a last resort
- Enforce safety at compile time whenever possible
![Page 44: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/44.jpg)
Design Philosophy of C++
44
- Only add features if they solve an actual problem
- Programmers should be free to choose their own style
- Compartmentalization is key
- Allow the programmer full control if they want it
- Don’t sacrifice performance except as a last resort
- Enforce safety at compile time whenever possible
![Page 45: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/45.jpg)
Design Philosophy of C++
45
- Only add features if they solve an actual problem
- Programmers should be free to choose their own style
- Compartmentalization is key
- Allow the programmer full control if they want it
- Don’t sacrifice performance except as a last resort
- Enforce safety at compile time whenever possible
![Page 46: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/46.jpg)
Design Philosophy of C++
46
- Only add features if they solve an actual problem
- Programmers should be free to choose their own style
- Compartmentalization is key
- Allow the programmer full control if they want it
- Don’t sacrifice performance except as a last resort
- Enforce safety at compile time whenever possible
![Page 47: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/47.jpg)
Design Philosophy of C++
47
- Only add features if they solve an actual problem
- Programmers should be free to choose their own style
- Compartmentalization is key
- Allow the programmer full control if they want it
- Don’t sacrifice performance except as a last resort
- Enforce safety at compile time whenever possible
![Page 48: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/48.jpg)
Design Philosophy of C++
48
- Only add features if they solve an actual problem
- Programmers should be free to choose their own style
- Compartmentalization is key
- Allow the programmer full control if they want it
- Don’t sacrifice performance except as a last resort
- Enforce safety at compile time whenever possible
![Page 49: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/49.jpg)
Design Philosophy of C++
49
- Only add features if they solve an actual problem
- Programmers should be free to choose their own style
- Compartmentalization is key
- Allow the programmer full control if they want it
- Don’t sacrifice performance except as a last resort
- Enforce safety at compile time whenever possible
![Page 50: Welcome to CS 106L!](https://reader030.vdocument.in/reader030/viewer/2022012510/6188804234d536787a698da3/html5/thumbnails/50.jpg)
Our first C++ program: HelloWorld.cpp
50