The Pitch for the Course

Today everything revolves around computing: engineering, physics, biotech, enterprises, and you name it. Computing is a lot of times not only about computing things correctly but also about computing them in a fast and efficient way (ie. with fewer resources).

Since Computer Science is not only about solutions to (discrete) problems but more importantly about fast solutions, we will talk about Algorithms and Parallel Processing. Algorithms, chips, hardware, and software are nothing but automata (state machines). Therefore we will talk about Automata. Implementing a general-purpose computer or application specific computing engine requires implementing the four basic arithmetic operations but implementing them as fast as we can. This cannot be simply done by fast switching transistors. It needs fast parallel addition and multiplication algorithms that are quite non-trivial and hence needs a good understanding of Computer Arithmetic. This is like taking fire for granted (ie. the four basic operations) and only admiring it once you try to start one when you are stranded on an island.

This course is important to a physicist for one more reason. Solutions to some physics problems can be very compute-intensive. Hence finding solutions to them in the lifetime of a physicist may require fast and parallel algorithms running on many computers. In biotech, for example, they even started building specialized compute-engine chips with massive operation-level parallelism to solve problems in DNA sequencing and drug design. On the other hand, this course is useful to an engineer because they are the ones that automate things. And in automation we often deal with real-time systems, where the responce (hence the compute time) cannot be more than a prescribed value -- think of the auto-pilot system of a plane.