CS106A - Programming Methodology

CS106A: Programming Methodology (Stanford Univ.). Instructor: Professor Mehran Sahami. This course is an introduction to the engineering of computer applications emphasizing modern software engineering principles: object-oriented design, decomposition, encapsulation, abstraction, and testing. Programming Methodology teaches the widely-used Java programming language along with good software engineering principles. Emphasis is on good programming style and the built-in facilities of the Java language. The course is explicitly designed to appeal to humanists and social scientists as well as hard-core techies. In fact, most Programming Methodology graduates end up majoring outside of the School of Engineering. (from

An Overview of the Course

Lecture 01 - An Overview of the Course, Discussing Computer Programming
Lecture 02 - Programming with Karel, Control Structures in Karel
Lecture 03 - Program-solving in Karel, Program Decomposition, The Idea of an Algorithm
Lecture 04 - The history of Computing, Introduction to Java, Classes and Objects
Lecture 05 - Variables, Values and Types, Arithmetic Expressions
Lecture 06 - Control Statements, Boolean Expressions
Lecture 07 - Loops, Function, Methods, and Returning
Lecture 08 - Information Hiding, Pseudorandom Numbers, The RandomGenerator Class
Lecture 09 - Stylistic Expectations, Engineering for Reuse, Using JavaDoc
Lecture 10 - The Package, The Collage Graphics Model
Lecture 11 - GImage Class, GCompound Class, GPolygon Class, and Event Driven Programs
Lecture 12 - Character Data, The Java String Class
Lecture 13 - String Processing, Tokenizers, Encryption
Lecture 14 - Objects and Memory, More on Parameter Passing
Lecture 15 - File Processing, Exception Handling
Lecture 16 - Array, Creating a New Array, The ++ Operator, Size of an Array, An Array as a Parameter
Lecture 17 - Arrays in Java: Multi-dimensional Arrays, An ArrayList, The Template Class, etc.
Lecture 18 - A Wrap Up of Multi-dimensional Arrays, The ArrayList Way, Debugging
Lecture 19 - Java Collections Framework, The HashMap Class, Iterators, Object-oriented Design
Lecture 20 - Introduction to Graphical User Interface (GUI), Swing Interactors, Action Listeners
Lecture 21 - Review of Interactors and Listeners, Example Programs
Lecture 22 - Overview of NameSurfer - The Next Assignment, Components and Containers, etc.
Lecture 23 - Sorting and Searching Algorithmic Analysis
Lecture 24 - Data Structures, Programming Patterns, The FlyTunes Example Program
Lecture 25 - Additional Topics: Defining a Social Network for Our Purposes, etc.
Lecture 26 - Introduction to the Standard Java Libraries, The Main Method
Lecture 27 - Life After CS106A, The CS Major, Other Possible Majors
Lecture 28 - The Graphics Contest Winners, Review for the Final

CS106A - Programming Methodology
Instructors: Professor Mehran Sahami. Handouts. Assignments. Exams. This course is an introduction to the engineering of computer applications emphasizing modern software engineering principles.