Learn CS

CS106A Programming Methodologies



Prerequisite: None


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)

  1. Welcome to CS106A! slide code
  2. Control Flow slide code
  3. Decomposition slide code
  4. Intro to Java slide code
  5. Control Flow Revisited slide code
  6. Graphics + Loops slide code
  7. Methods Revisited slide code
  8. Tracing Programs slide code
  9. Animation slide code
  10. Events slide code
  11. Memory slide
  12. Text slide code
  13. Files slide code
  14. Arrays slide code
  15. ArrayLists slide code
  16. Matrices slide code
  17. HashMaps slide code
  18. Collections slide code
  19. Interactors slide code
  20. Variable Type Design slide code
  21. Classes slide
  22. Data Visualization slide code
  23. The Internet slide code
  24. WebApps slide code
  25. Life After CS106A slide code
  26. Overview & Final Review #1 slide
  27. Final Review #2 slide

Assignment (SEE)

  1. Karel handout starter code
  2. Simple Java handout starter code
  3. Breakout handout starter code
  4. Hangman handout starter code
  5. Yahtzee handout starter code
  6. NameSurfer handout starter code
  7. FacePamphlet handout starter code

What's Next