Remix.run Logo
tonyarkles 2 days ago

> The issue is the level of mathematical sophistication one has when a certain concept is introduced. That often defines or at least heavily influences how one thinks about it forever.

That was one of the most interesting things of my EE/CS dual-degree and the exact concept you're describing has stuck with me for a very long time... and very much influences how I teach things when I'm in that role.

EE taught basic linear algebra in 1st year as a necessity. We didn't understand how or why anything worked, we were just taught how to turn the crank and get answers out. Eigenvectors, determinants, Gauss-Jordan elimination, Cramer's rule, etc. weren't taught with any kind of theoretical underpinnings. My CS degree required me to take an upper years linear algebra course from the math department; after taking that, my EE skills improved dramatically.

CS taught algorithms early and often. EE didn't really touch on them at all, except when a specific one was needed to solve a specific problem. I remember sitting in a 4th year Digital Communications course where we were learning about Viterbi decoders. The professor was having a hard time explaining it by drawing a lattice and showing how you do the computations, the students were completely lost. My friend and I were looking at what was going on and both had this lightbulb moment at the same time. "Oh, this is just a dynamic programming problem."

EE taught us way more calculus than CS did. In a CS systems modelling course we were learning about continuous-time and discrete-time state-space models. Most of the students were having a super hard time with dx/dt = A*x (x as a real vector, A as a matrix)... which makes sense since they'd only ever done single-variable calculus. The prof taught some specific technique that applied to a specific form of the problem and that was enough for students to be able to turn the crank, but no one understood why it worked.