ECS 10 Introduction to Programming (4 units)

Lecture: 3 hours
Discussion: 1 hour

Catalog Description:
A hands-on introduction to computation, through programming and problem solving

Prerequisite: Two years of high school algebra

Credit restrictions/cross listings: Two units of credit for students who have taken course 12 or Engineering 6. Not open to students who have completed course 30.

N. Amenta The class should teach students to write programs in the Python programming language, including the features of Python described below. After completing the class, students should be well-prepared for course 30 and for independent programming projects.

Summary of course contents

  1. Introduction: overview of computer organization, steps in creating a computer program
  2. Programming in Python
    1. Simple programs: variables, assignment statements, arithmetic expressions, input and output statements
    2. Control flow statements: if statements, while statements, for statements
    3. Functions: declaration and calls, parameters, scope of variables
    4. Data structures: lists, strings, dictionaries, lists of objects
    5. Text files: reading and writing
  3. Algorithms: at least one algorithm is presented in detail and introduces students to related topics such as scalability
  4. Applications: data and programs illustrate the use of computing in the workplace and in academic research. Additional programming topics such as user interfaces, database access, Web programming, graphing, or games and computer graphics may be covered
  5. Introduction to software engineering
    1. Program development: teaches students to develop programs systematically, one step at a time, and to divide programs into several functions
    2. How to use a Python debugging tool

Object-oriented programming is introduced only in so far as it is necessary to use object-oriented applications modules.
Five or more programming assignments. Programs require students to apply the concepts covered in the lecture. For example, the following list describes the key topics that might be covered in a typical sequence of assignments: assignment statements, input/output statements; if statements and loops; functions and nested loops; one-dimensional arrays of numbers; functions with array parameters; two-dimensional arrays and text files; and a database (an array of objects or a set of parallel arrays), strings, and text files.

Illustrative reading

  • M. Dawson, Python Programming for the Absolute Beginner, Thomson Course Technology PTR, Second Edition, 2005
  • J. M. Zelle, Python Programming: An Introduction to Computer Science, Franklin Beedle & Associates, Book & CD-Rom Edition, 2003
  • On-line Python textbooks (available for free download): A Byte of Python (by C. H. Swaroop); Non-Programmers Tutorial For Python (by Josh Cogliati); How to Think Like a Computer Scientist (by Jeffrey Elkner, Allen B. Downey, and Chris Meyers)
  • Web Resources:
    Main Python web site:
    Python tutorial:

Online programming and debugging environment:
Online exercises:

Science & Engineering
Scientific Literacy

ABET Category Content:
Engineering Science: 0 unit
Engineering Design: 0 unit

Overlap This course overlaps in the introduction of basic programming concepts with ECS 12, ECS 15, ECS 30, and Engineering 6. It covers Python programming in much greater depth than ECS 15. ECS 10 does not cover topics such as memory management, pointers, and arrays, which are covered in the context of C programming in ECS 30. Engineering 6 covers programming in MatLab, which is a specialized language for mathematical data analysis, and ECS 12 covers programming in PROCESSNG, which is a specialized language for media programming This course covers general-purpose programming and is appropriate for all majors.

Instructors N. Amenta, M. Bishop, D. Gusfield, and N. Max

2012.10.28 (N. Amenta): Expanded and clarified the summary of course contents and the statement of overlap. Changed the minimum number of programming assignments from six to five. Added an online text. COCI Approval (2010.12.1). Prepared by N. Amenta (2007.02).