Programming Methodology

Programming Methodology


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.

Course Archived

Winter 2021-22
Stanford School of Engineering