It depends on what your course is, but if you want them to solve problems in a real world setting, you give them real world problems. Last time I checked, even with the vast amount of information that's available on the internet, there are still problems out there that need solving. Offer those up.
If you simply ask them to solve equations, that's not really solving problems in the real world. But if you ask them to design a bridge/circuit, that's something else. The problems should also be open-ended. If you have simple questions with only answer, that's easy to cheat. But having open-ended questions with multiple paths and/or multiple solutions makes it much more difficult to cheat. (And are probably better examples of real world situations.)
SHOW YOUR WORK!
The more steps that need to be taken, the more 'samples' you have to see if people are simply rote cheating or not. If I'm solving an equation and I need twenty steps, and someone else does it in the same twenty steps - guess what? One of us copied off of the other. Even if they are smart enough to not copy all twenty steps verbatim, that still requires some level of intelligence.
As the likelihood of catching someone cheating decreases, the penalty should likewise increase. Just make it clear that if you're caught cheating, you get a zero on the exam, and it doesn't matter if you were the person doing the copying or being copied from.
I have a very small mind and must live with it. -- E. Dijkstra