Yes, for most task "input data" are random, so each time you open the task you will see another set of test-cases (and your program shoud give another result).
Program sources which you submit with the task are not checked at least automatically. This allows us to simplify checking system - and allows you to write in any language you like and with any input/output format you prefer.
Saving solution is important for you - since you will find that one task may require reusing code from other, previously solved - and you can always visit your solved tasks and fetch code from here.
There are two obvious drawbacks: - cheating becomes somewaht more simple - however, it looks that if one will store his solution in the internet and other will reuse this solution - even automatic checker will not help - at the same time cheating will not give you much experience; - solutions could be not perfectly correct (for example they work OK with given input data, but fail on some special cases) - however, preparing tasks become easier and we hope that we will instead provide you more tasks spending the same amount of efforts.
Anyway, checking could be done manually (and perhaps later we will add ability to review your solutions by your fellows) - if manual check will find cheating or absent solutions, user points could be decreased in some way.