Lecture: 3 hours
Discussion: 1 hour

Prerequisite: Math 16A or 21A (may be taken concurrently); prior experience with basic programming concepts (variables, loops, conditional statements) recommended

Catalog Description:
Introduction to computers and computer programming, algorithm design, and debugging. Elements of good programming style. Programming in the C language. Use of basic UNIX tools.

Summary of course contents

  1. Introduction: the design of a computer, steps in solving a problem using a computer
  2. Algorithms: general concept, development of efficient algorithms.
  3. Programming in C
    1. Scalar data types, concept of data type, standard and user-defined scalar types.
    2. Simple statements, arithmetic and boolean expressions, assignment statements, simple input and output statements.
    3. Flow of control, repetitive statements, conditional statements, unconditional branching.
    4. Data structures: single and multidimensional arrays; character strings; structs.
    5. Functions: general concept; declaration and calls; & and * operators; parameters; function call stacks; introduction to recursion.
  4. Software engineering: running, debugging, testing programs, building quality programs.

Goals: Students will: (1) develop expertise in using a high-level programming language; (2) be knowledgeable in using basic operating system tools; (3) develop good programming style; (4) develop into competent programmers with the ability to solve problems of reasonable size on a computer.

Illustrative reading
J. Hanley and E. Koffman, Problem Solving & Program Design In C, 5th edition, Pearson, 2006.

Engineering Design Statement:
Programming projects involve design, coding and debugging of open-ended problems requiring independent design of solutions to given problems. Students are graded on the basis of their design as well as the accuracy of their solutions. Lectures stress design concepts in solving programming problems. Exams include questions focusing on design concepts.

ABET Category Content:
Engineering Science: 1 unit
Engineering Design: 2 units

Science & Engineering
Quantitative Literacy

Overlap: None

Instructors: Staff

History: 2012.10.27 (P. Devanbu): Eliminated “Introduction to” in the course title; changed “the Computer” in Introduction to “the design of the Computer”.  Prior course description goes back to May 1996 (N. Matloff, P. Rogaway).


1 an ability to apply knowledge of mathematics, science, computing, and engineering
2 X an ability to design and conduct experiments, as well as to analyze and interpret data
3 an ability to design, implement, and evaluate a system, process, component, or program to meet desired needs, within realistic constraints such as economic, environmental, social, political, ethical, health and safety, manufacturability, and sustainability
4 an ability to function on multi-disciplinary teams
5 X an ability to identify, formulate, and solve computer science and engineering problems  and define the computing requirements appropriate to their solutions
6 an understanding of professional, ethical, legal, security and social issues and responsibilities
7 an ability to communicate effectively with a range of audiences
8 the broad education necessary to understand the impact of computer science and engineering solutions in a global and societal context
9 a recognition of the need for, and an ability to engage in life-long learning
10 knowledge of contemporary issues
11 X an ability to use current techniques, skills, and tools necessary for computing and engineering practice
12 an ability to apply mathematical foundations, algorithmic principles, and computer science and engineering theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices
13 an ability to apply design and development principles in the construction of software systems or computer systems of varying complexity