Finding size of cache in blocks Let's say I have a 64 kB Cache provided (i,e 2^18) which is direct mapped and block size is 16 byte = 2^5

Now, in the solution it says 
m=size of cache in blocks = 4096 = 2^12. This hasn't been provided in the question. So, how do we assume / derive size of cache in blocks was 2^12. 

If this is a static value, then does that changes if block size is increased to 32 bytes?
The size of the cache in blocks is just the size of the cache in bytes divided by the size of a block in bytes.  However, both the figures you give are wrong: 64 kB is 2^16 bytes, and 16 bytes is 2^4 bytes.  Dividing we get 2^12.