The main reason for this is because self-taught programmers FOCUS ON ONE LANGUAGE. I realized that I went through all the courses I needed to learn from university in different programming languages for some strange reason, and that just left me all over the place as a developer.
It is an easy fix, teach only one language for the 6 core areas of programming, namely:
1) Intro to programming (variables, loops, conditions etc. up to functions)
2) Complexity management, usually OOP
3) Building a GUI (it is not trivial and needs to be a course on its own)
4) Connecting to a database (also not trivial)
5) Data Structures and Algorithms
6) Compilers and programming languages (basically popping the hood of programming)
In school, after learning OOP in Java we switched to web dev and learned javascript and php. We completely abandoned learning GUI and DB for java.
Algorithms was taught by a visiting lecturer in C++ and after mid-sem we switched to Data Structures in java??
The universities are doing a fine job, but please just stick to one programming language for these core areas and everything will be great.
I came to this conclusion before AI took over. It will be interesting to see how AI changes the Computer Science curriculum in the years to come.
Social media is lipstick on a pig. There's verbal and physical abuse, exclusion, name-calling, stalking and all sorts of inhumane behaviour towards each other in real life. Social media just digitizes that and is a reflection of the ugly parts of the socializing aspect of human life.
The ~10% good that comes from keeping in touch with people, for example, is not really worth it especially for kids.
Whatever you do you are going to have to deal with the negative aspects of society in-person, and we've all kind of accepted that. Social media just doubles the problem.
The difference is that physical abuse, name-calling and stalking require the people to be actually present and risk (physical) consequences.
When done from the safety of one's own couch at home, surrounded by family, there are no consequences to name-calling, cyber-stalking or spreading rumours about someone.
Could a not-too trivial example like the difference between a Java sudoko solver and a lisp version with all the bells and whistles of FP such as functions as data and return values, recursion and macros be used to illustrate the benefits?
Here's one in Clojure using its core.logic library. I'd say it's pretty neat. You can do something similar in something like Prolog, but a Java implementation would look very different.
I disagree, you are future-proofing yourself as the software development industry has no relatively fixed career-path. What you are using today is very likely to evolve you need to be highly educated to adapt successfully.
As we know from Moore's Law, new tech will emerge and it would most likely be based on existing tech you should have learned from school.
You are going to be just as well-paid as a networking, hardware or general software engineer and it will look good on your CV.
Also this forum is littered with << after all these years in tech i feel like i know nothing >> career existential angst. So learning that stuff in school would avoid that issue.
For Java libGDX[0] is okay.
This answer is most likely based on what programming language you use most. The C++ folks will like Unreal and the JS folks have their preference as well.
Rushing throw math for Computer Science/Engineering courses has become necessary, mainly because there is a lot more CS to learn,(data science, ai and lots more to come) but it comes at a cost.
I am constantly running into people who feel like they are missing something in their CS pedagogy without this rigorous math knowledge.
After many false starts to correct this, I think a good plan would be to enrol in an affordable long distance or online course in math - so it's not full time - and stick to a timetable and deadlines in order to faithfully complete the work and become as familiar with the material as it pertains to you, just passing where you need to pass and diving deep when it directly affects you and your work.
It is an easy fix, teach only one language for the 6 core areas of programming, namely:
1) Intro to programming (variables, loops, conditions etc. up to functions) 2) Complexity management, usually OOP 3) Building a GUI (it is not trivial and needs to be a course on its own) 4) Connecting to a database (also not trivial) 5) Data Structures and Algorithms 6) Compilers and programming languages (basically popping the hood of programming)
In school, after learning OOP in Java we switched to web dev and learned javascript and php. We completely abandoned learning GUI and DB for java.
Algorithms was taught by a visiting lecturer in C++ and after mid-sem we switched to Data Structures in java??
The universities are doing a fine job, but please just stick to one programming language for these core areas and everything will be great.
I came to this conclusion before AI took over. It will be interesting to see how AI changes the Computer Science curriculum in the years to come.