Programming for Engineers: A Foundational Approach to Learning C and Matlab


Product Description
To learn to program is to be initiated into an entirely new way of thinking about engineering, mathematics, and the world in general. Computation is integral to all modern engineering disciplines, so the better you are at programming, the better you will be in your chosen field.
The author departs radically from the typical presentation by teaching concepts and techniques in a rigorous manner rather than listing how to use libraries and functions. He presents pointers in the very first chapter as part of the development of a computational model that facilitates an ab initio presentation of subjects such as function calls, call-by-reference, arrays, the stack, and the heap. The model also allows students to practice the essential skill of memory manipulation throughout the entire course rather than just at the end. As a result, this textbook goes further than is typical for a one-semester course -- abstract data types and linked lists, for example, are covered in depth. The computational model will also serve students in their adventures with programming beyond the course: instead of falling back on rules, they can think through the model to decide how a new programming concept fits with what they already know.
The book is appropriate for undergraduate students of engineering and computer science, and graduate students of other disciplines. It contains many exercises integrated into the main text, and the author has made the source code available online.
</p>Programming for Engineers: A Foundational Approach to Learning C and Matlab Review
I have taught from this book for two semesters. The title says that it is for engineers and it is! For example, while some other majors might want to write programs and never know what is happening in the computer, this book assumes you are an engineer or engineering student who may someday be interfacing to micro-processor based devices, etc., and you need to understand what's happening in the computer from the outset. The biggest difference between this book and others I have on C is that it gets students drawing the stack and learning about pointers in the *first* chapter. (I have a popular book on C that mentions the stack once in a paragraph in the middle of the book and gets to pointers late in the book.) So much about C is pointer-oriented and it's essential to become comfortable with them right away so that they are "no big deal" by the end of the semester instead of being a cloudy mystery.The author has a sense of humor which my students tell me that they like. I like it, too.
As a software engineering professional and consultant, I greatly appreciate the fact that the book is also teaching good computing principles while teaching a language. For example, while teaching about matrix manipulation, the book begins to develop the notion of creating a toolbox file of matrix functions and an interface file where a program that uses the functions links to the interface (header) file without knowing the structure of data or the code in the toolbox file of functions. The book does not go into stories about why industry prefers such an approach of information hiding to support maintainability but the professor certainly can (and I do). By the time one has finished the C chapters, students have libraries of functions for matrices, circular buffers, and linked lists which they tell me they are already using in other courses within a year.
There is a chapter on debugging techniques and tools which we cover in the lab session so that students can try it hands-on.
In the Matlab section, two of the three chapters use music as the running example to illustrate various Matlab programming concepts. I skip the chapter on Ordinary Differential Equations (see below) and add a few classes on curve-fitting and labeling plots for which the profs in the follow-on lab courses are grateful.
Negatives:
a. Sample code uses one-letter variable names. I think it might take students a little longer to make connections between the code and the problem description because of this. The book is not a good role model of meaningful variable names.
b. Today's students seem to want to absorb concepts by reading a gazillion examples rather than studying a statement of the principle and one or two examples until they understand it. This book illustrates a concept with an example; then it gives the student a similar problem to do. It does not give 10 examples for one concept. I put this under "Negatives" but, personally, I *really* like this aspect of the book.
c. The Matlab chapter on Ordinary Differential Equations is rather a lot to try to cover at the end of the semester to illustrate a point that is important but probably goes over the heads of freshmen -- namely, that Matlab offers multiple functions to accomplish a task and one must choose wisely.
I don't often find good students and teaching assistants alike telling me that they really like an intro book. But this book attracts compliments. It's not entertaining; it's just really, really good.
Most of the consumer Reviews tell that the "Programming for Engineers: A Foundational Approach to Learning C and Matlab" are high quality item. You can read each testimony from consumers to find out cons and pros from Programming for Engineers: A Foundational Approach to Learning C and Matlab ...
