CS106A Programming Methodologies
Website
- Spring 2020 (latest) course website slides ✅ | assignments ✅
- Summer 2019 (with Java), course website slides ✅ | assignments ✅
- 2007 SEE-Stanford Engineering Everywhere (iTunes U, YouTube) slides ✅ | assignments ✅ | videos ✅
Overview
Prerequisite: None
Description:
CS106A is the introductory course to computer science at Stanford University. According to the decription on SEE, this course is the largest of the introductory programming courses and is one of the largest courses at Stanford. Topics focus on the introduction to the engineering of computer applications emphasizing modern software engineering principles: object-oriented design, decomposition, encapsulation, abstraction, and testing.
I got to know the course from iTunes U. It is CS106A that made me a self-learner.
The lecture video was recorded over a decade ago (in 2007) and it seems a bit old now. However, the basic concept of programming is never out of date. Personally, I learned CS106A by watching the lecture video and referring to new lecture slides (in Winter 2017), and I managed to complete assignments of Winter 2017.
It is worth noting that the latest CS106A is using Python instead of Java. Both languages are good and you can choose whichever you would like.
After finishing CS106A, you can choose either CS106B or CS106X. According to CS106B's 18 winter slide, their relationship is as follows:
- CS106A: Programming Methodology (Java) Prereq: none
- first course in programming, software development, coding style
- text and graphics; basic data and algorithms; problem solving
- CS106B: Programming Abstractions (C++) Prereq: 106A
- big data; complex data structures
- algorithm analysis and algorithmic techniques such as recursion
- programming style and software development practices
- CS106X: Programming Abstractions (Accelerated) (C++)
- similar content to CS106B, but faster and more complex
- expects significant coding experience, ability to learn quickly
Personally, I chose CS106X because I think it's more challenging. You can have a glance at these two courses here at LearnCS(CS106B) and it's up to you to choose either course. By the way, CS106B's 18 winter lecture video is available on YouTube so maybe it's a better choice, maybe.
In fact, there is another course in CS106 family: CS106L, which is purely about C++. It is a relatively short course, and you can take it along with CS106B/CS106X if you'd like.
Schedule (2019 Winter)
- Welcome to CS106A! slide code
- Control Flow slide code
- Decomposition slide code
- Intro to Java slide code
- Control Flow Revisited slide code
- Graphics + Loops slide code
- Methods Revisited slide code
- Tracing Programs slide code
- Animation slide code
- Events slide code
- Memory slide
- Text slide code
- Files slide code
- Arrays slide code
- ArrayLists slide code
- Matrices slide code
- HashMaps slide code
- Collections slide code
- Interactors slide code
- Variable Type Design slide code
- Classes slide
- Data Visualization slide code
- The Internet slide code
- WebApps slide code
- Life After CS106A slide code
- Overview & Final Review #1 slide
- Final Review #2 slide
Assignment (SEE)
- Karel handout starter code
- Simple Java handout starter code
- Breakout handout starter code
- Hangman handout starter code
- Yahtzee handout starter code
- NameSurfer handout starter code
- FacePamphlet handout starter code