A freshman-level programming course for EE and CPE students has led to greater student success in the ECE curricula.
|Jim Hendry, instructor for ECE 1574 demonstrates a missile command game project where students designed programs to fill asteroid fields then maneuvered ships to fire at the asteroids.
First taught in the fall of 1997 by Engineering Fundamentals and now taught in the ECE department, the course, ECE 1574 - "Engineering Problem Solving with C++", is required of all students who wish to enter electrical or computer engineering programs.
"Programming skills are a critical component for success throughout the ECE curriculum," said Warren Stutzman, interim department head. "We found that our courses rely on programming skills to a much greater level than the other fields of engineering and our students needed more programming experience than provided by Tech's traditional common engineering core," he said.
Before being accepted as an EE or CPE major, students must have a minimum of a C- grade in each of three areas of the course: exams, take-home programs, and labs/homeworks. After several years of experience with the course, reports from EE and CPE professors are that the students are better prepared and more successful in their major courses. Improvements have been most dramatic in the sophomore-level ECE 2574 - "Introduction to Data Structures and Software Engineering."
Running Trains and Avoiding Asteroids
The course has evolved from an on-line C++ course that did not yield the desired results, to a lecture/laboratory combination developed last year by Mark Jones, Peter Athanas, and Emily Crawford. The lecture portions of the course include traditional lecture and significant use of live programming. The weekly labs involve two-person teams solving problems that are extensively based on Lego® Mindstorms microcontroller-based robots.
A typical lab session would involve controlling the operation of a train and a gate across tracks. The train should stop when the gate is down and run when it is up. The gate is under the team's control via the keyboard and the programs must read the sensor inputs to determine when to run the train.
|Lego® Mindstorm systems play a role in 1574 laboratory classes, where student programs must maneuver trains and control the gates that tell the train when to stop and go.
Projects and homeworks are also aimed at keeping student interest. The first project last semester involved an electric circuit simulator. "The students at this level have not had exposure to circuits yet, but we gave them the circuit equations and formulas they needed," explained Jim Hendry, who is teaching the course this year. "This way, they were able to get their feet wet with real EE issues," he said.
Later projects included developing a simple missile command game with ships in fields of asteroids. "This was more physics oriented," Hendry said. The first project in the series involved simulating gravity acting on the missiles and detecting if the missiles hit the asteroids. A later problem involved determining how many asteroids to display with random velocities. The asteroids were not allowed to touch each other, so collisions had to be detected. The final problem involved creating a field of asteroids and maneuvering a ship through it while firing at the asteroids.
Programming AND Problem Solving
The students were given the formulae they might not have encountered yet in Physics, Hendry said. "But we did not give them an equation for setting the bullet velocity. They had to know their high school trigonometry to answer that question," he said. "This is a programming course, but it's also engineering problem solving."
The students were not required to learn graphics programming to display the asteroids and ships, but they did have to learn to call a function and handle multidimensional arrays, he said. "We try to take them through basic programming, including numbering systems, if statements, loops, functions, pointers, and memory management," he said.
Jones, the course supervisor, agreed. "The goal is to teach the students to begin to solve problems using the computer," he said. "To accomplish this goal, students learn how to use the syntax of C++, but more important, they learn how to program. The concepts are language independent."
A course like this requires significant resources and funding, Jones remarked. "We were very fortunate that the NSF SUCCEED project provided funding for the development of the course materials and labs," he said.
The ECE Department also provides significant funding in the form of six teaching assistants (TAs) each semester. This semester the department is providing 52 TA office hours per week so that students can get help almost any time between 8 a.m. and 8 p.m. every weekday, he said.
"Teaching students programming requires significant one-on-one interaction," he explained. "Since this is a critical skill for our students and we are seeing significant positive results, we believe it is worth the investment," he said.