Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
Programming projects in C for students of engineering, science, and mathematics
Rostamian R., SIAM, Philadelphia, PA, 2014. 409 pp. Type: Book (978-1-611973-49-5)
Date Reviewed: Jun 30 2022

This book introduces C, and uses it in a few interesting projects. Therefore, I’d like to look at it in the wider context of programming languages suitable for complex projects. For this, let’s draw an analogy to natural human languages: to think or plan or talk, one must use words to refer to general abstract concepts. In one’s mind, the word may project a visual image to help refer to the right concept. A dictionary is not necessary to interpret the word; instead, a vivid example of how the word has been used or pictured in one’s head since early childhood works. We think by examples and context--this is what Wittgenstein tells us (perhaps in not so many words). Likewise, in a formal language too, an object should have not only an abstract definition, but also purpose and motivation. A mathematical object must be worked hard, in many examples, to become useful and relevant. Only then is it alive and interesting.

What programming language could be used for this? The book shows us how suitable C is. Still, C is a bit function oriented. An object-oriented language, on the other hand, may have more tools to help introduce new terms and concepts, and enrich one’s vocabulary and imagination. This may help users think, plan, and handle a complex project made of many independent pieces.

To work on a project, one needs more thinking tools: more words, to help focus on the right concept; more math, to help formalize; and more programming tools, to help talk to your own computer. After all, better to be friendly with your computer if you want it to do what you ask.

The programming language should supply the interface to implement the missing mathematical structures. Is C dynamic enough for this? Could C++ do a better job? I’d like to see them discussed and compared, along with their pros and cons (perhaps in a future edition). C could be a bit more efficient, but C++ could be better at preparing new objects. This may prove worthwhile in the long run, saving human resources later.

Still, C++ is built on top of C. The book introduces C well, including a few tricky topics like pointers and arrays. It also teaches how to organize your program in headers, macros, and Make. This is quite good practice, especially valuable for students.

The book starts with a few miniprojects: a practical minimization algorithm, Turing’s Game of Life, Haar wavelets in image compression, a discrete elasticity model, and Gaussian quadratures in a 1D integral. The best waits for us at the end: solving an elliptic (nonlinear) partial differential equation (PDE), using linear finite elements, in barycentric coordinates (in 2D).

Still, the code is incomplete: it calls for an external software package to implement an individual finite element, and to solve the discrete system numerically (using a direct method). For a bigger system, an iterative method is better, with an acceleration technique on top.

In C it is sometimes hard to see which bit does what. For example, the implementation of files, images, and matrices is not quite natural, using long names and lists of arguments (chapter 14). Likewise, chapter 16 could be rewritten recursively (calling “loop” and “filter” from “sort”). Still, the book is valuable: it broadens one’s horizons to the art of programming and ignites interesting questions, as discussed above.

Reviewer:  Yair Shapira Review #: CR147463 (2209-0121)
Bookmark and Share
 
C (D.3.2 ... )
 
 
Computer Science Education (K.3.2 ... )
 
 
Education (J.1 ... )
 
 
General (D.1.0 )
 
Would you recommend this review?
yes
no
Other reviews under "C": Date
C (2nd ed.)
Schildt H., Osborne/McGraw-Hill, Berkeley, CA, 1990. Type: Book (9780078815386)
Jan 1 1992
C: a software engineering approach
Darnell P., Margolis P., Springer-Verlag New York, Inc., New York, NY, 1991. Type: Book (9780387973890)
Dec 1 1991
C for programmers
Ammeraal L., John Wiley & Sons, Inc., New York, NY, 1991. Type: Book (9780471928515)
Dec 1 1991
more...

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy