Engineering Computing

Joseph L. Zachary
Christopher R. Johnson
Eric N. Eide
Kenneth W. Parker

Hamlet Project
Department of Computer Science
University of Utah

EXECUTE These lessons contain special links that interactively demonstrate commands and copy files. All such links are anchored by the icon illustrated on the left. These links will not work unless you have installed the Hamlet external viewer.

World Population

This lesson uses Maple to study the problem of determining the number of square feet that every human on earth would have if all of the dry land were divided up evenly. It illustrates the five-step approach to solving computational problems, with an emphasis on the importance of assessment. It discusses the notions of significant digits and interval arithmetic.

Kitty Hawk

This lesson uses Maple to determine the distance out to sea one can see from the top of a hill. It illustrates the importance of using diagrams to come up with a model, introduces the idea of floating-point error, and shows how algebraic simplification can convert an unstable computation into a stable one.

Cantilevered Blocks

This lesson uses Maple to determine how far out beyond the edge of a table a simple stack of blocks can be cantilevered. It illustrates the role that Maple can play in developing an initial model, and introduces the idea of using built-in functions.

Exponential Growth

This lesson uses Maple to study the phenomenon of exponential growth. It illustrates the power of user-defined functions and shows how Maple can be used to solve equations.

Ballistic Trajectories

This lesson uses Maple to study the problem of visualizing ballistic trajectories. It illustrates the power of visualization in science and engineering through the use of two-dimensional plots, parametric plots, and animations.


This lesson uses Maple to study the problem of modeling the power consumption of a modern destroyer. It illustrates the calculus capability of Maple, the idea of abstracting a function from an expression, and the power of building complicated functions from simple building blocks.

Computing Roots of Equations

This lesson uses Maple to study the bisection method for computing roots of equations. It illustrates the use of conditionals, loops, and procedures to construct building blocks for programs.

Introduction to C

This lesson uses a simple kinematics problem to introduce the idea of C programming.

C Program Statements

This lesson continues with the simple kimematics problem from the previous lesson to illustrate the use of declarations, assignment statements, math operators, built-in function calls, and simple input/output in C.

C Functions

This lesson uses the problem of determining the individual positions each of the cylindrical rods in a large stack to study the definition and use of user-defined functions in C.

C Conditionals

This lesson studies the motion of a block on an inclined plane, with and without the presence of friction, to illuminate the use of conditional statements in C.

C While Loops

This lesson uses a variety of examples---input verification, the bisection method for solving equations, and a summation problem---to illustrate the use of while loops in C.

Introduction to Numerical Integration

This lesson examines the rectangular and trapezoidal methods for numerical integration. This provides more examples of loops and permits the introduction of for loops in C.

C Arrays

This lesson uses a simple finite-element analysis to model the flow of heat in an insulated wire. This provides an opportunity understand the role of arrays in C.

C File Input and Output

This lesson studies the problem of animating the heat flow problem from the previous lesson as a way of illustrating the essentials of file input/output in C.

Hamlet Project