So I am in a similar boat, but I'm applying from Biomedical Engineering, so its a little bit closer. What I found is that, for masters programs, its important to make sure your grades and test scores are good, which it seems like shouldn't be a problem, that you are passionate about the field and can demonstrate that in your SOP, that you have a particular interest in something related to CS and are not just going in blindly, and that you have the necessary prerequisite courses for admission.
In general, the necessary courses are:
Basic OO Programming (C++, Java typicall)
Data Structures
Algorithms
Possibly Compilers or Organization
And maybe a few others depending on the program
I think as long as you have strong recommendations, top 20 seems feasible, but do apply to safety schools as well. There are several top-20 schools in the California school system such as Cal Berkley, UCLA, UCSD, and USC.