PREREQUISITES : Freshman programming requirement (Gen_Eng 205-1, 2).
REQUIRED TEXT: 'C++ for everyone', by C. Horstmann
H. M. Deitel and P. J. Deitel, 'C++: How to Program', Prentice Hall, 5 th edition
Carrano & Prichard, 'Data Abstraction and Problem Solving with C++: Walls and Mirrors', Addison Wesley, 4 th edition
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.
- 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:
• 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 solution, in a systematic way, to an open ended problem in engineering and science
• Design efficient algorithms for solving a problem.
• Translate the solution into a program (e.g., C++), making use of concepts in object-oriented programming to facilitate the translation process.
• 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).