Programming Methodology


Stanford School of Engineering


Introduction to the engineering of computer applications emphasizing modern software engineering principles: program design, decomposition, encapsulation, abstraction, and testing. Emphasis is on good programming style and the built-in facilities of respective languages.

CS106A introduces computer programming for people who have not programmed before. To learn programming, you need to do a lot of guided programming, and have a lot of help at hand-that's CS106A. Recently, CS106A has switched to using the Python programming language and lab-style coding in lecture. But at its heart, it is still CS106A - introduce the world of computers to a broad audience.


No prior programming experience required.

Topics include

This course will cover all the important topics of basic programming in Python: types, numbers, strings, functions, linear collections, dictionaries, logic, decomposition, good programming style, whole-program structure, text, file-processing, debugging, and performance. This course will also touch on more advanced topics you might want in the future, including lambdas, comprehensions, modules, and Jupyter notebooks. Python is a huge language with many advanced features, and CS106A does not do the whole thing. CS106A teaches the important core features, and you will be able to solve real programming problems with just this course.


Python 3/ PyCharm

This course will use Python version 3. At first you will just use so you don't need to install anything. Later we will do larger exercises where you will need a computer with Python 3 installed on it. You will also need to install the free PyCharm development environment. Detailed instructions will be provided.

It is best to have your laptop during the lecture. This course will experiment integrating little exercises within lecture. Education research shows that doing a little activity with what you just saw helps a lot with learning.

Course Availability

The course schedule is displayed for planning purposes – courses can be modified, changed, or cancelled. Course availability will be considered finalized on the first day of open enrollment. For quarterly enrollment dates, please refer to our graduate education section.

Pre-register Now

Dates:March 29 - June 4, 2021
Units: 3.00-5.00
Instructors: Nick Parlante
Delivery Option:
For Credit $4,056.00-$6,760.00
Notes: Pre-registration Dates: February 1, 2021 at 9:00am to March 12, 2021 at 5:00pm

Computer Science Department Requirement
Students taking graduate courses in Computer Science must enroll for the maximum number of units and maintain a B or better in each course in order to continue taking courses under the Non Degree Option.

Pre-registration for this course will secure your enrollment request and ensure timely processing of your application for potential course approval. Please note: course enrollment will be confirmed after March 19, 2021; after completing your pre-registration, no further action is required on your part.


This course may not currently be available to learners in some states and territories.