Will always be grateful my professors chose C++ as the introductory language. It had the downside of acting as a kind of filter for first-year CS students who had never written code before (which might be a counterargument to choosing a higher level language such as Python). But I think starting with a low-level language is critical for understanding fundamental CS concepts like how memory is allocated, stack vs heap memory, etc.
Same, on my course the introductory module was C for intro to programming principles and then Haskell (!) to introduce the functional paradigm. Starting out by learning a language that doesn't abstract anything away from you is certainly the way to go I think, helps you to realise there's no "magic" happening.
My one criticism of the blog post here is that it settles on Scala as a good introductory language. Although I love Scala, it has so many features (many of which are "magic") that it's very easy to lose sight of what's going on under the hood without going into very deep technical theory well beyond the scope of an introductory course. C seems like a much better intro as it can be used to teach the basics of control flow while, as you say, introducing lots of fundamental concepts, without layers upon layers of abstraction getting in the way.
2 comments
[ 3.3 ms ] story [ 17.1 ms ] threadMy one criticism of the blog post here is that it settles on Scala as a good introductory language. Although I love Scala, it has so many features (many of which are "magic") that it's very easy to lose sight of what's going on under the hood without going into very deep technical theory well beyond the scope of an introductory course. C seems like a much better intro as it can be used to teach the basics of control flow while, as you say, introducing lots of fundamental concepts, without layers upon layers of abstraction getting in the way.