Modern internal combustion engines are almost invariably computer-controlled. While each brand has its own nomenclature (ECM, PCM, EMU, etc), they are all software driven (typically firmware, really, but these are a fully functional computer with RAM, a general-purpose CPU, and a system bus).
This is a pretty cool embedded system application: it's basically a real time controller which reads numerous inputs and manages the engine (and sometimes other systems such as braking, electronic shock absorbers, cruise control, etc).
The inputs typically include crank position, engine temperature, throttle (gas pedal) position, brake pedal input, oxygen sensors both before and after the catalytic converter(s), throttle airflow, and what gear the transmission is in.
Secondary statistics that can be derived from that information include engine RPM, vehicle speed, air/fuel ratio, and power output (if you know how much air and fuel are going in, a horsepower approximation is easy to get).
Based on that information, the engine management software will decide how much gas to put in through the fuel injectors, when to fire the spark, whether the rev limiter should kick in, and what (if any) warning or advisory lights to turn on.
As cars become more complex, additional systems such as ABS, traction control, cruise control that follows the leading car at a fixed distance, and climate control are being integrated into the engine management software.
The additional complexity of the computer-controlled motor can be daunting at first, but once one masters it, it's fantastic. A single laptop with a OBDII connector can talk to most engine management systems. Since both the inputs and outputs are available, diagnostics become easier and more accurate.