Section 300
MWF 3:30-4:30PM Chrysler Auditorium
Instructor: Alex Bielajew bielajew@umich.edu
An algorithm describes a series of steps that solves a problem, encoded in such a way that it can be solved by a machine. For engineers, learning what algorithms are and how to think about problems in algorithmic terms is an important cognitive skill that pays off in all kinds of problem solving. Surveys of practicing engineers, in all fields of engineering, consistently indicate that all engineers should learn about algorithms and how to implement them, because doing so develops program solving skills. So approach this class with an understanding that learning to program is a part of developing your identity as an engineer, and in the long run pays off because it makes you a better problem solver.
The goal of the class is to make you familiar with the process of designing algorithms to solve problems of the sort that arise in engineering analysis and design. We implement those algorithms in two languages, C++ and Matlab, but these languages are not the focus of the course: they are the tools that we use to build our intellectual edifice. You will learn something about these two languages, and by extension about many other related computer languages, but the focus of the course is on creative problem solving.
We will tackle problems in a series of projects that might be relevant to environmental science, medical technology, heat transfer, or even games. In previous sections we have written algorithms to solve Sudoku puzzles, to track a contaminant moving through an aquifer, to target a laser against an incoming projectile, to compute the velocity of a satellite falling to earth, to model the interactions of predator and prey species in a farm, and to model the breaking and acceleration of a car.


