

ASK HN: From lit major to Computer Science Masters? - ryanb1_98

Is this possible?
I'm currently working on learning how to program from the very beginning and completed no coursework related to computers. Is it close to impossible for me to be accepted into a (half-decent) computer science program? What would I need to do to accomplish this?
======
samratjp
Well, even not half-decent schools (the good ones) accept non-cs folks, but
with the stipulation that it would serve you better if you came from a math
background (engineering, etc.)

What the admissions folks want to know is whether you can handle the workload
and can contribute something of significance in the form of a thesis or a
project. As about workload, you will invariably encounter systems programming,
operating systems, compiler construction and some theory class. Of course,
this may not be true everywhere but is an indication of a good grad program's
basic requirements. To succeed in those classes (and beyond), you would be
advised to have a good grasp of at least C, Java or C++, data structures and
algorithms.

Now, if you really want to go through with this, you can succeed if you spent
some time studying. Start with MIT OpenCourseWare. Master the intro class with
python as a gentle intro (checkout Google's Python class for great intro).
Then write those some programs in Java. Then, write those same programs using
Object Oriented Programming.

Then look into data structures (arrays, lists, hashes, trees) and the big
algorithms (start with path finding - dijkstra, other shortest paths, sorting,
and if you have time - strongly connected components, suffix tries, etc.)
Another big concept you need to understand is Big O notation - something that
tells you how complex a given program or algorithm is (it's nice to know
sometimes to compare one algorithm to another on basically how fast it can run
- e.g a big O of n^2 O(n^2) is worse than O(n))

Now, all of the above is just good preparation for the fun parts you will do
in a Master's. You should spend some serious time hacking around with C (get
this book -
[http://en.wikipedia.org/wiki/The_C_Programming_Language_%28b...](http://en.wikipedia.org/wiki/The_C_Programming_Language_%28book%29)).
The best way to play around with C is to mess around with Systems Programming
in UNIX. Get Systems Programming book ([http://www.amazon.com/Advanced-UNIX-
Programming-Marc-Rochkin...](http://www.amazon.com/Advanced-UNIX-Programming-
Marc-Rochkind/dp/0131411543/ref=pd_sim_b_9))

Having said all of the above, do you know what you are interested in doing
with a degree in C.S? There are some nice interdisciplinary programs where you
may not have to do all the hardcore stuff I mentioned above but still dabble
into as much detail as you'd like. Look into programs like Michigan's School
of Information, for example.

Hope that helps.

~~~
ryanb1_98
Thanks for the thorough advice. I really appreciate it. I think my main goal
is just to get a credible degree for the web development job market. It will
be a complete career switch for me. My thought process is that going back and
getting another BA is too time consuming. I am motivated right now and I have
a lot of free time, so I'm wondering if it is possible to teach myself most of
the basics taught in undergrad and get into a grad program, which would be
worth much more in the job market anyways.

~~~
samratjp
Well, in that case, in the next year learn by doing what you want to do i.e.
web development. You still would benefit going through the exercises. At the
very least, go through Google's Python tutorial and get some decent coding
skills from the MIT intro class ([http://ocw.mit.edu/OcwWeb/Electrical-
Engineering-and-Compute...](http://ocw.mit.edu/OcwWeb/Electrical-Engineering-
and-Computer-Science/6-00Fall-2008/Readings/index.htm))

After going through that exercise, you should be able to build some non-
trivial apps.

For web side, you can benefit from learning at least one web framework (yes,
HN folks will flame throw you with framework do's and don't, but for learning
sake, just pick one and stick with it). Ruby on Rails is a pretty popular
framework and some Ycombinator startups have built extremely impressive sites
(scribd, justin.tv, Loopt to name a few).

So, assuming you put in work on the python tutorial or even if you didn't, I
highly recommend this online ruby tutorial in 15 minutes.
<http://tryruby.org/>

I'd recommend this Ruby on Rails online tutorial -
<http://www.railstutorial.org/book#top>. It is very new-comer friendly and
dips into industry-relevant points that other tutorials don't necessary cover;
by that, I mean this tutorial touches base on version control (a program to
keep track of what you added or changed in your code) and unit testing (you
need this when your code gets ridiculously huge).

And, even though this may sound too early (it's not), look at job boards of
places where you may want to work for (this would and should change as your
learning progresses). In those places, look at skills required and the tools
they use. You'd be surprised how often some jobs care about what you have
built and how smart you are rather than your impressive educational
credentials (though that can help).

------
porter
How about the Master's in Computer and Information Technology at UPenn?

<http://www.cis.upenn.edu/grad/mcit/>

Looks like it's designed for people like you. Not sure how this would be seen
by employers - perhaps some others can answer this.

For anyone on the hiring side of a web company: would it be better for a non-
CS undergrad to go through a masters program like the ones at Penn/Chicago, or
would it be better if someone took a year off, taught themselves, and actually
built some stuff?

------
krf
Check out this one:

University of Chicago - <http://masters.cs.uchicago.edu/>

If U of Chicago is doing it, likely there are others. I would also suggest
looking at UK universities - the 1 year taught course Master's degree is a
popular cash cow for many universities.

------
balding_n_tired
Have done that. By the time I applied, though, I had taken a number of courses
in a continuing-ed program, up through compilers (the Dragon book).

------
adelevie
Take a year off and learn programming on your own. Then knock their socks off
and get accepted.

