|
EECS 231 - Advanced Programming for Computer Engineers |
||
|
COURSE TITLE: EECS 231 Advanced Programming for Computer Engineers CATALOG DESCRIPTION: Object-oriented programming, classes and data hiding, dynamic object construction and destruction, derived classes and inheritance, virtual functions; file processing; introduction to UNIX; testing and test generation. REQUIRED TEXTS: H. M. Deitel and P. J. Deitel, C++: How to Program , Prentice Hall, 5 th edition, 2005 Robbins, Linux—Programming by Example: The Fundamentals , Prentice Hall, 2004 COURSE COORDINATOR: Larry Henschen COURSE GOALS: To teach object-oriented programming with applications to computer engineering. To teach the concepts of classes, inheritance, and libraries. To teach issues related to good programming, reuse, testing/test generation, and problem solving in general. To introduce UNIX systems and developing/debugging C/C++ programs on UNIX systems. PREREQUISITES: EECS 110 or knowledge of any programming language PREREQUISITES BY TOPIC: COURSE TOPICS: Week 1 : Introduction to software engineering. Basic data types, variables, computer arithmetic, expressions, parentheses. Basic I/O – cout, cin. Flow of control – sequential, test-and-branch, iteration. Boolean expressions. Software engineering revisited - testing and correctness, comments, assert(). Lab demonstrations: Logging into Wilkinson lab, make files, the GCC/C++ Compiler and separate compilation Week 2 : Arrays, pointers, and strings. Functions: call by value and call by reference, references vs. pointers. Function overloading Lab demonstrations: The GDB debugger (including –Wall, -Werror, etc.), the Emacs editor Week 3 : Introduction to classes. Structures and classes, data hiding and encapsulation. Public and private members, constructors, unions. Interface vs. implementation. Lab demonstrations: Unix shell, Unix file system and directories Week 4 : Classes and Abstract Data Types (ADTs), interface and implementation files. Lab demonstrations: More Unix directories, security models (users, groups, permissions) Week 5 : Class destructors and copy constructors, the = operator, deep versus shallow copies, C++ operator overloading. Lab demonstrations: Good programming practice--assert and use of utility functions (perror) Week 6 : C++ operator overloading (cin, cout and arithmetic operators). Inheritance and derived classes, is-a hierarchies and composition of classes. Virtual functions and polymorphism. Week 7 : Virtual functions and polymorphism. Linked list processing: stacks and queues, trees and recursion.. Week 8 : Template functions and classes. Standard Template Library: iterators and containers, strings revisited. Exception-handling basics Week 9 : Advanced Topics: C versus C++: exception-handling basics, static and dynamic type casting, C-style I/O. UNIX style programming – argv/argc. The Unix file system Week 10 : Unix : file redirection and piping, process management COMPUTER USAGE: LABORATORY: Programming assignments will be done on UNIX systems. GRADES: Programming and Written Homework Assignments - 30% Midterm - 35% Final - 35% 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. • Use the UNIX system and UNIX tools. ABET CONTENT CATEGORY: 100% Engineering (Design component). |
||