# Engineering Computing

## Joseph L. ZacharyChristopher R. JohnsonEric N. EideKenneth W. Parker

### Hamlet ProjectDepartment of Computer ScienceUniversity of Utah

 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.

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.
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.
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.
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.
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.
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.
This lesson uses a simple kinematics problem to introduce the idea of C programming.
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.
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.
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.
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.
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.
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.
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
hamlet@cs.utah.edu