"With MATLAB, we are combining computer science theory and concepts with problem solving in engineering. MATLAB is the one language that we want our students to use—the one that we all use in our classrooms."
Dr. James Craig, Georgia Institute of Technology
At the Georgia Institute of Technology, or Georgia Tech, professors within the College of Engineering have long recognized the value of teaching computer science concepts to their students. However, developing a course that enabled students to learn and apply computer science fundamentals to solve engineering problems has not always been easy.
"We have tried various ways to develop a computing course, but we were never satisfied with the results," says Dr. James Craig, professor of aerospace engineering at Georgia Tech. "We realized that we were teaching tools, but were missing the computer science concepts."
Recently, the College of Computing worked with the College of Engineering to develop a practical introduction to computer science for engineers using MATLAB. Today, each semester, more than 1,000 students take the course, CS1371 - Computing for Engineers.
MATLAB enables students to learn the computer science concepts in a way that is directly applicable to engineering. MATLAB is an excellent first language for engineers and an ideal environment for engineering computation," says Craig. "In the upper-level engineering classes, we are very impressed with the capabilities of the students now. The course has been a huge success."
Instructors and students struggled with earlier versions of the course, which were based on languages such as Pseudocode and Scheme. "Our approaches were missing something," notes Craig. "If we needed to do matrix multiplication or solve simultaneous equations, we were stuck because we had to write our own low-level functions for those tasks."
The college also wanted the course to engage the engineering students and enable them to develop skills that they could leverage throughout their undergraduate studies and beyond.
Georgia Tech adopted MATLAB as the foundation for CS1371 - Computing for Engineers. Taught by the College of Computing, this course is required for all Georgia Tech engineering students and is now a pre-requisite for many advanced level courses.
Instructors teach the course with MATLAB open, writing code to illustrate new concepts as they are discussed.
Concepts in Computer Science Implemented in MATLAB, written by David Smith, a primary instructor for the course, guides the coursework. The course is delivered in three segments: basic procedural programming, writing applications, and dynamic data structures.
The first three weeks are devoted to writing functions and scripts and operating on vectors, conditionals, loops, and iteration. The first segment concludes with structures, arrays, character strings, and an introduction to recursion.
In the next segment, the students begin working with plots and images. "After week six, the applications become more relevant to the students' interests," notes Smith. "The students learn how to do two- and three-dimensional parametric plotting with MATLAB."
The course also dedicates a week to numerical methods, applying MATLAB functions before concluding the second segment with a discussion of sorting.
In the third segment, devoted to dynamic data structures, the students implement linked lists, binary trees, N-ary trees, and graphs in MATLAB.
"Students really identify with visual projects, so we work with images," notes Smith. "For example, I show how to find the gray sky in a picture using MATLAB, and replace it with a blue sky without destroying the rest of the picture."
After completing the course, Georgia Tech engineering students continue using MathWorks tools throughout their undergraduate studies. Instructors in virtually every engineering discipline leverage tools such as Simulink, the Control System Toolbox, and Simulink Coder™.
To teach engineering undergraduates the fundamentals of computer science within a practical engineering framework
Use MATLAB to illustrate computer science concepts in a hands-on, problem-solving approach