Linked by Howard Fosdick on Fri 13th Apr 2012 20:21 UTC
Six-month-old web site Codecademy claims you can learn programming through its online tutorials. The free modules on JavaScript are now available. The site also allows anyone to post their own programming courses. The site has good funding, but question is: can you really learn programming this way? One blogger enthuses that Codecademy's approach "looks like the future of learning to me," while another slams it saying "Seriously? Wow, bull**** badging and sh**ty pedagogy wins the day in ed-tech investing." What do you think?

Member since:
2011-01-28

phoehne,

That's a well rounded and respectable view.

"Knowing how to code doesn't provide the mathematical tools to analyze algorithms to determine what algorithm may or may not be best, given small n, usually sorted large n, or why you need to randomize the order of the input array before you sort."

I'm stuck contemplating whether you meant that literally or if your just alluding to quicksort's choice of a pivot point? Some implementations pick the median of three random elements, which seems like a better idea than randomizing the input list. But I'll wait for you to elaborate.

I've found many degreed CS professionals who have troubling thinking out of the box. For example, many seem to be programmed to believe O(Nlog(N)) sort algorithms cannot be beat. I'm not sure why they overlook non-comparison based algorithms like bucket sort. Sorting on an absolute basis can easily yield O(N) algorithms.

Bucket sort gets dismissed because people were told or assume that a memory slot needs to be allocated for every possible value a variable could hold, such that a 16bit variable needs 64K slots, 32bit needs 4B slots, 64bit needs 2^64 slots, however it's possible to create a sparse bucket sort with O(S*N) efficiency, and because S is a constant based on sizeof(int) it might be considered O(N) as well.

I caught one of my professors off guard when I sent him my own bucket sorting variant that sorted arbitrary strings. The key is that every single string of similar length takes the same amount of time to insert regardless of the number of strings already inserted. This is possible because the string doesn't have to be compared against any other strings. I wouldn't have learned about that sticking with the curriculum.

Not to downplay merit in a university education, but be aware that it comes with the risk of group think: college students are more often taught to copy knowledge rather than to create it themselves.

Edited 2012-04-14 21:05 UTC