I'm a senior in college and this is my last semester. I'm struggling to decide which class I should take.<p>There are two options: Theoretical Foundations of Computer Science (The topics covered include: regular, context-free and context-sensitive languages, finite state automata, Turing machines, decidability, and computational complexity) or Networks and Cryptography (Networking topics will include layered network structure, signaling methods, error detection and correction, flow control, routing, and protocol design and verification. Cryptographic topics will include classical cryptosystems, the data encryption standard, public-key cryptography, key escrow systems, and public policy on encryption.)<p>The added thing is that if I take Networks I won't have class on Friday, which I wanted to use to do personal projects or schedule interviews.<p>So my question is, for veterans in this industry, if you were me which class would you take? Which one is ultimately more useful? I find the two classes equally interesting.