Skip navigation

Site Map | College of Engineering | UC Davis | MyUCDavis

ECS 40 INTRODUCTION TO SOFTWARE DEVELOPMENT AND OBJECT-ORIENTED PROGRAMMING (4) I, II, III

Lecture: 3 hours

Discussion: 1 hour

Prerequisite: Course 30 or equivalent with a grade of C- or better

Grading: Letter; programming projects (35%), two midterms (20% each), final (25%)

Catalog Description:
Elements of program design, style, documentation, efficiency. Methods for debugging and verification. Operating system tools. Principles and use of object-oriented programming in C++. Basic data structures and their use.

Expanded Course Description:

  1. Use of Software Development Tools
    1. Debugging techniques, especially using UNIX debugging aids such as gdb/ddd.
      Effective use of windowing environments, such as X windows and emacs. Program development as multi-file modules, and use of the UNIX "make" program to organize them. Use of -I, -L and .a files in compiler commands.

      (Note: This material is covered in discussion sections and through student self-study, not in lectures.)

  2. The UNIX Environment
    1. First-level understanding of the nature of UNIX processes and job control. UNIX hierarchical file system. Use of system files such as library and "include" files. Shell scripts. Use of e-mail and the Internet.

      (Note: This material is covered in discussion sections and through student self-study, not in lectures.)

  3. Advanced Programming Concepts

    1. Pointers, recursion, file manipulation. Singly-and doubly-linked lists, and if time permits, one or more topics chosen from binary trees; queues; stacks.
  4. Programming Techniques
    1. The material introduced in ECS 30 on stepwise refinement, documentation, multi-file program design, time/storage tradeoffs, and so on is continued here.

      There is particular emphasis on the use of debugging tool. It is recommended that at least one assignment will consist of using gdb/ddd (or other debugging tool) to debug some flawed C++ language source code provided by the instructor; the student will submit a brief report, consisting of lines from a "typescript" file interspersed with remarks explaining how the student used gdb to track down the bugs.

      One of the important goals of course 40 is to prepare students for advanced courses, many of which use UNIX-specific software. It is recommended that instructors should encourage (but not require) students to install LINUX on their home PCs, both as a
      convenient UNIX platform and also to gain experience in certain operations not learned in formal coursework, such as the concept of disk partitioning.

  5. Object-Oriented Programming and the C++ Language

    1. Object-oriented design and implementation, polymorphism, operator overloading, encapsulation, derivation.

Textbooks:
Das, Your UNIX The ultimate Guide, McGraw-Hill, 2006
Deitel, C++ How To Program, Prentice Hall, 2006

Web Resources:
UNIX tutorial: http://heather.cs.ucdavis.edu/~matloff/unix.html
Debugging tutorial: http://heather.cs.ucdavis.edu/~matloff/debug.html
LINUX tutorial: http://heather.cs.ucdavis.edu/~matloff/linux.html

Computer Usage:
Students will utilize the computer systems in the Computer Science Instructional Facility (or their home computers) to develop approximately six programs.

Engineering Design Statement:
Engineering design skills are developed through a series of progressively more complex programming assignments, in which the emphasis is not only on functionality, but also clarity and efficiency.

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

Goals:
Students will:

Student Outcomes:

Instructor: M. Bishop

Prepared By: N. Matloff (February 2001)

Overlap Statement:

This course does not duplicate any existing course.

5/06

Back to Course Descriptions