Fast Programs for Big Problems John Burkardt Department of Scientific Computing Florida State University 27/29 September 2011 Modern computing involves solving big problems. This means that CPU time, efficiency, performance monitoring, and algorithmic scaling are important. This talk will give a simple overview of these questions, using examples written in MATLAB. We will start with the simple question of measuring program "speed", how to look for portions of a program that are consuming the most time, and strategies for speeding up such regions. We will look at a simple case study in which a computer mesh has been computed, and it is now desired to construct a list of the three triangles that are immediate neighbors of a given triangle. A simple search can carry out this calculation on a small problem, but for a problem involving just 64,000 elements, it will take ``forever''. We will then look at complexity, a simple measure of the relationship between the problem size N and the amount of work W required to produce an answer. Algorithms that can be used for large problems must severely control the growth in W as a function of N. We will look at some typical computations and discuss their complexities. I hope this talk introduces you to the idea that sometimes the size of a problem becomes an important factor in the approach to its solution.