1,824 karma · joined May 16, 2011
Another area is functional logic programming. I've played around with Curry, and it's great and it feels even better than just having a logic DSL. The way you can represent strongly typed bi-directional declarative regular expression parsers is simply magic.
It's an exciting decade for logic :).
It's slightly vintage now, but there is nothing better for getting actual algorithmic problem solving ability per time invested than USACO at http://train.usaco.org/usacogate. It was developed by the US high school competitive programming coaches. If you can plow your way through the first couple of sections, even the toughest interview questions will seem easy.
Serious.
It is very easy to modify the program to suit your needs. If your friends do not care that much about endurance, I would suggest not doing the doubles version, keeping rep counts low (eight or less) and trying to increase the weight from week to week. They should also take in enough protein, perhaps through whey protein supplements, but definitely no steroids.
What's more important than anything of the above is how much effort you put into every workout. If they push themselves hard enough during the resistance training parts, there will be nothing to worry about and there's plenty of massive after-pictures from P90X online to prove this.
P90X will give you massive performance improvements for almost every physical activity. If you just want to bulk up, look up hypertrophy training. That will be much easier mentally if you don't necessarily care about fitness.
And there is nothing like seeing and feeling results three weeks in to take one through and beyond.
Algorithms and Data Structures needn't be about existing ones, although they are great examples. Algorithm design skills are a prerequisite for getting anything done efficiently, quickly and readably. Design patterns and software development models are secondary.
The case of data structures being available in libraries will lead to confusion as students will lack the ability to select the one with most appropriate performance characteristics. To them the only difference will be syntax. You could argue that one can look up complexity characteristics, but then how can you teach someone what is complexity without doing algorithms and data structures?
Algorithms and data structures are so prevalent, that they drive design issues that on the surface seem unrelated. Why map reduce is the query format we are using; how Clojure can have immutable, persistent yet still fast data structures; why public key cryptography is safe? And more importantly, algorithms and data structures teach us about tradeoffs.
It's not by accident that top companies test algorithm skills in interviews.
Also, some countries will have failed to advance in the first semi-final. Would they be even less likely to watch the second semi-final and the final?
If there would be a way to estimate the viewer's distribution for each show, it could improve the accuracy under this model.
Also, competing is a good idea. It helps you evaluate yourself and there's more motivation to do well. Having a rating of 1500, say, would place you in a good position to crack even the most competitive phone interviews.
I did TopCoder for a few years in high school, and now I can confidently and quickly get most of the algorithmic questions that companies ask. It takes a while to get there, but it's worth it.
The truth is that many of the bigger coms out there have multiple requirements, and will care more about your degree, problem solving ability and familiarity with formal computer science. Perhaps because they get so many applicants, they need to rely on metrics at some stage to cut down the bulk.
Even so, these things are worth knowing anyways and, speaking from experience, you can pick them up comfortably outside of a CS degree.
I was out of shape until I did P90X last summer and now I'm a different person altogether. You would be surprised how much can be done in three months of proper hard work. But it does not have to be a full blown fitness program. People aren't always aware of the options. When thinking of weight loss, jogging is the first thing that pops to mind. I have always found it extremely challenging mentally and I was never even overweight. Commit yourself to a few basketball games a week, or a cycle, a climb, a hike, skiing, whatever you enjoy. If you push that little bit harder every time and get some sweat going, get your heart racing, you will be surprised what it will do to your body.
Also a tip for motivation is to focus on performance. If you can run faster and farther, jump higher or feel better, just keep progressing and the weight will come down naturally.
Disagree about the physiological concern. Provided your elbows are resting on the table, it would be easy to get used to. Humans would adapt and it would be healthier than our current much talked about static postures.
In your own startup, it feels like every stroke counts, and you are doing something you find exciting and meaningful. It's likely not that startups offer more teaching experience, it's just that you're bound to get more out of something you really dive into.
Having said that, most (all?) college curricula do not cater for people intending to do startups, but they still have a lot to offer.
Instead of a chat or a todo app, why not create something cool? Try a small game, a remote control app, cloud music player, etc. Node won't slow you down.
This Java paradigm of "private final static" all over the place and its ugliness is one of the prime reasons Rich Hickey considered creating Clojure.
I was mostly interested in tagging and chunking and found it easy to reason about and use the relevant NLTK features with little auxiliary reading.
The only issues I found were with NLTK itself, e.g., Python version support, loading time, packages.