Do computers defy the law of conservation of mass? Because, if a computer can copy a program there is twice the amount of space taken up. But how can you just duplicate an amount of space (MB, KB, GB,etc.) if you add nothing to it?

The only mass involved in computer memory is the mass of the electronic components that make up the memory, and this mass is unchanged when information is stored in memory. If your computer has, say, 256 MB of memory, then it has memory chips inside it that are capable of holding 256 MB of information. When information is stored in memory, the physical state of those memory chips is changed, but no new mass is added.

Perhaps an analogy will help. Imagine a row of ten coins sitting on a table. By letting tails represent 0 and heads represent 1, you could think of this row of coins as a primitive kind of memory, capable of storing a sequence of ten 0's and 1's. You would store such a sequence of 0's and 1's by flipping over some of the coins in order to get the appropriate sequence of heads and tails. Flipping the coins changes their physical arrangement, but not their mass. So mass is conserved during this operation.

One way to think of why this might seem puzzling is in terms of the type-token distinction. To understand that distinction, consider the question how many words there are on the next line:

The The The The

You could answer "four" or you could answer "one", and both are correct. It's just that when you answer "four", you're talking about word-tokens, and when you answer "one", you're talking about word-types.

This distinction applies to lots of different kinds of things: words, sentences, musical compositions, and, indeed, computer programs. As we normally talk of computer programs, they are types. You and I might install the very same program on our computers, just as we might write the very same word. But there are also program tokens, and our computers have different tokens of the program sitting on their hard drives, or in memory, or what have you. When you copy a program, you create a new token of it, and so you do "add something", as it were, even though, in another sense, you do not create a new program, because you do not create a new program type but only a new token of an old type. So, indeed, twice the amount of memory is consumed, because what is stored in memory are tokens.

Read another response by Daniel J. Velleman, Richard Heck
Read another response about Physics