Recently, I have started interviewing interns in their final semester for an internship and to my surprise I frequently encounter a lack in what I would call foundational computer science knowledge. I don't mean data structures and algorithms, but for example<p>* Database Systems (relational algebra, SQL)<p>* Concurrent Programming<p>* Network Programming<p>It seems most are exposed to them partially through project work but without the base knowledge.<p>Is this typical for CS undergraduate degrees because you get to pick your own classes?