Skip navigation

Site Map | College of Engineering | UC Davis | MyUCDavis

ECS 30 PROGRAMMING AND PROBLEM SOLVING (4 units)

Format:
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

GE3
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).

Outcomes

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

 

Back to Course Descriptions