What the next generation really needs lessons in:
- Humility
- Empathy
- Patience
- Self restraint and control
- Mindfulness/Awareness
- Disappointment
- Resilience
- Communication
- Listening
- Learning
- Financial independence and literacy
- Critical thinking
- Problem solving
- Self acceptance
Then we can focus on what area the person can best contribute in. Not everyone is going to suited for a job in programming or mathematics, or STEM as a whole.
What the next generation really needs is an economy where everyone can make a decent living with a modest effort, without having to desperately "outcompete" other job seekers. The US had that kind of economy at some point. Since we haven't lost any arcane secrets since then, it must be still achievable today.
The "decent living" of past generations is still available today, but past generations were poorer than you think they were, particularly for those who don't come from white and privileged backgrounds.
Exactly. My father was dirt poor. Grew up sharing his bedroom with his 4 brothers. Never had a new piece of clothing except underwear. And that was just normal for everyone he knew. Being a farmer in the 50s and 60s meant you were frequently very poor.
Although almost everyone is better off in material terms than they were two generations ago, I fear that the level of wealth required to live a "comfortable" life may have outpaced that increase. How many hours does a blue collar worker have to put in to live close to a grocery store and good schools? How much time do the working poor spend commuting? If you break your arm, what percentage of your income will be consumed by medical costs?
I don't have any data on this, but it's my hunch about why there's so much economic resentment these days.
"How many hours does a blue collar worker have to put in to live close to a grocery store and good schools?"
Depends if they work in a unionized industry.
"If you break your arm, what percentage of your income will be consumed by medical costs?"
In most industrial countries, including the US after the ACA, very little, because of health insurance.
"there's so much economic resentment these days."
That's inequality. When everyone around you is poor, except for a few rich folks you don't see often, it's not as big a deal. When you're constantly exposed to the things you don't/can't have, that can lead to resentment.
This goes back to your first sentence: "Although almost everyone is better off in material terms than they were two generations ago, I fear that the level of wealth required to live a "comfortable" life may have outpaced that increase."
The poor (in the U.S. anyway) are relatively worse off than they were 2 generations ago - the bottom 50% have seen very little growth in income in 50 years, while the top 50% have grown a lot more.
http://www.russellsage.org/sites/all/files/chartbook/Income%...
Not all countries are as bad as the US, particularly Canada or Europe, because they have strong redistribution systems (health and social insurance, etc.). But the trends aren't great.
I am self-employed and pay $6000 a year for high deductible health insurance for my family that has a $5000 deductible. So if my child breaks their arm and that is my only expense that year, then I paid $11,000 for their broken arm. Not cheap by any means. I'm sure lots of people on this forum work for companies that cover their whole cost of insurance and are out of touch with costs, but the "Affordable" Care Act has not made health insurance more affordable.
Insurance doesn't work that way. If you had a heart condition which required operation (so maybe 100k) you would also have paid 11k. You need to average over all expected outcomes to calculate whether it was affordable or expensive. In other countries (Europe and Canada) that 11k comes out as taxes instead of direct and indirect insurance costs.
What's a "modest effort"? And when did we have an economy based on a "modest effort"?
Work has never been easier in the US than it currently is. Record number of office workers, minimal number of farmers, factory workers, and manual labor in general.
Easier in terms of lack of manual labor perhaps, but white collar work has its own unique challenges. I don't think it's fair to rate difficulty of work on a linear spectrum.
Several years ago I worked on a farm for a few months helping out a relative. It was exhausting work, but I found it much easier than some of the programming work I do as a living.
Take a look at the Beat Generation books. For these folks it was not just possible, but normal, to travel across the US and find a job in every town they stopped.
If you're ok getting about the minimal wage for some gardening, or house cleaning, or trash removal, you probably have good chances (e.g. you'll outcompete an illegal Mexican immigrant by just knowing the language well).
Machines increasingly obviate jobs that don't require qualification. On one hand it is nice because humans need to do less and less dirty, mind-numbing jobs. OTOH being a traveling beatnik sucks more and more.
Your comment is why I mentioned financial literacy and financial independence. The economy is a huge system with many moving parts, so while I do agree with your statement, I think you'd get a better ROI by teaching people how to manage money.
I'm a huge fan of "Your Money or Your Life" and by extension the Financial Integrity program, which advocates for people to rethink their relationship with money as well teaches people how to make income regardless of employment status.
Money management only really works when you make more than enough to afford the basics...half the population struggles just for housing, food, healthcare, and transportation.
Money management works at all levels. It is just a lot easier when you have more to manage because your tolerance for error is higher, and you can thus be much sloppier and spend less time on it.
What I don't think works so well is teaching everyone to be good at money management. Ignoring the other possible contributors to being very poor (culture, prejudice, whatever), there is undeniably a component due to intelligence. We should thus expect some portion of these very poor to be incapable of managing money, no matter how much they have, and a better policy would be to manage their money for them. This already happens for some mental hospital patients that are out in the real world but need support for medication and housing and food, and if you give them too much unrestricted money instead they'll just buy a PS4 or something else that's shiny and the money will be gone, they'll have to sell their PS4 in a few months to keep paying the rent, and then a while later they'll be evicted due to non-payment. Better to give them a smaller amount of unrestricted money on top of the other aid, but in my experience the same spending patterns emerge (that is, spending it all), very few save, or save beyond what is necessary for a particular shiny toy. There is also a disincentive from getting a job that pays too much income, because their benefits are based on income-received and can be taken away very quickly, but that's another issue. My point is that such individuality-invading money-management could probably be beneficial for more than just the mentally ill, but it will be immediately dismissed by people intelligent enough to manage their own money and who wouldn't be affected by this as nanny-statism.
Many of whom are burning piles of money on $75/month smartphones and television subscriptions (with HBO so they can keep up with the Jones' who are also underwater).
Yes, the luxury lifestyle of the dirt poor. Good thing states like Kansas have made it illegal to use food stamps for cruises. Nip that one right in the bud.
Due to the tremendous population growth, and higher standards of living of human population, I think it will be extremely difficult to achieve the kind of dream your talking about. Nevertheless, this dream would have to go through better education at all levels.
Taking the wealth produced by the hardest working people in poor countries and redistributing it to lazy rich people sounds exactly like the current state of global capitalism.
I do not care about capitalists. They somehow manage to exclude themselves from this unfair redistribution anyway, so the most of the tax burden is on the hard working middle class.
As for the people in the poor countries, they're getting richer because of this process, to an extent that the capitalists have to move their cheap labour manufacturing further and further - just see the trends in textile, for example. So it's all levelling, I would not worry about this particular aspect.
There's definitely progress being made, but I'm sure we could do better. Soviet-style central control of wealth distribution is at an all-time high with banks and corporations colluding in place of a political dictatorship. I'm looking forward to new types of software-enabled currency and exchange that aren't so easy to manipulate by just a few people.
I don't think you can teach useful levels of Critical Thinking without a solid understanding of Math, Science, and Human behavior. But, programming can also help people think more deeply about problems.
There is this huge realization that computers and by extension reality does not care about what's in your head only what is. You can argue that Math has similar levels of precision, but once people start getting partial credit some of that harshness is lost.
That said, I don't think school should overly focus on directly useful skills or even what people studied in the past. How many lifetimes of highschool sudents where wasted learning how to identify and name Regular Polyhedra?
I don't know about critical thinking in general, or science, but you definetively need some math courses, in order to get the necessary problem solving skills to be able to come up with clever solutions. Some people are born with those skills, or think in a similiar way, so those people, doesn't need learn the ability of mathematical reasoning. Nevertheless, the mathematical reasoning is mandatory if you want to be an excellent programmer. Together with a lot of other skills. I am thinking about the skillset you get by solving excercises in Calculus. Having a solid understanding of Discrete Mathematics and Statistics doesn't hurt either, depending on your problem area.
I think you're employing an extremely narrow definition of critical thinking.
The ability to question everything you read, hear and learn in search of the truth (what is), or, most likely, of more accurate or useful representations of it, is not dependent of your math or even science knowledge.
At the end of the day, intellectual curiosity and a willingness to understand things are what you need to get ahead.
I don't think that's right. I read a lot of people who can spout off lots of pretty words on a topic, yet they can't actually begin to reason about it. E.g., lots of people will wax poetic about "critical thinking", yet they can't actually describe a way to determine whether someone lacks it or not.
Math and science are, like it or not, the most effective tools we've cooked up to understand the world.
I know many people who question everything. Unfortunately, since they only accept answers that they come up with themselves or that match their other opinions, they tend to wind up having odd pseudo-conspiracy theories like denying global climate change.
Ability to reason is entirely mathematical. Only the smartest can find solutions without applying formal methods, the rest of us have to employ mathematics in order to tell truth from lies.
I've reading the book, The Road to Character, and there's a chapter on Frances Perkins, the first female secretary of labor and one of the architects of the New Deal.
She had a BA in Chemistry, not because she was good at it, but precisely because it wasn't a strength of hers. Her teachers had the opinion that if she "tough enough to major in her weakest subject, she'd be tough enough to weather whatever life threw at her". Considering her achievements later in life, I think there's some merit to those thoughts.
Do other countries teach much about personal finance in High School or even College? I think this is one area that is lacking in US curriculum, at least when I graduated high school a decade ago. Sure I could budget a project but was I able to make informed and responsible financial decisions in my early/mid 20s?
Students need to know the burdens that student loans are going to put on them after school ends. Parents may not know or remember what it was like to be a college kid trying to make ends meet. I saw many kids take heavy loans to live somewhat comfortably. Once they got "adult jobs" they still cant make ends meet after graduation due to loan repayments.
Except it really doesn't matter. You have a degree. Your parents probably had degrees. Your employers and co-workers have degrees. And they all expect you to have them when applying for jobs.
Even the Silicon Valley startup crew tend to pivot wildly away from their "any one can make it" mentality once they start growing to "well, I want someone with a degree".
Hell, my current company is hiring a nightshift person and the main requirement seems to be "Linux knowledge, has a degree". This is a job which basically burns people out after a year guaranteed.
So what? There is still lot of variation on how much you have to spend on that degree. Consider:
Student A:
Spends high school getting good grades and receiving an allowance from his parents.
Attends an expensive private school.
Takes out hefty loans to pay for school and the same standard of living he enjoyed with his parents.
Has little financial help from his parents who figure that the student loans cover everything.
Graduates with $70,000 in debt, unrealistic ideas about the standard of living he "needs", little understanding of how to manage his finances and plenty of fear to make him avoid the problem, and is unable to afford either that standard of living or his debt repayments.
Spirals into deep debt for many years.
Student B:
Works part time through high school and has money saved for tuition.
Takes out a small student loan to cover remaining expenses.
Continues to work weekends so has a small amount of cash flow.
Goes to a cheaper state university and gets used to the idea of
living on rice and beans and keeping their clothes in milk crates.
Graduates with perhaps $10,000 in debt, a good handle on their finances, an inexpensive lifestyle, and a solid plan for paying off the debt within a few years.
Continues to wealth and prosperity.
How much poverty and bad decisions could be prevented if more students took route B instead of route A? Do you still think it doesn't matter if we teach them financial independence or not?
Why place one body of knowledge in front of the other like this? Everything has to be a competition with some people.
It's always been a mistake to believe math is somehow more noble than programming. Best explanation as to why comes from the preface of SICP by Abelson and Sussmann:
"Underlying our approach to this subject is our conviction that ``computer science'' is not a science and that its significance has little to do with computers. The computer revolution is a revolution in the way we think and in the way we express what we think. The essence of this change is the emergence of what might best be called procedural epistemology -- the study of the structure of knowledge from an imperative point of view, as opposed to the more declarative point of view taken by classical mathematical subjects. Mathematics provides a framework for dealing precisely with notions of ``what is.'' Computation provides a framework for dealing precisely with notions of ``how to.''"
Where did you get nobility from. This isn't the author's point at all. Obviously knowledge about different areas of knowledge can be of more practical benefit at different times. The point is that in the next few years knowledge of math will become relatively more valuable and programming relatively less valuable.
Regarding the quote, it is a best a great oversimplification. Mathematicians have been interested in computation for a long time. See the Euclidean algorithm for example. Interestingly its computational complexity was worked out a hundred years before computer science was even considered a subject. Many great mathematicians like Gauss also had a keen interest in computation. A description of the fast Fourier transform was found in his notes after he died.
It is true that mathematical theorems have historically not been written from a computational point of view. But many many theorems can easily be turned into an algorithm (anything based on induction for example). Mathematics has many different subfields and the number of such constructive theorems varies based on the area. However, constructive arguments in mathematics are so pervasive that I think it is silly to even try and separate computation and mathematics as separate ways of thinking.
I think you made a false equivocation there--computer science in relation to programming is like geology in relation to ditch digging. Besides, math literally is at the core of all of our advancements as humans, and is probably going to be the differentiator for people in the future--kind of like degreed versus not degreed today. It is far more universal than programming, and in some respects high level mathematics may be one of the last things to be automated. If that isn't reason enough to consider of primary importance, I'm not sure what is.
"I think you made a false equivocation there--computer science in relation to programming is like geology in relation to ditch digging."
That's a very 1960's attitude. Change 'ditch digging' to 'mining', or 'engineering geology', and I'd agree.
"Besides, math literally is at the core of all of our advancements as humans, and is probably going to be the differentiator for people in the future--kind of like degreed versus not degreed today."
This is rather hilarious to me, considering I've taken a BMath program, which has had zero bearing on my work prospects. Helped me to think & learn, yes.
Math is certainly a component of many areas of advancement, and I believe a certain level of mathematical knowledge is required to be a productive knowledge worker. But to single it out as the core of our advancements is false.
For example, the greatest source of our improved economic equality and growth globally is improved productivity in managed industrial processes brought to light in various phases by Henry Ford, Fredrick Taylor, Taiichi Ohno & Sheigo Shingo, and Edwards Deming. Math, particularly statistical analysis, queuing theory, etc. is a part of all of that, but not the core insight, and not even required to understand and apply the approaches, methods.
Similarly, our greatest achievements in understanding macroeconomic systems come from fairly basic models like IS-LM that have stood the test of time. Advanced mathematical models of the economy, like Real Business Cycle theory have tried to fit reality to their maths, with disastrous policy results. Blind faith in advanced maths placed at the heart of the shadow banking system is what almost destroyed the world economy in 2008.
"It is far more universal than programming"
Philosophy is more universal than all of these topics, but I don't necessarily see it as requiring primary importance.
Math is traditionally one of several liberal arts, and not particularly central. There's also language & literature, history, psychology, science (in various sub-forms), art, music. I'd add systems engineering to this list as another key subject area that's been necessary for our advancement. All of which interact with each other, and all of which are are core to our advancement as humans.
> Today, we can get away with ‘knowing’ how Google works without understanding what a ‘principal eigenvector’ is. Tomorrow, we need to absolutely know that.
Part of the advancement of technology is that fewer and fewer people actually understand how stuff works. What percentage of the population has any notion of how a computer works under the hood? How many people understand how our national power grid works? Our sewage system? Our cars? As our world gets more sophisticated, we specialize; we have to. Sure, there will be people who will have to know about eigenvectors tomorrow - but do we all? Not by a long shot.
That reminds of some idle thoughts I had several years ago, when I lived in an apartment, during a storm.
It was a dark and stormy night. The rain was coming down hard, and there was a good bit of wind. It was not a night you would want to be outside in. As I sat in my dry, warm, lighted apartment I got to thinking about how different life was compared to my distant cave dwelling ancestors.
If they wanted a drink of water, they had to leave their cave and go find running water. On a night like this, they would have to choose between thirst and going out in terrible weather.
In my apartment, I simply turn the handle on a faucet, and as much water as I want is instantly available. No need to leave the apartment when I get thirsty.
If I want to be in rain for some reason, such as to wash, I simply step into the shower and it will rain on my command, at whatever intensity I want, at whatever temperature I want. My ancestors would have to wait for rain, and accept whatever intensity and temperature that it happened to be.
If I get cold, I turn the thermostat up, and minutes later the temperature is to my liking. My ancestors would have to move around in their cave and hope to find a warmer spot, or build a fire and trade away clean air for some warmth.
If I want to do something that needs light and it is night out, I flip a switch and I have light. I can adjust the brightness to anything from just enough to get around to enough to do anything I can do in full sunlight. My cave dwelling ancestors would have to use fire for light at night, messing up the air of their cave and only partly lighting their home.
If I want to enjoy a gentle breeze, I turn on a fan. They had to go outside.
I then got to thinking about how if my ancestors could see me, they might think I was some kind of god as I summon running water, rain, wind, light at will, and control the temperature.
Then I realized that if they were put in my apartment and I in their cave, they would be able to do all that I can do after a couple minutes instruction...and I would have no idea how to actually make a fire.
I'm not a god compared to them. I just found a better cave.
I agree to an extent but it's also very scary that some knowledge can become so rare it's more diluted than homeopathic medicine.
In a world where very few know how some ubiquitous technology works, it's easy and cheap for some corp or govt to get a monopoly on that knowledge (just hire everyone). And with a monopoly on it, you can modify it to your liking and suddenly we're in a dystopian novel and nobody knows about it.
Yes, yes, tinfoil and all that. It's theoretical, but is it really that far off?
I'd think there'll always be enough people around who are interested in any given subject to prevent that kind of scenario - although of course there is no way to say for sure.
I'm suddenly reminded of the episode "When the Bough Breaks" from Start Trek: TNG. Long-lost hyperadvanced planet-society finds itself infertile and unable to sustain its own population, steals kids from Enterprise to teach them how to be a generation of little Mozards and Rembrandts; Enterprise rescues kids and in the process figures out that said hyperadvanced society - having focused entirely on arts and humanities - forgot even the most basic understanding of the technologies they relied upon and were now falling victim to radiation poisoning brought on by ozone depletion and the power plant they were using to power their tech. Scaling down the power plant's energy production and reseeding the ozone layer implicitly fixes the fertility issues, at the cost of the long-lost planet now no longer being long-lost and the additional cost of the planet's inhabitants pledging to learn more about their technologies instead of blindly depending on them.
Moral of the story: make sure understanding of relied-upon technologies is prioritized, lest they bite you in the rear later.
Agreed. Its an old story - warriors say we all need to think like warriors; merchants say we all should think like merchants; engineers are getting on that bandwagon.
It is rare that a population has a long term sustainable soldier/war economy. Merchants have always needed supporting trades (farmer's for food and raw material, sailors for shipping, for example).
Today we have enough technology that an engineer can build a soldier or a merchant (or a farmer or a sailor). We are all familiar with drones and vending machines.
It is important that an engineer not constrain his thinking though. Neither of these replacements does everything a human can do. Sometimes a soldier takes a bullet for a civilian and sometimes a merchant haggles and gives discounts to needy.
Even though these replacements are not perfect they still compete with humans for jobs. We are still a long way from creating a robot engineer. If you want a job that won't be replaced quickly think like an engineer.
We are also closer than ever but still a long way from having a robot doctor or lawyer and will likely be requiring humans for anything resembling a bedside manner or sympathy. Hopefully there will be jobs alongside these artificial replacements for human experts for some time.
> What percentage of the population has any notion of how a computer works under the hood?
Tangential, but I'm starting to ask that question about developers. And it does get rather important when you have to debug their code because they can't.
This depends on how people learn and perceive information. If I hadn't learnt programming before I was taught Maths and Calculus, I probably wouldn't have understood some of the basics like Functions, Matrixes and Series etc or it would have taken me quite a while to grasp the idea.
For me Maths is boring. It's abstract and you don't have any interaction whereas programming is more fun for me. I never truly understood some of the physical and mathematical concepts I was taught in school and uni until I came across programming/software development problems that are solved with those and only then I realised how useful they can be.
I also find Math studies by themselves to be quite boring, at least that is how I perceived it for most of my education. Yet I had one teacher who worked really hard to show how Calculus is applied in reality. He made all of his homework and test's real world problem solving oriented. He was also a part time scout for the Seattle Mariners and he would do all of his in class examples using either base ball or real estate. This really helped me put into context many of the concepts and the multitude of ways they can be applied, not to mention it was a really exciting and enjoyable class.
After experiencing that I saw Math in a new light. I simply wish that my K-12 education was more directed to the applicability of many of the concepts we learned as I believe it would have made the subject not only much more approachable but enjoyable.
Indeed, programming something is a great trick to get a deeper understanding of it. It means writing everythin down to the details that even a dumb machine can understand it.
I guess this is like understanding something better by explaining it to others. Just that this "other person" is a machine. It is also well-known that it even helps to explain it to your own, by writing it down. For example, PG noted that in the introduction of http://paulgraham.com/writing44.html
It is a very personal thing how each one learns, of course.
On my case, the tools provided by abstract math and CS (algorithms, data structures, calculus) allow me to think outside of the box and quickly adapt to any programming language.
What students need is the ability to self-teach. They need to be able to recognize when there is a gap in their knowledge, know how to find instruction in those topics, and have the motivation to follow through on actually learning it.
If children gain those skills by the time they are adults, they can correct any faults in their educational paths.
I thought self-teaching, self-taught, and similar were jargon that has been around for a long time. In the historically recent programming community especially it's all over the place: people who never did formal CS education teaching themselves how to program and are as or more effective than their Stanford peers. The difference between self-teach and learn is that the former is an attempt at learning through one's own will and direction, and the latter is merely a state of understanding the path to which can be from many directions (self-directed, teacher-directed, or just simple observation of the world around you).
>What students need is the ability to self-teach. They need to be able to recognize when there is a gap in their knowledge, know how to find instruction in those topics, and have the motivation to follow through on actually learning it.
In my university, this is what separates the good CS grads from the bad. You have no idea how many students expect the professor to hold their hand through a lab or project and are unable/refuse to learn on their own through Google, the textbook, or the official documentation.
According to the Curry-Howard correspondence, all mathematical proofs are actually programs. This is normal. A proof is a series of steps, and if you unambiguously describe these steps, a computer will obviously be able to execute them. Furthermore, since Alonso Church successfully proposed a Turing-complete axiomatization based on just functions (even numbers are just functions), a computer program is clearly a mathematical object. An alternative axiomatization, Zermelo-Fraenkel, is based on sets. There is probably no better playground for sets than using a relational database. SQL is pretty much Zermelo-Fraenkel on steroids. In other words, large areas in math go into supporting the discipline of computer programming already. I do not believe that everybody would have to spend more time with areas in math for which no useful applications exist and that we are therefore unlikely to use in programs.
All things that exist are mathematical objects and programs. Algorithmic information theory asserts that my cup of coffee is actually a program.
While mathematics is important to computer programming, for most practical purposes it is of limited utility unless you are inventing new computer science. Knowing how to use a relational databases correctly requires no formal set theory. Understanding how to build a massively parallel relational databases requires understanding the topological equivalents of relational operators, which is much more mathematical, but very few programmers design or build parallel databases.
> Knowing how to use a relational databases correctly requires no formal set theory.
Very true, I guess. But the other way around, someone who has used relational databases, will immediately understand formal set theory and find it absolutely trivial. Another example would be regular expressions. Anybody who has ever used them will immediately recognize what Kleene's closure is about and effortlessly deal with it. I think that this is generally the case. If you first solve problems with tools that embody a particular theorem, and if later on you read up on that theorem, you will find that theorem trivially simple. In other words, math and computer science are only hard, when you have never used them. Since formal education does things systematically in the wrong order, students tend to consider math and computer science to be hard.
>someone who has used relational databases, will immediately understand formal set theory and find it absolutely trivial.
This is simply not true, you may understand the very basics of it, but by no means you will understand set theory and much less find it trval by just using relational databases.
Let me virtually shake your hand. I've always been successful teaching first from the concrete and then slowly abstracting - literally "pulling away" in Latin - as that's how I understand abstraction - it is the common ground between concrete things and therefore it was discovered from those things.
To then try and teach students first from the most "pulled away" concept possible to only in the very end try and meet them in the real world - I just never understood that approach. Like you said, the government curricula prescribe an approach that is backwards to what makes sense.
In Plato's Meno dialog, Socrates teaches a kid the abstraction called "irrational numbers" by having the kid draw triangles on the sand and then try and find the square root of 2. By playing with a concrete example (sqrt(2)) the kid learned the abstraction (that there are numbers that can't be shown as a fraction).
This backwards way of thinking we're stuck with today is so pervasive that one approach I was developing to teach monads - by first writing each instance separately and then later "pulling away" to try and see the bigger picture - was recently excoriated in the Haskell IRC channel for not teaching the actual abstraction.
The path is not the destination. You can't pull away (abstract) from nothing.
The problem with accepting computer programs as results is that they require much more scrutiny, as computer programs typically incorporate structures that are irrelevant to the result and yet may affect it (think memory leaks, etc). Mathematical proofs are a "pure" program, unencumbered by the technicalities of the real world.
Those 'technicalities of the real world' are the things that lead to new and interesting mathematics. Maybe your 'whole number' concept doesn't properly model different kinds of measurement. Maybe you've got to iterate a couple time on the definition of 'smooth function' before you find one that's useful for modeling actual observations.
Mathematics is not unencumbered by the real world. It's just highly focused on specific classes of encumbrance. (If I put two marbles in an empty sack and poured out three, you can bet mathematicians would be interested in this new kind of arithmetical behavior, and try to model and explain it. Though talking to mathematicians, I get the impression they are so far up in the ivory tower, they think it isn't connected to the ground at the bottom!)
Our programs are not easily factorable. It is hard to separate different interactions across different problem domains. That's a problem of the language, not of the 'purity' of the program. Well, arguably. You could see it the other way, too, I guess.
What are you talking about? Programming is mathematics. Using a formal language to express solutions to formally defined problems is, by definition, mathematics.
Programming is not mathematics, except perhaps in the most narrow manner of recognizing that a syntactically formal language is likely used somewhere in the bowels of a solution.
However, formal methods and semantically formal languages are rarely used to arrive at the solution. Our mainstream programming languages are difficult to reason about semantically. The formality is mostly relegated to the grammar/syntax. Formal languages and methods might be used in rare cases to validate a solution after it was specified by other means. But those other means are usually a combination of art, engineering and a high-level imperative language.
You're recording your solution in a formal language. This is mathematics, by definition.
Any programming language that ever existed is a formal language. No matter how clumsy it is, it is always formal, otherwise it won't be possible to execute it. Even those stochastic languages are formal as well.
This is the fallacy of composition. (Human beings are mostly made of water. Therefore humans are water. Programming is about arranging numbers (code). Therefore programming is numbers. etc. )
Programming languages involved both syntax and semantics. Formal languages are concerned predominantly with syntax. Most programming languages do not have complete formal semantics grounded in logic. Pieces, sure. Most programming languages are a goulash of various formalisms mixed up with notions of aesthetics and mechanism.
Also, we're confusing code (which I agree is a mathematical construct, among other things), and a practice, programming. Almost no one programming is thinking purely in terms of mathematical logic. They're thinking about aesthetics, engineering constraints, user experience, timelines, procedures, libraries, version control, type systems, etc.
> Formal languages are concerned predominantly with syntax.
No. I'm using a broader notion of a formal language. Algebra, for example, is a formal language. One of the ways of defining a formal language is: "anything that can be strictly defined as a term rewriting system", and all the programming languages are fitting.
> Most programming languages do not have complete formal semantics grounded in logic.
They always do, otherwise their execution won't be deterministic.
A programming language implementation + semantics of the hardware and runtime library = semantics of a formal language.
> They're thinking about aesthetics, engineering constraints, user experience, timelines, procedures, libraries, version control, type systems, etc.
This is exactly how problems are solved in mathematics too.
If you want to extend even furthur into the metaphysics, it was Wolfram's "New Kind of Science" which (certainly not first) proposes that it's the computational universe that comes first given rise to the mathematical realism one.
I'm going to deliberately try to be controversial, but in order to spur discussion. What the next generation needs is more soft/social sciences, not STEM.
tl;dr of my point: we know dangerously more about technology than about people, their needs as individuals and their needs as a society. Somewhere along the line we should stop throwing technology at people just because we can, and start to focus on the right solutions - technological or not - to real problems.
If by "soft/social sciences" you mean real substantive disciplines like history, philosophy, civics, and the arts, I agree with you.
Currently "social studies" in school is a bit of a trash bucket into which gets thrown every personal ideology and pet project that some teacher got her feminism or social work or grievance-studies BA in. It's the worst subject in most curricula, even worse than English. The problem is there's plenty of those nonsense degree holders and far too few college graduates who have studied the humanities.
I meant psychology, sociology, economics, anthropology, communication, among others.
Those are, despite the "social studies" stigma they might carry, real substantive disciplines which should not only contribute but predominantly shape the technological products and services we build.
I'm referring to "soft sciences" like social work, psychology, sociology, [grievance] studies, poli sci, etc, as opposed to the humanities: history, mathematics, philosophy, classics, fine arts, etc.
> I'm referring to "soft sciences" like social work, psychology, sociology, [grievance] studies, poli sci, etc, as opposed to the humanities
Race/ethnic/gender/subculture (what you seem to call "grievance") studies are humanities (academic disciplines that study human culture) not sciences (soft or otherwise.)
Not sure what you mean by grievance studies but most of those, besides being quite important, fit under the humanities label. Mathematics on the other hand, probably not.
Most of those would be classified as "social sciences", not humanities. It has to do with the methods and philosophies they use. Grievance studies is my nickname for "_____ studies" where the "_____" is the name of some census checkbox.
History, Philosophy and Civics are still in their pristine condition.
However, psychology, sociology, economics, anthropology and especially communication have been systematically taken over, and have demanded self-censorship of those fields. When a field self-censors it can no longer be considered to be doing intellectually honest work. So they are dismissed as not Science.
Just what I meant. The problem for public schools is that there are a million grads with degrees in social work, poli sci, pyschology, sociology, grievance studies (womens studies, etc), and other fake sciences, many of them ready and willing to be teachers. People with degrees in history or the classics, by contrast, are almost as hard to find as math and science majors willing to work for public school salaries. (Unions being what they are, you can't offer math and science teachers twice what you offer the "social studies" teachers, despite the fact that they're worth it.)
Social sciences don't exactly mean sociology. Economy is a social science, psychology too, anthropology might be considered humanities but it's also a social science...
Agreed. STEM has proved incalculably valuable in servicing the lowest (most essential) tiers of Maslow's pyramid, but the higher ones (love through to self-actualization) require more nuanced investigation. As society progresses, people worry less about these tiers, like hunger, and it's not unlikely that the primary concerns of future generations will be emotional/social.
True, but also in the social sciences you need a firm grasp of statistics, science and a keen mind. Perhaps even more so as people, culture are often more complex then designing user interfaces, self-driving cars or facial, voice and gesture recognition apps. How to filter out factors, describe patterns? Statistical methodologies (and the psychological/sociological theories they test or are based on) are crucial tools in understanding dynamics of behavior. The need for social science experts will arrive when people need to solve these problems, like with SEO/SEA, VR, gaming and narrativity - in their multidisciplinary contexts in various companies and industries.
I think the need already exists. But companies are used to getting by (with huge profits) with engineer-driven products and decisions. The extent to which our technological products and services are engineer-oriented is mesmerizing. Steve Jobs once said something about Apple working at the intersection of technology and liberal arts. It was marketing, of course, but I can't even express how much I agree with this.
Regarding the need for a good grasp of statistics in social scientists, I fully agree. But I think it's something that already exists, up to a point at least. I work in software development with many software engineers around, but I also did a PhD with a strong social sciences background. You would be amazed with how much the guys with psychology backgrounds know about stats and methodology (and how much the common STEM guy doesn't).
We don't know about social sciences because it is a heavily politically charged subject.
The most interesting and potentially enlightening experiments are also probably illegal.
That's why it's hard.
And you ALSO need a branch of mathematics, called statistics, and probably many more. You can't simply pour lots of money into it without any hard science and expect useful results.
tl;dr: it's not about quantity, it's about quality and the political landmine of social sciences.
> The most interesting and potentially enlightening experiments are also probably illegal.
I fully agree with your points. However, regarding this one in particular, I would like to add that this shouldn't stop the harnessing of already existing knowledge in the social sciences to better shape the products we build.
I mean, you're totally right; there's a lot of knowledge "locked" in the difficulties related to studying humans. However, we know some stuff about people and their behaviour. A relevant amount of stuff I would say. And that stuff isn't being applied when we create a technical solution to a human problem; the solution is almost solely defined by technical aspects. We don't know much, but we know enough to do better than what we do with technology today, human-wise.
(At least, better than defining "UX work" as pixel-pushing in Photoshop or Illustrator)
> We don't know about social sciences because it is a heavily politically charged subject.
It did not used to be that way. It started to change after WW2 and even stronger after 1967. Social "sciences" were made political because a group of radical influential thinkers were interested in furthering studies that would disprove the role of genetics, biology and darwinism in social studies. Before this shift, social studies were not politicized.
Every profession has a tendency to overstate it's own importance. In the eyes of programmers , we are misunderstood , under appreciated and people don't fully grasp our worth.
Management thinks that they're the real movers and shakers , having to take all the risk , make all the tough decisions , while having to deliver results while being saddled with sometimes recalcitrant and inefficient teams.
Mathematicians feel that they are the ones at the vanguard of progress and are angered by the fact that people have the temerity to say that they don't "get" math or have any use for it in real life.
Though Delmania's comment skirts dangerously close to what pg might call a "middlebrow dismissal" , he makes a very important point. Our increasingly unequal economy and limited opportunities are forcing us to increasingly push ourselves harder and into a fierce cycle of competition that is destroying us.
Some lessons in Humility , Resilience and Self acceptance would do us a world of good.
>Management thinks that they're the real movers and shakers , having to take all the risk , make all the tough decisions , while having to deliver results while being saddled with sometimes recalcitrant and inefficient teams.
It is by far easier to imagine something than it is to make that imagination real.
It is by far easier to tell someone what to do then it is to do it.
Management is by far easier than engineering.
Management, however, is still a dramatically different skill than engineering, and it is a skill that is important.
> It is by far easier to tell someone what to do then it is to do it.
Only if you don't care whether it gets done, and if it gets done well. Otherwise, it's far easier to just do it, and not rely on the known unreliable "other people".
Problem is that a big share of management in fact don't care about those things, and only manage the political game. But don't let that mislead you, actual management is hard, quite on par with engineering.
> [I]ntelligent analysis of large scale data is the future. And for that future, what you need is Math, not Programming.
I don't agree; intelligent analysis of data probably requires the combination of a large number of cases, stitched together with some hacks. And a principal Eigenvector or two buried in there in some supporting role.
Of course, mathematics education in public schools is notoriously awful, though quality obviously varies across jurisdictions.
I can't see programming education faring better, especially considering that the emphasis is on "code". This is a horrible thing to put at the forefront, because it limits your view to the particular set of language constructs you use as opposed to broader properties of computer systems and computation. It is best to start by a rundown of high-level computer architecture (von Neumann and Harvard) so as to understand basic machine instructions and types, progressing into OS fundamentals (something like The Design and Implementation of the FreeBSD Operating System, though condensed), then briefly into compiler construction and language VMs, onto practical usage of a CLI shell, the various ways of representing resources and IPC, data structures and how to use them in forming basic services (like a message/event broker bus or publish-subscribe with named pipes and the file system under a standard interface/toolkit), build systems and so forth. Ideas and concepts with code on the side.
Obviously these are rushed examples, but the point is that code-centric computing education in public schools will probably backfire by creating people with just enough knowledge to have extremely warped views of software. Unless your goal is to turn kids into ALGOL monkeys who can't see beyond the mnemonics, I suppose.
You might say this would be too complex for public schools to implement. I agree, which is why it should stay out. Do it right or don't at all. Bashing out Java code alone is nowhere near as relevant as some people seem to think it is.
What the next generation needs (among other things) is for people to realize that the world has become far too complex for the next generation to just need one thing.
This article assumes there is no such thing as Computer Science, which is the development of algos and the like which the author assumes is done by mathematicians.
In reality in computer science, just about the only thing that’s really science is when you’re talking about algorithms. And optimization is an engineering. But those don’t actually occupy that much of the total time spent programming. You know, we have a few programmers that spend a lot of time on optimizing and some of the selecting of algorithms on there, but 90% of the programmers are doing programming work to make things happen. And when I start to look at what’s really happening in all of these, there really is no science and engineering and objectivity to most of these tasks. You know, one of the programmers actually says that he does a lot of monkey programming—you know beating on things and making stuff happen. And I, you know we like to think that we can be smart engineers about this, that there are objective ways to make good software, but as I’ve been looking at this more and more, it’s been striking to me how much that really isn’t the case.
Aside from these that we can measure, that we can measure and reproduce, which is the essence of science to be able to measure something, reproduce it, make an estimation and test that, and we get that on optimization and algorithms there, but everything else that we do, really has nothing to do with that. It’s about social interactions between the programmers or even between yourself spread over time.
"Conventional programming languages are growing
ever more enormous, but not stronger. Inherent defects
at the most basic level cause them to be both fat and
weak [...] inability to effectively use powerful combining forms [...] lack
of useful mathematical properties for reasoning about
programs." [0]
It goes without saying that mathematics is at the root of computer science, but we've gotten so far away from those roots, which is why we're reaching the upper bounds of complexity that can be foisted upon our old, broken way of thinking. Time to go back to basics.
Here's the challenge faced by strong students. At a recent science fair, a strong 8th grader presented a simulation where you could fly a rocket around a plant, with the ability to change gravity, thrust, etc. I asked if he had explored the math (since this was a soluble problem.) The answer "The math is too difficult - I do it numerically, much easier that way."
There is great advantage in re-using the work of others, but in order to advance the frontiers of knowledge people truly need to understand the underlying assumptions and mathematics.
Absolutely - numerically is they way to go in some fields, but without a deep understanding of the underlying limitations there will be no expansion understanding/knowledge. It's the old academic vs. practitioner argument.
I'm interested in this but I have no idea what you are talking about. What does "numerically" mean and how does it allow one to implement rigid body physics in a "much easier way" than using the known formulae?
Rather than solving Newton's equations for gravity (with initial conditions determined by the masses of the bodies, their position and velocity) he simply calculated the acceleration and a point in time .. advances time by a small bit, changes velocity (based on acceleration) and location (based on the velocity) by a small bit and then repeats (computersare good at doing the same thing iteratively). This is using a computer to numerically estimate differential calculus.
If we are breaking it down to something this basic I think a more accurate statement would be, "What the Next Generation Needs Is Math AND Programming"
In traditional Computer Science there is already a focus on both of these areas. The question I wonder is more, "Does the degree prepare us for either of these areas?"
In the area of programming I believe the answer is a resounding NO. Most students coming out of a 4 year CS program aren't ready to be programmers. They've been taught a bunch of theory and fundamentals, but they haven't spent time applying them on real problems at scale. Within the classroom setting the fundamentals are applied to trivial problems that can fit into the constraints of a classroom setting.
Like many programmers, my career path (until recently), has kept me pretty far away from the math; so I don't think I can say for sure that the same is true here, but I suspect it is.
I have argued for a long time that much like a doctor goes through a residency program, something similar should be required of computer science degrees. At least a couple of years of the program should include students working together with experienced professionals building real systems that are attempting to solve difficult problems.
As someone who has a maths degree, I find it sad that most of the jobs advertised that require a background in maths are either jobs of Quants or Data Scientists.
Actuarial work and accounting are both very accessible to mathematics majors; you really just need one extra course worth of content (that you can work through yourself) to be prepared for an entry level position in those fields.
I am not interested in doing anything related to accounting, except for my own business.
> Or, certain types of software developers get to do interesting math as well.
Yes! But sadly, those type of positions are rarely advertised - well, you could say that Quants and Data Scientists are some kind of software developers as well, but the maths needed in other fields are kept very secret.
Now, I am not looking for a job at the moment - I graduated in 2006 and am working on my own thing now (maths related) - but I was just lamenting that people complain that more mathematicians are needed without providing concrete jobs for them.
Teach kids basic arithmetic WELL, teach them logic in a fun way, find a way to get them to like reading and think critically about what they read. That's fine for me. I'd do away with all the rest of math (algebra, trig, etc) and have it as optional in high school. Really, if you got the stuff above right as a kid, you don't need to learn trigonometry if you don't want to at the time.
I'd personally throw in something like geometry, which (at least when I took it back in my middle school days; maybe my experience was atypical) had a heavy emphasis on mathematical proofs, how they worked, why they were important, the differences between postulates and theorems, how to prove theorems, etc. Whereas most of my prior and future math courses (particularly algebra) ended up feeling like an endless barrage of busywork, geometry forced me to actually think about what I'm doing.
Now that I think of it, I remember having lots of fun with geometry, trying to figure things out on my own. I still remember the first time I got to prove Pythagora's on my own, or the formula for the volume of a pyramid. It felt so awesome that I still long today for a math course where you start from zero and the teacher just guides you into figuring stuff out yourself, one by one (Pythagora's, Pi, formulas for volume, etc).
According to the author, you need to know this in order to understand "how Google works," because the PageRank algorithm is described in terms of finding the principal eigenvector of a particular matrix.
From 50,000 feet up, we take in data,
maybe already have some other data,
manipulate all that data, and get results
we want to be powerful, valuable, etc.
This little process is more important
now because computers let us do much
more in the data manipulations.
That said, there is a remaining question:
What manipulations should we have the
computers do?
Shockingly often in the past,
we understood the manipulations well
enough to program them because
we were largely just programming
what we had done or in principle
knew how to do just manually.
But, as we have programmed more of
what we knew how to do manually,
we will want more powerful, valuable
manipulations.
Well, often the best approach to
more powerful, valuable manipulations
will be via mathematics. There,
we can look at reality, see some
situations or properties that
appear to hold, let those be
assumptions for some mathematics,
that is, hypotheses for
some theorems,
proceed with theorems and proofs,
get some mathematical
results, and use those to
say what manipulations to do.
E.g.: (1) Statistical hypothesis
tests. (2) Systems of ordinary
differential equations as
growth models. E.g., what would
happen if we released 1000 healthy
US bobcats into the outback of
Australia? (3) For real time
local delivery, which vehicle
takes the next order that
comes in so that we can
meet promises to customers
and minimize expected delivery
cost? (4) Pick a part of the ocean,
drill a lot of oil wells; now,
what should the sea floor oil pipeline
network look like to carry the oil
to where we want it meeting safety
standards and minimizing cost, e.g.,
expected net present value over the
life of the oil wells? There are many
more such.
For such problems, data manipulations
from theorems and proofs, sometimes
new, can knock the socks off
any other approach, e.g., intuitive
heuristics.
That's some of the future of
math, especially in what gets programmed.
In the same way that students were offered home-ec and shop in previous generations, to learn the real-world applications of their "cerebral" subjects, are we not teaching programming today as the real world application of mathematics?
Eigenvectors, great. But what can I do with them? Now, software that uses those eigenvectors to control the motions of a robot, that's something kids can get excited about, and can turn into a career (not to suggest pure math can't lead to careers, but the combination of the two opens up more careers).
While I appreciate not everyone is the same, I am not fond of the idea that young students are always more interested in practical applications than they are intellectually curious. Making things blow up, or controlling something with a few lines of code is fun and exciting, but so is discovering something that previously seemed hidden about how the universe works at a fundamental level. For a lot of students math is exciting because they feel that they are imagining how reality itself is working, and even how reality might have functioned if some seemingly arbitrary rules had been decided differently.
I don't mean to say that practical applications are not inspiring, rather that the good intentions are misguided when they imply that very young students aren't capable of abstract thought or ever motivated by purely intellectual subjects. Becoming an engaging teacher of theory may not even be attainable to as many people as who are able to encourage a student through a practical demonstration, but that is different from children not being receptive to both.
Wow. You are projecting us back to the mid-12th century, before we got hold of Algoritmi's famous book: Kitab Al-Jabr, i.e., Liber Algebrae. Before that it was only arithmetic and bits and bobs of Euclid's Elements (=Geometry). That was all they had.
Then we can focus on what area the person can best contribute in. Not everyone is going to suited for a job in programming or mathematics, or STEM as a whole.