Ethereum is turing complete while bitcoin is not. In brief, we are used to programming languages that are Turing Complete, and can be programmed to solve any computational problem given enough time and space. Before most computer languages were turing complete, machines were not able to solve multiple computational problems - ie a machine can add, but not multiply. This is the most significant difference between Ethereum and Bitcoin, in that the Ethereum blockchain can be used for smart contracts since it is programmable.