IlyaShpitser comments on Physics grad student: how to build employability in programming & finance - Less Wrong

8 Post author: Stabilizer 08 January 2014 07:36PM

You are viewing a comment permalink. View the original post to see all comments and the full post content.

Comments (50)

You are viewing a single comment's thread. Show more comments above.

Comment author: IlyaShpitser 09 January 2014 08:58:53PM *  7 points [-]

This is a fun game you propose. Here are what I think the important ideas in CS are (no particular order):

(a) turing universality,

(b) distinction of p vs np,

(c) dynamic programming/memoization,

(d) styles: declarative/functional/imperative/oo,

(e) metaprogramming (including algs as data),

(f) the Pareto principle (both in optimization and development),

(g) what/how distinction (abstraction),

(h) undecidability (can't tell what a general function does by looking at it).


Might add more as I think of them. I don't remember my SICP so well anymore, but it talks about (c), (d), (e), and (g). (f) is a general engineering principle, not specific to CS, (a), (b) and (h) are on the theory of computation side.

Comment author: asr 09 January 2014 10:05:14PM 5 points [-]

Some big ideas that occur to me, from a systems point of view:

  • The notion of hiding implementation behind interfaces.

  • The notion of functional layering -- that if the system offers some limited set of features, you can implement other features purely in terms of those lower-level features. This is a key idea behind modern networks.

  • The notion of building reliable systems out of unreliable parts, using redundancy and retries. This is the key technique in such varied systems as RAID, TCP/IP and MapReduce.

  • The notion of enforcing safety properties in a programming language. The big insight of programming language design is that you can make it impossible for some mistakes to arise in a given language.

I never actually read SICP so I can't comment on which of those ideas are in the book.

Comment author: IlyaShpitser 10 January 2014 07:48:24PM 2 points [-]

In my mind the first two bullet points are under (g) (I may have been too abstract in my description of (g), but what I had in mind would include both of these).