A solid computer science education would have helped him understand this. Not required for a 'normal' programmer but the more interesting parts of our trade exist in Computer Science rather than Software Engineering.
Eh. The first time I saw typing rules in class was in a moderately specialized graduate course, so it would have been very easy to get a perfectly good CS education without learning about them.
Of course, I go to a university that seems very biased towards practical engineering sorts of topics over theory, so your experience may vary.
In Univ of Cambridge CS course it's covered in second year undergraduate material - see http://www.cl.cam.ac.uk/teaching/1213/Types/ (though not referred to by name explicitly).
Yeah, CS programs vary. At a SUNY school about 8 years ago, my experience was that it veered slightly more towards the practical, at least to the extent that we spent relatively little time with complex mathematical notation as we learned CS concepts.
Except for basic stuff like set theory and Boolean logic, math was for the required math classes.
If you take a class in compilers you should see these sorts of inference rules when talking about operational semantics. Though maybe it isn't as popular to use operational semantics anymore. It's very useful to define rules in this syntax when working on semantic analysis and code generation.
I didn't get the background really necessary to really understand the type-theory parts of this notation until I took a graduate course in programming language theory.
Yeah, at my school operational semantics was only covered in that same PL theory course. The undergraduate programming languages/compilers course never went into it, unfortunately.
Computer science is a very wide field these days. I am a computer scientist but my education (math-wise) mostly focused on numerical math, not high-level symbolic logic. Sure, I could understand it if I took the time, but it certainly looks like abracadabra to me at first glance :-)
Indeed interesting how different educations differ. We certainly learned some of that, but it was never the center of attention. Geometric algorithms were another larger focus. Ofc there is so much to learn and it's only possible to confer part of that in the 4-5 years.
Ha! I think you'll find that's a matter of opinion.
Personally, I loved studying CS (my degree was in logic so I straddled the worlds of Math and CS). It's a topic I find infinitely interesting.
Having siad that, Engineering is also very interesting. All the CS theory in the world isn't going to save you when you're trying to complete a large system full of lots of moving parts - many of whom are developers :)