COMP_SCI 230: Programming for Engineers

Quarter Offered

Winter : 2 -3:20 TuTh ; Ghena


Freshman programming requirement (Gen_Eng 205-1, 2).


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. Not for Computer Science Major Requirements. Cannot be taken as a substitute for COMP_SCI 211 and cannot be used where COMP_SCI 211 is a prerequisite.



COURSE INSTRUCTOR: Prof. Branden Ghena (Winter)


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 an hour-long, hands-on tutorial held in a computer lab each week throughout the quarter.


  • Programming and Written Homework Assignments - 30%
  • Midterm - 30%
  • Final - 40%


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:

• basic statements and I/O

• classes and inheritance

• multi-function projects

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

  • Formulate a design, in a systematic way, to solve an open-ended computational problem in science or engineering.
  • Implement the design as a program in an industry-standard programming language, making use of procedural abstraction and appropriate data structures.
  • Effectively test and evaluate the program, and accurately interpret its results. Iterate the program’s design and implementation to achieve desired goals.

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