It's also likely that these guys had already programmed before coming to the class. We all tend to get stuck when programming something for the first time. Second and third times are much smoother experiences.
> Before you can write your own subroutine, you have to know how. This means, to be practical, that you have written it before; which makes it difficult to get started. But give it a try. After writing the same subroutine a dozen times on as many computers and languages, you'll be pretty good at it.
Or, as Fred Brooks put it, “plan one to throw away”.
I'm Indian and I'm deeply frustrated and disappointed with this. My fear is that other mobile networks like Airtel will pick up dumb ass half-baked ideas like this and start charging for data from other non approved sources and for high cost paid wireless Internet to become the norm. I know Reliance is way too greedy, but this really is a new low. While wireless data costs in other countries are coming down, here we see the opposite trend. Fucking disgusting.
As a fellow Indian, I'd find that frustrating too.
Think of the alternative - suppose the government or judiciary finds this practice illegal and outlaws it. Imagine how unlikely this is and even if it does happen, how much bad press would be generated about "job-killing License Raj" etc.
>>how much bad press would be generated about "job-killing License Raj" etc.
I'm amazed many Indians still fall for this. The current day telecommunications companies came into being like knights in shining armor, to fight the decades of rot and stagnation in the ecosystem due to BSNL in the early 2000's.
Now their whole business is being disrupted in the same way, they disrupted BSNL's business. Price innovation, innovation in customer service and making services accessible to every one at affordable prices. Now when they are being given a dose of their own medicine, they want the government to come in and have regulations to save them.
Funny how capitalism works when you are at the receiving end.
If these people aren't stopped now they will let things stagnate and rot for the next half century. We all know how well that worked out.
Regardless of the press, a level playing field would in fact be a boon for upcoming businesses. Bad press is inevitable - look at the recent uproar in the US over net neutrality. There are still some people who want to make it look like the FCC is somehow restricting private enterprise which is A Bad Thing.
In my experience, practicing for competitions like GCJ, Topcoder help a LOT in two ways.
1. Raw coding skills - You'll reach a point where what's in your mind can be coded with very few stupid low level coding bugs like syntax errors, mis-assignments, initialization errors and such. Obviously this doesn't help with higher level issues like program design etc..
2. Algorithmic skills - You'll get VERY good at analyzing algorithmic complexity. You'll thoroughly understand common data structures like lists, vectors, trees, hash maps and other common algorithms.
Both these things are very much relevant to real life programming.
I eliminated all basic issues in my coding skills a few years ago by doing a lot of online challenges.
Drawing an analogy to writers, online challenges (or preparing for them) is like getting really good at sentence formation, vocabulary, paragraph formation, etc. This allows you to then focus on larger things like writing a paper and even comprehending other people's papers with much ease.
Code is the language of software engineering and computer science. Online competitions help internalize that so that it becomes second nature.
It's not true. If a poly-time solution is found for NP-hard problem, then it's not necessarily true that other NP-hard problems can be solved in polynomial time. However, if poly-time solution for an NP-hard implies every NP-complete (and thus every problem in NP) has a polynomial time solution.
How do you suggest that one should get past the initial hardships in learning clojure, assuming one is willing to put the needed effort? I've always wanted to learn a lisp and clojure seemed good, but couldn't find a good tutorial for lisp beginners.
The only advice that has helped me learn Clojure was: do not travel the road alone. Coming from a strong OO background, getting started posts/videos, REPL tutorials, and books only helped me to the point of reading and running Clojure. I agree with dizzystar that the documentation needs serious work, because I find myself reading the source for insight into how I should use things, or structure codebases. I think highly of Clojure, but don't expect it to be easy. Keep tabs with http://clojure.org/cheatsheet and http://clojuredocs.org open at all times, a REPL available at all times, and either use emacs/*nix or accept being in the suburbs.
I wish I had an answer, but I wasn't a Lisp beginner when I started with Clojure.
I'd definitely suggest using Linux, installing Clojure + Leiningen2, and getting familiar with the REPL. Also, getting Clojure Programming by Chad Emerick, et.al, is a solid first step to at least getting some things started.
Learning Clojure is like any other language: if you want to really dive in, you have to think of a project to get started in and take it step-by-step. I have not written algorithms or done scripting with Clojure, so I don't know how that stuff would work out. I feel there are better languages for that kind of stuff.
More generally, in Facebook's social graph, connections can be of different types. For e.g., for a user, 'likes' can be one type of an edge and 'followers'(people he follows) is of a different type, 'followed by'(people who follow him) is yet another type, so on. Many of these types can only be uni directional(e.g., all the above three examples). So, the social graph is a directed graph. Of course, the well known 'friends' connection is a bi-directional type of edge.
I assumed, I think incorrectly with hindsight, that the 'friends' connection dwarfed all others and would be separately optimised. I think you're right though - 'likes' and 'friends' probably don't dwarf each other at a guess, and as Scaevolus pointed out it wouldn't be fundamentally different anyway.