COURSE TITLE: ECE 230 Programming for Engineers

 

CATALOG DESCRIPTION:  Introduction to programming, basic data types, basic control structures; object-oriented programming, classes, constructors and destructors, derived class and inheritance, pointers; engineering applications.  Not for Computer Engineering majors.

 

PREREQUISITES:  Freshman programming requirement (GTK 205-1, 2).

 

REQUIRED TEXT:  H. M. Deitel and P. J. Deitel, C++:  How to Program, Prentice Hall, 4th edition, 2004.

 

RECOMMENDED TEXT:  Frank M. Carrrano and Janet J. Prichard, Data Abstraction and Problem Solving With C++: Walls and Mirrors, Addison Wesley, 4th edition, 2005.

 

COURSE COORDINATORS: Larry Henschen

 

COURSE GOALS: To teach object-oriented programming with applications to engineering. To teach the concept of classes, inheritance, and libraries and teach issues related to good programming, reuse, and problem solving in general.

 

TUTORIALS:  There will be three hands-on tutorials held in the computer lab during the first four weeks of the quarter. They will cover the use of the programming environment and the debugger.

 

GRADES:

Programming and Written Homework Assignments - 30%

Midterm - 30%

Final - 40%

 

DETAILED COURSE TOPICS:

 

Week 1:    Introduction to software engineering and the software life cycle; top-down vs. bottom-up design; basic data types, operations and expressions.

Week 2:    C++ program structure, include files; simple I/O; basic control statements (conditional statements, loops and loop statements)

Week 3:    More on stream I/O; arrays, pointers and pointer arithmetic, pointer-controlled loops, relation between arrays and pointers; strings and string processing.

Week 4:    Functions, value/reference/address parameters, simple parameters vs. array parameters; scope; activation stack.

Week 5:    Introduction to struct and class, data hiding via private, member functions and public interface, introduction to initializing constructors.

Week 6:    Continuation of constructors, dynamic allocation of data members, deep vs. shallow construction, destructors and deep vs. shallow destruction; new and delete.

Week 7:    Derived classes and inheritance.

Week 8:    Virtual functions, pure virtual functions, container classes.

Week 9:    Introduction to simple data structures - linked lists and trees and the importance of pointers.

Week 10:    Recursion; introduction to testing.

 

COMPUTER USAGE: Students learn to use a programming environment (e. g., C++ development environment) using a PC or a workstation. They learn how to use a compiler and debugger.

 

LABORATORY PROJECTS: The lab work consists of developing and debugging programs in C++ for:

 

1.      basic statements and I/O

2.      classes and inheritance

3.      multi-function projects

4.      medium-scale projects

 

The problems for the programming assignments are drawn from computer engineering and related areas like communications networks.

 

COURSE OBJECTIVES: When a student completes this course, s/he should be able to:

 

1.      Formulate a solution, in a systematic way, to an open ended problem in engineering and science

2.      Design efficient algorithms for solving a problem.

3.      Translate the solution into a program (e.g., C++), making use of concepts in object-oriented programming to facilitate the translation process.

4.      Effectively test and evaluate the program and interpret the final result. Effectively modify the final result if necessary.

 

ABET CONTENT CATEGORY:  100% Engineering (Design component).