

Roll your own computer science masters - bjhess
http://philcrissman.com/2010/05/01/roll-your-own-computer-science-masters-program

======
brianobush
There is a little more than just knowledge acquisition in grad school. your
advisor, research partners and other researchers from other schools/industry
are vital to learning your domain, how to (not) approach problems. Of course,
some will say that I am talking about a PhD, but I think this applies as well
to a Masters program (to a lesser degree of course).

~~~
nekopa
I think with a little preparation you can address all these concerns. It is
possible to find a mentor online to act as an advisor, and if you (for
example) found a start-up in the field you want to study, then you can partner
with other 'researchers' (co-founders) and industry(customers) partners. If
you are diligent enough to create a well rounded learning track for yourself,
it shouldn't be a problem to also include the valuable things you mention.

------
beilabs
I'm doing my M.Sc in Software right now. I want to do a startup right after
this is finished (August cannot come soon enough). The one glaring omission
from your post is that there is no thesis!

My thesis is in something I am genuinely interested in, I'm doing "proper
academic" research in a field that I can see myself working in full time after
this is complete.

My classes are all just preparation for the thesis and using what I have
learned in them to research & write something which can be given back to the
academic and professional community.

~~~
nekopa
Up-voted even though I don't think you are 100% correct. Its not so much a
thesis that is needed, but something similar.

For example, I am embarking on an intensive self-study course, in a lot of
different subjects. Instead of a thesis, I have given myself a bunch of
_objective, observable outcomes_. These are 'things' that can be observed
and/or measured objectively.

Due to the fact that I have a lot of varied subjects I want to
learn/understand more about, I decided the best way to make my learning more
efficient is to combine subjects as much as possible into these OO outcomes.
Here are a couple of the outcomes I am working on, with the subjects that
relate to them.

Herb Garden: Biology, chemistry(making own fertilisers etc) agriculture
history, hydrology, genetics, molecular gastronomy, design and geometry

Risk-like game of different time eras: Military history, python, databases,
data visualizations, dashboard design, social network design, math-
probability and statistics, cartography skills, 2D artificial
intelligence(bots), application of a few books on mil strategy: Art of War,
Book of 5 Rings, Warfighting, and On War.

I am hoping that by having concrete things to build, it will force me not only
to learn the subjects needed, but to really get a proper understanding of
them.

I have taking this path because I realized recently that I have been starting
to become a "Cargo-Cult Programmer". I can build software and get results, but
not _really_ understand why the results are what they are. I would like to
change that.

Edit: typo

~~~
msg
At least in my master's program, I was advised that an MS without a thesis was
essentially a terminal degree. If you want a research job at Google, you need
the PhD, and if you want the PhD, you must do the thesis.

~~~
nekopa
I was talking about 'rolling your own' degree. Of course if you are in
university then you should do what is required. But if you are studying for
knowledge sake, then the 'thesis' can take a very different form.

------
markkanof
This is a great benefit of being a software developer. With a decent amount of
motivation it's possible to increase our knowledge and skills by a huge
amount.

The internet puts so much information at our fingertips. Especially in recent
years there are so many new languages, databases, libraries, etc. that if you
want to learn something you can just do it. You don't need to go through a
masters program, or even through a training course for that matter.

~~~
nzmsv
This is true of languages and libraries, but learning entirely new concepts is
harder. First of all, one has to figure out _what_ to learn, and then actually
learn it.

~~~
derefr
If you just start reading some of the code-bases you use (libraries,
compilers, operating systems, etc) to find out how they do the things they do,
you'll quickly figure out _what_ you need to learn—it'll feel like having
absolutely no idea how the code you're looking at works.

------
jfornear
I wish there was something like MIT OpenCourseWare but better (or that it
itself was better).

~~~
nekopa
What do you find is the problem with the MIT OCW? Personally I find it is a
bit of a pain to work through their different tracks and to try to compile a
complete list of materials, and put together a study program. I am also trying
a logic course at <https://oli.web.cmu.edu/> Not as many subjects there, but I
like their approach so far.

------
pmiller2
I wish this method were more applicable outside of CS. Applied computer fields
(meaning mostly programming, IT, DBA, networking, and the like) have more of
an "it's what you know, not the letters after your name that matters" culture
than just about any other field requiring any sort of specialized education
that I know of. Unless it's for your own personal knowledge, going this route
in a field like chemistry or biology will get you nowhere professionally (and
may not even be possible in fields like experimental physics).

------
jgg
(Aside: the possible exception to this is Calculus and other advanced math
classes, unless you are one of those people who absorb that with a minimum of
effort; you either understand Calculus (et. al.), or you don’t, you can’t
really just push your way through those one. YMMV.)

First day of my Calculus class: "This is a proof-based Calculus class! This
means you must memorize these proofs for the test...".

Actually understanding Calculus is _hard_ work. If you don't believe me, pick
up Michael Spivak's Calculus book sometime. Regurgitating the exact formula
for integration by parts or the difference quotient will get you nowhere in
solving real mathematics problems, which assume that knowledge as a base-step
and require you to apply critical thinking and creativity to actually get
somewhere. But universities are run like a business: the more money, the
better. Students who become frustrated and quit because they're too lazy
and/or stupid to actually _think_ do not give them money, so it's easier just
to make the tests easy for idiots who spend all their time memorizing things
without analyzing their meaning or worth.

Feh.

~~~
billswift
Calculus and other math courses, and languages both computer and human, are
skills - you must _practice_ them to actually be able to use them. Memorizing
proofs, or equations, or words, will not teach you the subject - at most they
will teach you _about_ the subject.

~~~
jgg
I agree. The special skill you need to really do mathematics - creative
problem solving - is a very hard skill to develop in anyone. It seems like
schools are taking the easy way out by not requiring you to use it that much.

------
slpsys
tl;dr. This didn't need to go on beyond, "I'm not interested in jobs where a
CS masters is useful." This was just a primer on being a decent software
engineer.

~~~
nekopa
He actually said he is not interested in jobs which just require you to have
the piece of paper saying you have a CS masters, but more interested in jobs
which require you have the _knowledge_ a CS masters gives you. From this
conclusion he then comes to the idea of just gaining that knowledge doesn't
require you go to a university.

This was more on a primer on really thinking about why you want to go to
university. Do you need the piece of paper? Or do you just need the knowledge?

~~~
philcrissman
Exactly. And honestly, it's basically a first draft vomited up onto the web.
It's not as if it's a manifesto on education/college/etc, just some thoughts
on the topic.

------
akshaybhat
Its more of a Software Engineering Masters rather than computer science.

~~~
stingraycharles
I would even hesitate calling it a master's degree. I did a bachelor in
software engineering, and this is exactly the kind of stuff we had to learn.

~~~
philcrissman
Of course it's not a "degree"... and yes, I have a bachelors degree, and this
is what we learned also. That said, I just used an existing course list from
_one_ graduate program in (yes) software engineering as a base.

The whole idea is that if you wanted to do this, you could make your own list
of topics to cover. :)

------
rick_2047
If anyone is interested in a comprehensive course in video or website format,
you should definitely check out the National Program on Technology Enhanced
Learning (nptel.iitm.ac.in). It is an combined initiative by all the IITs,
IISERs and IISc,Banglore staff. There are around 40 lectures in each course.
This is not restricted to only CS, they have ECE, Mechanical, Civil, Mining,
Ocean tech, Electrical and what not.

(You all may face some problem understanding the accent).

