The Man Who Revolutionized Computer Science With Math
Video Statistics and Information
Channel: Quanta Magazine
Views: 2,328,498
Rating: undefined out of 5
Keywords: science, quanta, quanta magazine, explainer, science explainer, science video, educational video
Id: rkZzg7Vowao
Channel Id: undefined
Length: 7min 50sec (470 seconds)
Published: Tue May 17 2022
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.
IMO a better analogy would be ".. they're being taught writing by being taught grammar and that doesn't make much sense".
Programmers are taught the basic syntax of programming but very little on overall program design and flow. How to write code that is maintainable, performant and scalable is not easy, not taught and, lets be honest, not even that valued in the industry. If it was appropriately valued there would be no ageism and experienced developers would be valued as developers instead of as technical managers.
This is something I bring up often when discussing visual programming languages
if you think making programming graphical will make it easier then you've confused typing to be "the hard part"
but also if you think visual programming isn't real programming, you've confused typing to be "the hard part"
Proceeds to show images of HTML code
If you want to learn to play guitar, you do really need to learn how to do a chord or two and how to strum. Music theory can be taught in other ways and alongside learning to play the guitar, but if the aim is to play the guitar not just understand music theory, then the practical and physical act has to be learnt and practiced too.
In the same way, learning to write code is the first step in being able to experiment and learn through doing. But of course at the same time, this doesn't mean it's mandatory or even the best place to start from scratch, that could well be Scratch or similar depending on prior computer experience and age.
Yeah but the theory only makes sense when practicing. You need both algorithm courses and coding courses to succeed.
It is just too difficult to integrate Leslie's TLA+ in software design. Far too time consuming. I tried a couple of times - it was useful to validate the design of a distributed system, but we struggled with TLA+ and it was also an uphill battle convincing other coders to buy into the same. Most folks are happy with intensive testing over formal correctness checking. Maybe it becomes easier with experience ?
I wish popular compilers for technologies like Java, Go, C++ offered something like a special dialect for distributed state machines, with restricted syntax and formal logic checking on the same, so this could be part of the standard CICD build.
So what is the correct way to teach programming? What reference books are there in the store I can refer to?
This comes down to the difference between software engineering and computer science. Computer science is closer to math while software engineering is closer to engineering. As a software engineer you will end up combining established best practices (libraries) creating a high quality product that meets the needs of the actual end user at scale while being maintainable. As a computer scientist you will end up creating algorithms and efficient solutions to specific challenges.... essentially the libraries that may then be applied by the software engineer. Both of them do programming/coding; for the type of programming by the computer scientist math is really important, for the type of programming by the software engineer math isn't as important.
Coding is so much more important then the math aspect of software engineering. I disagree with this completely. You can get a bachelors degree in computer science and have no clue how to code. You can get a degree in software engineering and easily know how to code and know all of the algorithms needed to find the best path for a solution. Very rarely will people be doing math on a day to day basis with their career⦠if at all.
Computer science is a math degree. You could be good at math but terrible at programming and visa versus. However being good at programming and bad at math will get you much further in this field.