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.
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.
3.0 - 5.0
Students enrolling under the non degree option are required to take the course for 5.0 units.
Python 3/ PyCharm
This course will use Python version 3. At first you will just use parlante.org 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.
Note on Course Availability
This course is typically offered Autumn, Winter and Summer quarters.
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 certificate homepage.
No prior programming experience required.