4 ms·
If I were stranded on an island with the laptop I used in college and a power source, I'd have a pretty good idea of how to stumble through: - A multithreaded
by superuser2 10y ago
If I were stranded on an island with the laptop I used in college and a power source, I'd have a pretty good idea of how to stumble through:
- A multithreaded UNIX-like operating system with user programs, system calls, and a filesystem, with reasonable (if not entirely optimal) caching strategies.
- A TCP/IP stack for that operating system.
- An authenticated encrypted channel over my TCP/IP stack with forward secrecy by building a pseudrandom function up to a stream cipher, RSA with OAEP, Diffie-Helman, etc.
- Network services from the RFCs in C (we did a router and IRC).
- A high-level programming language with support for both functional and OO idioms based on the typed lambda calculus with recursion, lists, records, tuples, ref cells, subtyping, etc.
- A lexer, typechecker, and interpreter for that language using parser generator tools, a recursive descent parser, or a shift-reduce parser in a pushdown automata model.
- A formal specification of the evaluation and typing rules and a type soundness proof for that lanugage.
- A distributed KV store with Paxos, Raft, or Byzantine Generals running on my encrypted channel and written in my language (we used 0MQ and were given a 0MQ broker that could be told to drop messages for testing purposes).
- Greedy, dynamic programming, network flow, and ILP algorithms with proofs of correctness and efficiency.
My class work repositories put me about three quarters of the way there.
I'm sure bootcamps can teach people enough to tread water in a dynamic language web framework, and that meets real business needs and adds real value. But college is a chance to go deeper.
I know nobody is paying us to build our own lightsabers. But - and call me old fashioned if you'd like - I think a professional ought to be able to build his own lightsaber anyway.