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.
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?
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.
As a developer you need to have a Documents, Downloads and Development folder. I was always shuffling things around in documents and downloads till i realised I need a Development folder.
I'm sure i read it somewhere but never took it seriously. It is one of those things that needs to be included in CS 000 (how to use command line, github etc.)
I recommend the Deitel[0] series for Python and C family languages like Java, C# etc.
With hundreds of complete examples to follow (not code snippets) and exercises to challenge you, you will do better with these books as a beginner.
My strategy is to get to the 10th chapter of the book skipping the exercises, then go back and try them with a better overall understanding of the language and its nuances.
Applied Economics: Thinking Beyond Stage One by economist Thomas Sowell[0] explores this in good detail, applying it to political and economic policies, in his book.
Housing policies, medicare and today's problem of defund the police can be better analysed if the framework of second-order thinking is used to view the pros and cons of such policies and their subsequent ramifications.
Second-order thinking is a great mental model to have and helps us address some of the cognitive biases that get in our way when making choices.
To me this form of thinking is evident in chess, the evaluation necessary to make a single move gets us to look at the consequences after the third and fourth move before a final decision is made.
I believe when the time allows for it we should really consider the future ramifications of our actions before making a move.
Why are there so many quantum computing deniers though? From the speed, to the solving of intractable problems, to even the building of powerful q-computers, there seems to be a lot of push-back on all milestones and achievements for this new tech.
Ocean's 12 is one of the greatest movies ever made.
It is a reality TV-esque take on the lives of master thieves. This begs the question, what does the life of a master thief look like? Is it that of the Night Fox? A wealthy, sophisticated French aristocrat, well-educated and very serious about his craft. Someone who has mastered the art of capoeira to evade security laser beams for example, and goes to such great lengths to be the best?
The second question is that of why? Why do you do what you do? What is the Night Fox's motivation for being a master thief? The relentless pursuit of perfection and pulling off the greatest heist ever? Just becoming the best for being the best sake?
I would like to present a real life example to you: the ongoing Messi versus Ronaldo debate.
Is the greatest football player an inimitable, natural-born artist or a perfection obsessed workaholic who probably owns a cryogenic chamber in which he sleeps every night to maintain peek physical fitness?
With these questions in mind, a second and third viewing of the Ocean's 12 movie will help you decide the debate of who is the greatest thief of them all.
If you were disappointed because you were looking for a heist movie with cool gadgets and mind-freak tricks, you can google "heist movie" and watch whatever pops up first (Now You See Me).
Space startups have really taken off over the last decade, thanks to big players like Blue Origin, Space X and Virgin Galactic. There are a lot of other entrants, in what can now genuinely be called an industry, thanks to dedicated startup accelerators like the Founder Institute Space Program.
"Opportunities are flourishing today in Space Tech. There's now an increasingly connected ecosystem to support even pre-seed stage aerospace founders - and Founder Institute can increase any aspiring space technology entrepreneur's chances of success, by providing the necessary founder mindset and key network connections" [0]
No. Would you then learn assembly to understand C better?
Once you have the basics of syntax and semantics your next step is the OOP and FP paradigms used in Python for simple programs.
Then a deep dive for a solid grasp of data structures and algorithms would be the last step.
After you have these 3, you should be able to write mid to high level programs comfortably.
Which of these 3 aspects do you feel C would help you understand better?
Maybe you are asking this question because you want to understand programming languages and how they work in which case a course in compilers and programming languages from a MOOC would help.
Time to do this - a minimum of one week. Learn all the contents of a chapter over a period of one week. This includes answering the questions at the end of the chapter.
If you happen to finish the contents before the end of the week, rest and start the next chapter the following week.
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.