Whenever I try to catch up with maths (in Khan Academy and elsewhere), I always end up in an awkward state where I keep recursively researching less and less advanced subjects because of gaps of various sizes in my fundamental knowledge. It's incredibly demotivating.
So I made a commitment: I decided I would work through Khan Academy math for 1-hour a day for 1 year. I started with pre-K [1] (specifically counting) and watched every video and did every single exercise in order. I focused on mastery. I didn't rush myself, and I did not continue until I felt completely confident in the material. I just did this for a year. I think I go through roughly algebra 2. In my mind, it is critical to combine explicit knowledge (watch videos) with tactic knowledge [2] (do exercises). For example, you need to understand what a logarithm is conceptually but you also just need to do problems to get a feel for it. So this is fundamentally different than learning-by-grazing or just reading a book.
I could go on and on, but let me just say that it changed my relationship to math in a deep way.
[1] https://www.khanacademy.org/math/k-8-grades [2] https://commoncog.com/tacit-knowledge-is-a-real-thing/
Having no education, I only did menial work for money. Yet in my early twenties, I was contemplating my lack of scholarship and realized I wanted to fill the holes in my education. I went to Khan Academy and, as you did, started with pre-K and worked my way linearly through up to pre-college math. Thankfully, I was soon laid off from my job, which was an opportunity to start attending community college.
I then transferred to a state school and double majored in applied math and computer science. Now I’m doing theoretical research as a PhD student in computer science.
The 8-year path from pre-K math to graduate-level math classes and now being published has been a journey. And I’m deeply grateful for resources like Khan Academy.
Deciding to commit to a daily study of math transformed my life.
Teaching yourself Calculus I and Calculus II after obtaining High School mathematical literacy is not too bad. Teaching yourself Differential Equations or even Functional Analysis after obtaining the pre-reqs is actually quite easy. But teaching yourself high school or especially middle school mathematics requires a TON of dedication.
It's not impossible, of course, but "The Basics" are where you really benefit from the help of a professional educator.
For this reason, I recommend eschewing self-directed resources and enrolling in an "Applied Math" or "College Algebra" course at your local community college. These courses are basically "high school mathematics for people who never learned or forgot high school mathematics". Depending on where you live, the "College Algebra" course at your local Community College is probably very cheap or free and available as an evening and/or online course. You usually do not need to enroll in a degree program to take the course.
Once you make it through "College Algebra" you can return to self-directed learning.
Community Colleges are a vastly under-utilized resource, particularly for these "very fundamental knowledge gaps" where self-directed learning is much more difficult.
https://mathacademy.com/courses/mathematical-foundations-i https://mathacademy.com/courses/mathematical-foundations-ii https://mathacademy.com/courses/mathematical-foundations-iii
In addition, we have courses on Linear Algebra and Mathematics for Machine Learning, with more coming soon:
https://mathacademy.com/courses/linear-algebra https://mathacademy.com/courses/mathematics-for-machine-lear...
The system is mastery based, lightly gamified, and completely automated. Our algorithms intelligently apply spaced-repetition to a hierarchical knowledge graph of over 3,000 mathematical concepts to make it substantially more efficient than a traditional course (typically on the order of 4X or more).
I'm a founder and would be happy to answer any questions.
Then build up fluency in the basic manipulations: do lots and lots and lots of exercises until those manipulations become second nature. You might need to start with fractions[2], and that's fine. One of the nice things about math at the elementary level is that you nearly always are guaranteed to get better with practice. This absolutely isn't the case for proof-based math, where you really need to be intentional about truly digesting the material and thinking careful about the ideas. But if you're shaky on absolute fundamentals, you can get incredibly far with grinding.
At some point you'll need to engage with the ideas, but I think that's easier once you've built up some pattern recognition. But others will (surely) disagree
[1] https://www.edweek.org/teaching-learning/opinion-how-to-help...
[2] https://www.edweek.org/teaching-learning/fraction-phobia-the...
My oldest daughter was a terrible student. But she would say to me "If they taught history class the way you explain historical events around the dinner table, I would have been a lot more interested in studying."
So point being - it's probably not you, a lot of it really is the way we approach k-12 education. In hindsight, I'm not sure college is any better and may be worse what with the approach of hazing and weeding out.
I remember reading somewhere, do the implementation of it along side fundamentals. The reason you are studying fundamentals to progress ahead, do that course along side too. This helps one grasp the fundamentals quickly and more importantly to know which fundamentals you really need than to try to do everything and forget aspects of it later.
That being said, I am yet to implement that concept and get over false starts
If I don't get motivated from some external push I never get past a certain level. Every single thing I do in my life is like that even laundry. I must be chronic or maybe permanent procrastinator.
Try this course: https://www.edx.org/course/college-algebra-and-problem-solvi...
It uses the ALEKS system which identifies your weak points and brings you up to speed. Take notes during the process so you have something to reference in the future and won’t forget what you learned.
After you knock out the algebra course you’ll be ready for the precalculus course: https://www.edx.org/course/precalculus
The ALEKS system in the Precalculus course will also remediate anything you forgot from the Algebra course.
Hopefully this will help give you the confidence to go after more advanced maths once you finish both courses. Be kind to yourself, math, like anything, is a skill, it takes time and practice.
Even though I taught myself how to code, I never went back and learned math, so my level of knowledge is at a basic high school level. It can be embarrassing at times, and every now and then I think about trying to learn it.
Only one there seems to be is to basically rerun 12 years of math, which is really unpleasant because I know 80% of the work making it unrewarding and slow. I don’t know what I don’t know that is super demotivating, indeed.
Please let me know if they were helpful!
A parents job is to steer their kids not into superficial happiness found through whatever interested them at 16, but to actual long term happiness achieved through fulfillment, accomplishment, stability, and belonging.
If I ignored CS pushed by my father to focus on whatever interested me at 16 (pot, girls, metal music, wow), I’m not sure where id be, but I imagine it would be worse off.
2) Build your similar own projects as well
3) Try with electronics. For that age group I have had good succes with MicroPython on ESP32’s + various sensors/actuators. The first thing I do is connect an LED strip with RGB LED’s and let them play with that.
4) Find him peers with the same interest. In that age peers are better partners. You can still help facilitate a bit, but the best would be to find a Coding club.
I found it difficult to do with a person who did not get how to use control flow and can not mentally combine multiple control flow constructs.
Spreadsheets have many advantages that get overlooked by pushing for a "real language" while jump into a programming language involves learning a lot of new concepts at once.
For example, spreadsheets make all the memory visible at once. It makes sense like a piece of paper. You also have intuitive understanding of your algorithms memory consumption. Computing something for N by N obviously uses N^2 cells. Many problems will be solved in 2^n which will mean dragging down that cell for a short while at low values and suddenly a very long while.
https://www.routledge.com/Introduction-to-Digital-Music-with...
Look up "aol chat coms" for inspiration from the 90s.
There used to be bots that played a scrambler game in AOL chat, you could make a chess-related one.
Two years of teaching high school CS
Self-study is a road with very little guidance to understand which part is more important to study, and which just needs to be understood so the pressure to make sure one knows everything makes it difficult to progress at a consistent pace.
You can probably retire on a 6% coupon if you save a lot, but you'll have a much more comfortable retirement if you can clip a 15% coupon on those same savings.
Discrete Mathematics is usually some mish-mash of formal logic, induction, combinatorics, number theory, and baby probability. You can get away without knowing these things, but studying them doesn't take very long (14 weeks, part time?!) and pays a very handsome dividend. A foundation in this sort of knowledge, and practice operationalizing it, is often the difference between $60K/yr and $100K+/yr for junior developers. The size of the dividend payment generally increases as one's career progresses, assuming you stay on the IC track.
Induction and formal logic are useful for reasoning about programs that contain loops. Often you can get away with intuitive understanding, and many people program for years before encountering problems where formal and structured reasoning becomes necessary (myself included!). But most well-paid developers will encounter a problem or two each year where reasoning about non-trivial loops is required and where the basics of induction and formal logic are tremendously helpful.
Exposure to basic thinking techniques in combinatorics is essential for reasoning even informally about time and resource complexity. Writing code that relies on non-trivial time and resource complexity analyses is occasionally necessary in most well-paying developer positions.
The very basics of number theory is useful for understanding, conceptually, how cryptography works. This isn't essential for most dev positions. But it is helpful knowledge.
Baby probability is increasingly required knowledge for many dev positions, and not just because of the explosion of AI/ML/DS.
Again, you don't need this material often. You can probably go an entire career avoiding the brutal pain of spending 14 weeks, 1-2 hours per work day, studying simple mathematics. But the ability to pull these skills out when they're needed is the difference between commodity "keep him around if we have billable hours" bootcamp labor and in-demand "smart and we really need to keep him around and eventually promote him to principal" labor.
:intro to CS (simple JAVA and simple coding) :linear algebra 1 :introduction to logic (simple set theory(though the course got comparatively deep and proved induction as well as defined relations rather throughouly. most students failed.) :Digital systems (basic digital logic)
semester 2 is: :data structures :linear algebra 2 :infitisimal math 1 :practical course on usages of math :combinatorics\basic discrete math (No generator functions or the like. Basic counting, basic graph theory, basic discrete probability)
This is for a university that has a technical approach to CS. It's not considered very mathematical, so view it as a sign that calc1/2 and linear algebra 1/2 is needed. they are fun courses! Go learn the math courses with the mathematicians if you've felt a connection to math, there is a definite change in the feelings of the class. It's the "same" material but in one class you will think like a mathematician and in the other like an engineer.
Introduction to Mathematical Thinking by Keith Devlin (Stanford) https://www.coursera.org/learn/mathematical-thinking
I want to make a non C++ workbook for that course to write an s3-based relational database (for fun), but I don’t have time for other projects because of poor time management
I have gaps in my own knowledge, so I keep going through stuff, to find what I'm missing and fill it in. Eg I'm not great on O(x) calculations.