Introduction to Scientific Programming

Computational Problem Solving Using Maple and C

Zachary J.L.

Overview

Introduction to Scientific Programming was developed over a period of three years for use in teaching a course in scientific computing to beginning science and engineering students at the University of Utah.

In conventional science and engineering degree programs, computation is commonly treated as a narrow technical tool to be studied and applied in isolation from the traditional topics of the discipline. Many students go through their degree programs without ever using computation in any significant way.

Introduction to Scientific Programming was designed to encourage the integration of computation into the science and engineering curricula. This textbook is ideal for a course whose goal is to teach introductory programming while simultaneously preparing students to immediately exploit the broad power of modern computing in their science and engineering courses. This textbook has at least four distinguishing features:

Contents:

    1. Computational Science 
        Chapter 1 explores the differences among the experimental,
        theoretical, and computational approaches to science, using the
        work of Tycho Brahe, Isaac Newton, and Johannes Kepler as
        motivating examples. 

    Programming in Maple 
        Chapters 2--9 explore programming in the context of Maple. The
        focus is on the computational properties of numbers, arithmetic and
        symbolic expressions, programmer-defined functions, and scientific
        visualization. Chapter 9 introduces procedural, statement-oriented
        programming to prepare students for the transition to C. 

    2. Population Density: Computational Properties of Numbers 
        An introduction to Maple using the problem of determining the
        average population density of the earth as the starting point for
        learning how to use rational numbers, floating-point numbers, and
        arithmetic expressions to do simple calculations. 

    3. Eratosthenes: Significant Digits and Interval Arithmetic 
        A simple experiment and geometric argument that Eratosthenes of
        Cyrene used to determine the circumference of the earth in 225 BC
        is used to explore the methods of significant digits and interval
        arithmetic. 

    4. Stairway to Heaven: Accumulation of Roundoff Error 
        This chapter uses the amusing problem of determining how far
        beyond the edge of a table an overhanging stack of blocks can be
        made to extend to explore the tradeoffs between rational and
        floating-point arithmetic. 

    5. Kitty Hawk: Programmer-Defined Functions 
        The problem of determining the line-of-sight distance to the
        horizon from the top of a hill leads to a comparison of two
        algebraically identical but computationally distinct methods and to
        an introduction to programmer-defined functions. 

    6. Baby Boom: Symbolic Computation 
        This chapter exploits the problem of predicting the population
        growth of the United States as an opportunity to branch out from the
        numerical focus of earlier chapters to examine symbolic
        programming. 

    7. Ballistic Trajectories: Scientific Visualization 
        The problem of visualizing the ballisitic trajectory of a projectile is
        used to explore Maple's two-dimensional plotting and animation
        capabilities. 

    8. The Battle for Leyte Gulf: Symbolic Expression Manipulation 
        Chapter 8 explores the problem of computing and visualizing the
        power required to move a ship along a specified one-dimensional
        trajectory through the water. 

    9. Old MacDonald's Cow: Procedural Programming 
        The problem of finding the radius of an arc that divides a circle into
        equal areas is used to motivate the bisection method, whose
        implementation provides an introduction to procedural
        programming. 

    Programming in C 
        Chapters 10--18 explore programming in the context of C. The
        book builds on the concepts introduced in the context of Maple to
        explore ideas from statement-oriented procedural programming,
        including assignment, input/output, conditionals,
        programmer-defined functions, loops, structures, and arrays. 

    10. Introduction to C 
        This chapter marks the transition point between the treatments of
        Maple and C. Statement-oriented procedural programming in C is
        introduced and the differences in programming in Maple and C are
        outlined. 

    11. Robotic Weightlifting: Straight-Line Programs 
        The problem of controlling the ankle, knee, and hip joints of a robot
        doing a squat exercise is explored. A C implementation of the model
        leads to a discussion of straight-line programs that touches on
        numerical types, expressions, assignment statements, the C math
        library and the C input/output library. 

    12. Sliding Blocks: Conditionals 
        The problem of calculating the motion of a block on an inclined
        ramp is used to explore the variants of the C if statement. Function
        headers, function bodies, function prototypes, and runtime behavior
        of functions are also explored. 

    13. Rod Stacking: Designing with Programmer-Defined Functions 
        The problem of determining the center coordinates of each rod in a
        stack of cylindrical rods is used to illustrate the role of functional
        decomposition in program design, implementation, and testing. 

    14. Newton's Beam: Repetition 
        Newton's method is introduced in order to determine the positioning
        of a beam that is laid against a cubical box. The workings of while
        and do loops in C are explained. 

    15. Numerical Integration: Multiple-File Programs 
        Methods of numerical integration are introduced to determine the
        length of a steel sheet that is to be 10 meters long after being
        corrugated. for loops, passing functions as parameters, and the
        advantages of dividing large programs into multiple files in C are
        discussed. 

    16. Harmonic Oscillation: Structures and Abstract Datatypes 
        To solve the problem of determining the position, as a function of
        time, of a block undergoing damped harmonic oscillation, Newton's
        method is extended to the complex domain. This leads to a
        discussion of structures and abstract datatypes in C. 

    17. Heat Transfer in a Rod: Arrays 
        Determining the temperature, as a function of time, at the center of
        a silver rod after heat sources have been applied at its ends leads to a
        finite-element model whose computational solution requires the use
        of arrays. 

    18. Visualizing Heat Transfer: Arrarys as Parameters 
        The chapter addresses the problem of visualizing the temperature of
        the rod from the previous chapter as it undergoes heating. A C
        program is used to create a Maple program that will display the
        desired animation. 

    Appendix A: Maple Built-In Functions 
    Appendix B: C Library Functions 
    Bibliography 
    Index 


Goto
Books
CAIN Home page

webmaster@can.nl
Last Update: July 8, 1997.