OP here. Link is in the github repo! You'll find my motivations for making this in the readme. It's still quite rough but I'd love to get some early feedback on the idea.
I can speak to a few anecdotal factors having recently graduated from Stanford.
1) The current tech boom.
There's the perception of being able to easily create a startup or to get a programming job at a tech company. Some major in computer science also for the technical skills it gives even though they plan not to pursue programming as a job. They may want to become a PM, or a related non day-to-day programming role for which understanding technical concepts is important.
2) Financial downturn of 08.
Many students who would have previously majored in economics or finance have chosen computer science due to the folding of many investment banks as well as the increasing negative perception of working on Wall Street.
3) Increase in diversity of the major.
The major has become more interdisciplinary. You used to be required to take very "hardcore" classes like operating systems and compilers. Now though with the rise of fields like HCI the major has become more diverse.
4) Social tipping-point.
There is a common joke at Stanford that everyone is a CS major. More people majoring in CS means more help from peers who have been through the same classes and can help out. This social support leads to the positive feedback loop of more people entering the major.
#4 is interesting I've never heard that before. I recently graduated as well but from a heavily liberal-arts oriented uni. Most of my friends didn't even know a CS major even existed.
> There's the perception of being able to easily create a startup or to get a programming job at a tech company
Yeah a lot of people believe simply having a CS degree is a shoo-in for any job. However, if you're studying CS you probably want to work at a top-tier corporate or startup and neither is easy for most grads.
A lot of commenters referred to money being the biggest driver but I think that's only a half truth. Rather, job security seems to be the most logical reason to study computer science. No matter who you talk to, in any field, there's a huge consensus that having knowledge and experience with computers increase your employment prospects (I'm sure this could be proved by scanning job boards). Combined with the current job market and popular opinion that college may not be worth it (especially for non-STEM majors), I'm not the least bit surprised that CS has gained such an enrollment.
Anecdotally, my experiences confirm this. My brother, who before, had never even tried to program, is currently a CS major. Most of his friends are too. They don't care about startups or startup jobs, they want secure jobs at big companies.
Yeah I think that's an important distinction. A lot of kids are picking up CS as a second major or as a minor because it's believed to make you more marketable for a non-tech field.
I posted a text description but just found out that you can't post both in a submission.
This is still in the very alpha stages but here are the main ideas of the project:
1) Simple, no-frill dashboard for managing posts (files). Once you're happy with a file you can publish it to your blog.
2) Key bindings (right now the only main ones are ctrl-c for code formatting and ctrl-l for linking). Eventually these will be completely user configurable.
3) Relational (not in the db sense): you can tag your files with labels and fast link text in your files to other files.
The best way to learn JS is very much the same as the best way to learn anything. If you don't know how to learn something effectively then no tool can help you.
What do I mean by knowing how to learn effectively?
* Understanding the basics (js is a dynamically typed scripting language)
* Understanding core concepts (in JavaScript, one core idea is prototypes. Another one is the keyword this which trips a lot of people up)
* Understanding all the connections (variables are actually object properties!)
It's a great tool for memorizing things that need to be rote-memorized. Chinese characters often fall into that category. Arcane Chemistry vocabulary probably do as well.
It's just a flash card system on steroids. If you know how to use a flash card system appropriately then this is a pretty powerful substitute.
Certainly flash card systems shine on things that need to be rote-memorized, but you can "hack" the system by engineering your questions in a certain way, like the "Why" questions mentioned by the author of linked article on parent comment.
It's just a review tool designed for storing Question / Answer pairs to your long-term memory. Nothing else.
If that means using it to review and remember specific answers to WHY questions (Why is the sky blue?) for the rest of your life, all power to you. Keep reviewing. However, I think the moment you start asking these conceptual questions you're no longer just trying to remember - you're trying to understand. That's not what flash-cards are designed for.
Instead, you might actually want to look at the sky. Do experiments. Meet experts.
In the process, you will come up with new questions and new answers to old questions. More importantly, as a result of this adventure you will not only remember, but also learn. I wonder if Newton used flash-cards.
Yes, is is designed for storing QA pairs, but it doesn't mean it can't be used for anything else.
I believe you misunderstood the use I have in mind for the WHY questions. The idea is not to create cards for things you are trying to understand, but for things you already understood.
These things you describe are about learning. Flash cards/Spaced Repetition Systems come AFTER learning. Say, for example, you meet an expert and because of that have a great insight about issue X. Truly, real "insights" take longer to forget than rote memorized facts. But can you say you will remember this insight in 6 months if you don't serendipitously encounter it again? 1 year? 5 years?
That's where a reviewing system comes into place. And it's not because such a system is designed for things that mostly need to be rote memorized that you can't use the "question" as a trigger to revisit something of a different nature.