Session S1C 0-7803-7961-6/03/$17.00 © 2003 IEEE November 5-8, 2003, Boulder, CO 33 rd ASEE/IEEE Frontiers in Education Conference S1C-1 INCORPORATING SOFTWARE ENGINEERING PRINCIPLES INTO REAL TIME ENGINEERING COURSES Ted Sarma 1 , Massood Atashbar 2 , and Hossien Mousavinezhad 3 1 Ted Sarma, Department of Electrical and Computer Engineering, Western Michigan University, ted.sarma@wmich.edu 2 Massood Atashbar, Department of Electrical and Co mputer Engineering, Western Michigan University, massood.atashbar@wmich.edu 3 Hossein Mousavinezhad, Department of Electrical and Computer Engineering, Western Michigan University, h.mousavinezhad@wmich.edu Abstract – One common industrially pertinent area between Electrical Engineering and Computer Science encompasses digital data acquisition, signal processing, communication and control. Students need to be exposed to high-level software engineering practices that are engineering based. An already crowded Computer Engineering program curriculum cannot accommodate each of these courses separately. At Western Michigan University (WMU) a junior level course was created that teaches high-level software engineering best practices using Visual Basic that is applied to these areas. The students were required to maintain assignment logs, which provided a closed-loop feedback mechanism for continuous course quality improvement. This course is highly successful in that the students learn a great deal of information as well as gaining experience in applications that is useful in subsequent course work and careers. Index Terms – engineering education, real-time systems, software engineering INTRODUCTION Traditional Electrical Engineering (EE) and Computer Engineering (CE) courses such as digital logic, and digital design, microcontrollers, computer interfacing and computer architecture are mainstays, but there continues to be many holes to fill. CE is still considered to be an interface between EE and Computer Science (CS). EE embraces the notion that computer hardware is fundamental to the discipline, whereas, CS views software as the defining entity. Both views are correct and CE students need to understand both disciplines equally well. They must also go beyond and be able to apply the principles of high-level system analysis and design techniques to electrical engineering applications. The course described in the abstract was first documented by Atashbar [1]. “Engineering of Real-Time Systems” was introduced as a new junior level engineering course in the Fall of 1999 at Western Michigan University. This course addressed the education of EE and CE in the areas of digital data acquisition, signal processing, communications and controls. Student feedback in the form of standardized student surveys and reviews indicated significant satisfaction with the course structure and materials. The course was designed so that the students could use Visual Basic to create virtual instruments and subsequently be able to implement concepts such as data acquisition (including sampling, Nyquist criteria, Fourier Transforms and feature extraction), signal conditioning, sensors, serial and parallel asynchronous communications and control. Each topic was demonstrated at the hardware level and formed the basis of a software assignment. Assignments are listed along with a short description as follows: 1. Demonstration Program: A Visual Basic version of the "Hello World" program in which a variety of VB components are demonstrated. 2. Ohm's Law: A program emphasizing error trapping and conditional results. 3. Descriptive Statistics: Reading/writing files, creating statistical tables, histograms and traditional statistics. 4. Oscilloscope: Sampling a signal using software interrupts and displaying the results graphically as a virtual oscilloscope in real time. 5. Spectral Analyzer: Incorporating an FFT module with the Oscilloscope program to create Bode plots in real time. 6. Data Acquisition: Use of a third party (National Instruments) ActiveX oscilloscope component along with a DAQ card for data acquisition and display. 7. Serial Communication: Creation of an asynchronous serial communication protocol to acquire data from the serial port. In the Fall 2002, the course included additional methodologies designed to address Software Engineering issues and to provide more immediate student feedback. This was accomplished by introducing an initial student knowledge assessment questionnaire and an assignment log sheet. The assessment questionnaire provided valuable feedback to the instructor as to the students’ level of knowledge in computer programming concepts and with basic Software Engineering (SWE) practices. The SWE practices were reinforced by requiring the students to document their software development process and associated metrics. The log also provided the students’ assessment of the assignments. Both the questioner and the log gave the instructor timely feedback which resulted in the appropriate adjustments being made to the course materials during the