What are the qualities of a good block cipher? Beginner, Intermediate, Advanced, Expert Notice: I'm doing this to learn.  I know not to use a homemade cipher for anything that requires security.  I also have heard before I'm not supposed to be trying this, but I learn best through trying to make things from scratch, even if I fail.

Ciphers are incredibly complex, to the point most people probably don't appreciate them, myself included.  Trying to make one from scratch might help with this, so I'm looking for a list of qualities/achievables that can be worked towards for years to come.

This is the list so far, for a good block cipher at different learning levels:

Beginner :


Encrypted output can not be broken by hand.  The level of encryption during WW1 or so.  


Intermediate : 


Changing a single bit in the input should have a 50% average chance of changing each bit of output.
Each byte should have a 1/256 chance of not changing (basically #1 ^ 8)
The number of bytes found in similar by search should be very few (I need to write down the math, but my estimate is around 5%)


Advanced:


Not sure yet?


Expert :


Immune to Differential cryptanalysis?




This list is very incomplete, but gives an example of what I'm looking for.  

What is your list of achievable qualities for block cipher at different skill levels?
I don't think we can really separate things into skill levels as such, but there plenty of targets to aim for in terms of security goals. You'll want resistance to:


Differential cryptanalysis


Truncated differential cryptanalysis
Integral cryptanalysis
Impossible differential cryptanalysis
Higher order differential cryptnalysis
Boomerang attacks

Linear cryptanalysis


Differential-Linear attack

Rotational cryptanalysis
Slide attacks
Meet in the middle attacks


Biclique_attacks

Brute force search
Side Channel attacks


Timing attacks

Algebraic attacks
Partitioning cryptanalysis
Attacks that don't exist yet (at least, publicly)


Some resistance can be achieved via:


Large enough keysize


Mandatory for simple brute force search

Large enough blocksize


A large enough size can preclude the conditions for a slide attack to be applicable

Avoiding using secret information in ways that leak timing information


No lookup tables
No shuffling of arrays according to secret information
No secret dependent rotations

High levels of diffusion that cause the avalanche effect quickly


Some other desirable traits:


Software efficiency on a wide variety of platforms (i.e. 8 bit, 32 bit, 64 bit)
Key agility


Ideally the key schedule is invertible
Ideally the actual keys used each round are extracted from the invertible key schedule in a weakly one way manner (first preimage resistant)



Don't forget to obey Kerckhoffs Principle

After you've done all that, you might like to make your construction tweakable

Some of the mathematical concepts related to cipher design are:


Information theory


Information Entropy

Finite Fields
MDS matrix


Matrix
Coding theory

Boolean functions


S-box (meaning NxM mapping, not a lookup table)
Bent functions