| ▲ | 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. | ||