4 ms·
I don't mean this pejoratively, but is your goal pure education? Or more training for employment? For more pure education value, I would suggest that you teac
by __d 8y ago
I don't mean this pejoratively, but is your goal pure education? Or more training for employment?
For more pure education value, I would suggest that you teach C alongside a computer architecture course. In that way, a student comes to an understanding of what the hardware is doing at a fairly low level of abstraction, and how to control it using a language that's not far removed.
I would not suggest C++ simply because it's so big, and effectively crams multiple different languages into a single syntax. Perhaps as a 3rd year elective?
Similarly, I'd suggest either Scala or Haskell (or Scheme) to give them experience with something other than a procedural / object-oriented paradigm.
None of this will directly help them get a job, although it will be of ongoing benefit to their eventual employers for the duration of their careers.
If your institution's focus is more on training for employment, then Java, JavaScript and/or Swift are probably better options to add to their skillset, alongside Python and Go.
Yes, of course, Java, C# and C++ are here for decades to come, but a few weeks of nights and weekends at home or a couple of online courses will pick up their syntax if the student has had a sufficiently broad background.
- vinni2 8y ago> I don't mean this pejoratively, but is your goal pure education? Or more training for employment? The goal is to strike a good balance between them. Our priority is to train good software developers and data scientists but at the same time let them show some relevant skills on their resume. > For more pure education value, I would suggest that you teach C alongside a computer architecture course. In that way, a student comes to an understanding of what the hardware is doing at a fairly low level of abstraction, and how to control it using a language that's not far removed. They already have a Computer Architecture course which teaches assembly and a bit of C (not sufficiently detailed). Sorry forgot to mention that. > Similarly, I'd suggest either Scala or Haskell (or Scheme) to give them experience with something other than a procedural / object-oriented paradigm. > None of this will directly help them get a job, although it will be of ongoing benefit to their eventual employers for the duration of their careers. Yes this certainly makes sense. Which is why I mentioned Scala as well. Also even though the course has the title "advanced programming" the classroom lectures will be theoretical and they will have programming assignments / projects which apply those concepts and we need to pick a language for that. > If your institution's focus is more on training for employment, then Java, JavaScript and/or Swift are probably better options to add to their skillset, alongside Python and Go. I didn't mention it but we also have a web programming course which covers php and javascript. We probably don't want them to focus on any languages which are exclusive to specific platforms like Swift.
- gtycomb 8y agoI agree with you very much so. A little story -- when my son was in his 3rd grade elementary, I showed him a little Python with turtle graphics. He absorbed it in like his Sponge Bob. I still remember the day when he took an old duck taped laptop of mine to school and his teacher had him do a demo before the class, explaining the python constructs that drove the turtle. The school made Python available at its labs for all students after that. Times changed so much from where I started! Now computer languages are poetry that we all can learn, and its a necessary tool for any career path. When we talk about _CS_ Undergraduate training though, languages are peripheral and we need to get much deeper -- theoretical and hands-on grounding in hardware, software, network architectures, mastering CS fundamentals that help tackle organizational complexities that new tools and methodologies bring upon us on a daily basis (today ES6, webpack, mobility, data science, networks, etc. ) along with a large legacy world running SAP, Microsoft, etc. out there...and don't forget having enough on accounting, economics, and management under the belt.