At best, this statement is a gross oversimplification (that React/Vue "wrap" HTML) and at worst, completely wrong. React provides a construction library for the creation of a virtual DOM (which is not the same thing as HTML), and allows changes to the virtual DOM to reconciled with the actual DOM. Vue also uses a virtual DOM, but I have less experience with Vue and so can't speak authoritatively. React also provides a small-footprint programming paradigm and lifecycle management (again, similar to Vue).
There's a lot to like about Vue, but having used both, my team abandoned Vue for React, and have found much higher productivity and developer satisfaction with the latter.
I second this recommendation; Eli Maor's book one of the best math books I've ever read. The specifics of some of the math presented are going to be beyond the skills of most HS students, but understanding the math is not critical to enjoying the history. I've found that math history is a good way to get students engaged in math. So often, concepts in math are presented in a way that makes them seem like they were handed down to us by the gods at the dawn of time. My experience is that students become a little more interested when they realize there was a real person (or persons) behind any given concept, and sometimes, the skills they're learning, were completely unknown to anyone on earth 500 years ago.
In this vein, I would also recommend Charles Seife's "Zero". The math in this book is much more accessible (should prove no problem for HS students), yet it drives home some very important ideas that are crucial to understanding higher math.
The movie that always springs to my mind is Robert Zemeckis's Contact. The movie doesn't focus on computers per se, but they accurately depict computers being used in the computer-heavy field of astronomy. (Note: I am not an astronomer, so I could be way off here...would love for a real astronomer to meta-comment.) The computers are a mish-mash of hardware from different vendors, but they all seem to be running some flavor of *NIX, and the software looks entirely plausible. In addition to getting the computers right, it's also a great movie.
The polar circumfrence of the moon is ony about 3500 km, so any point from the equator to either pole is approximately a quarter of that, 875 km. The original lunar rovers used in the first lunar exploration had a top speed of just under 13 km/hr and very limited ranges, so they would obviously be unsuited to take a "lunar road trip." But it seems to me that we could build a vehicle that was more like a "lunar RV" that could make the trip. Say we improve rover speed to a modest 45 km/hr and assume we can't take a perfectly direct course to a pole...call it 900 km. So it would take 20 hours in your VW lunar rover. As long as they pack enough ganja and doritos, they should be fine. It seems that with the low gravity and cloudless skies, that kind of performance could be achieved with solar power, perhaps boosted by some chemical propulsion. It would have to be capable of carrying enough oxygen for the crew to survive for several days, but it seems like this would be possible.
One thing that I don't see being addressed here is the "freeness" (or "costness") of software. It seems to me that the free software movement is not simply about producing higher-quality software, but a reaction to the high price of software. If Windows XP or System X cost $40 instead of $150-$200, they'd suddenly be a more attractive option than they are now. As it stands, Linux is an obvious choice.
Let me choose another example, since the OS example is confusing, and people feel pretty vehement about it. So let's look at...compilers. One the one hand, we have Borland's development suite, various embedded compiler companies, Microsoft's Visual Studio suite, and so on and so forth. Then we have gcc (and Wacom, as a previous poster pointed out.) The former cost approximately $1500. The later costs $0. As a developer who is striking out on my own, I need access to a good development environment, but I also don't have a tonne of money to kick around. What am I going to choose? That's right: gcc. Would I pay $50 for gcc? Heck yes I would. Would I pay $5 for Mozilla? Yep. $50 for Linux? Sure would.
I think it's great that there are developers out there making free software. I'm not, however, convinced that they aren't doing any harm. I think they're making it difficult for small development companies or individual developers to sell software. My anxiety is that when I put a piece of software on the market, that a potential customer is going to look at it and say to themselves "hey, I'm not going to pay $30 for that! I'm sure there's something free out there that will do the job just as well!" Perhaps there is -- and perhaps there isn't. Either way, the expectation is hurting my sales.
I can't think of any other field, really, where I could do quality work and worry about people getting it elsewhere for *free*. In almost every industry, professionals have to worry about being undersold, but I think we have a unique phenomenon here in software development: a market where you have to worry about competetors giving away the same product.
Every time this subject comes up, inevitable panicked comment is "but what will we replace it with?" Well...do we have to replace it with something? Personally, I'm getting fed up with technology. I'm beginning to look at it as the most disappointing of all human endeavors.
(The following, while it may seem off topic, does have a relevant conclusion, so be patient.) We've seen the computer "revolution" and hell, it's still happening. But revolutions usually involve a change in society, hopefully for the better. I don't really see how this so-called computer "revolution" has changed our society. Certainly, communication is faster. Life is more convenient. We have more information at our fingertips than ever before. But this isn't really a change in society; computers aren't the new printing press, they're just a better printing press. What bothers me is that society hasn't changed for the better as a result of computers. People still work jobs that they hate to buy shit they don't need (as Paluchiak's Tyler put it.) People still search for meaning and come up short. They loose touch with each other (and thanks to modern communications there are a million more and faster ways to loose touch). Stress. Insomnia. Heart attacks. Ulcers. Anxiety. And are computers making things better? I say that they're making things worse.
Now I come to my point: the "next" thing shouldn't be quantum computing or DNA computing or God knows what other undreamt of technology. The next thing should be introspection. These computer things, they're marvelous. They're marvelous right now and we we're still a decade away from the silicon ceiling. The humblest desktop computer is capable of staggering computation, torrental communication, and vast storage. But how does that humble computer improve the quality of your life? I'm not talking about the game that distracts you from your life, or the fact that it's a lot easier to stay in touch with dear mum. I'm not even talking about recreational programming, an admittedly worthwhile endeavor. The emphasis everywhere seems to be on convenience and entertainment. Instead of making computers faster and bigger, let's think about making them better. Let's really start looking at them as a vehicle for enlightenment, not a convenience. What does this mean? I'm not sure, and maybe I'll never have the answers. But someone will. Collectiviely, we can. Let's use technology to better understand the world around us, ourselves, and each other. Forget the silicon ceiling: we've been hunched under the cultural ceiling so long that we don't know what it means to stand up anymore.
You seem concerned that "Hello World" won't capture their interest. I don't think for programmers (or aspiring) programmers it matters *what* your first program is. Its the thrill and magic of seeing an innanimate collection of silicon and iron do something that you told it to. Sure, doing a Mandelbrot set or even random pixels would be "cool", but for heaven's sakes...start 'em off with "Hello World".
RESIST the temptation to start them off on a Windows box! It WILL rot their mind! I started in a DOS/Wincentric world, and it made my subsequent introduction to the *nix world that much more painful. I don't think it would have been as hard the other way....
As far as languages, I've seen a lot of excellent suggestions. I'd be inclined to avoid BASIC...Perl, I think, is a good replacement for the simplicity of BASIC these days. The comment about teaching them to shoot by giving them a machine gun was cute, but the fact is, Perl CAN be clean and pretty. Perhaps its more analogus to teaching them to draw by handing them a pencil and a sheet of paper: you could draw ANYTHING, or you could learn about perspective, foreshadowing, etc, etc. I haven't had much experience with Python, but I think that too is a good suggestion. What about the venerable old Pascal? It, too, was designed as a teaching language, and I think it does a pretty good job at it. I would avoid C because its so tricky (they'd spend more time learning the inconsistencies, pitfalls, and details than they would on programming principles...there's pleanty of time for the former). I would avoid C++ because if you want to get them into OOP, go Java, Python, or Smalltalk. I also am in favor of introducing them to functional programming languages like LISP, or even better, ML. Besides, aren't they at that age that they're learning about a little discrete math in school? You know, what it means to be associative and commutative, etc? That would tie in nicely to ML (or some other nice functional language). Functional languages surprised the hell out of me when I got to college...I had NO idea something like that was out there.
And most of all, enjoy! They may not follow in your footsteps, but while they explore your world, treasure it!
One movie that impressed me recently in its portrayal of computers was Contact. Look at the computers...you'll see several different OS platforms running on a mishmash of hardware platforms. Product placement was obviously not a concern here. Whenever something was displayed on a computer it was realistic and not sensationalized. I realize that computers were not the point of this movie, but it added an extra touch of authenticity to me that the computers used in it were very close to what you might really find in the astronomy field.
At best, this statement is a gross oversimplification (that React/Vue "wrap" HTML) and at worst, completely wrong. React provides a construction library for the creation of a virtual DOM (which is not the same thing as HTML), and allows changes to the virtual DOM to reconciled with the actual DOM. Vue also uses a virtual DOM, but I have less experience with Vue and so can't speak authoritatively. React also provides a small-footprint programming paradigm and lifecycle management (again, similar to Vue).
There's a lot to like about Vue, but having used both, my team abandoned Vue for React, and have found much higher productivity and developer satisfaction with the latter.
I second this recommendation; Eli Maor's book one of the best math books I've ever read. The specifics of some of the math presented are going to be beyond the skills of most HS students, but understanding the math is not critical to enjoying the history. I've found that math history is a good way to get students engaged in math. So often, concepts in math are presented in a way that makes them seem like they were handed down to us by the gods at the dawn of time. My experience is that students become a little more interested when they realize there was a real person (or persons) behind any given concept, and sometimes, the skills they're learning, were completely unknown to anyone on earth 500 years ago.
In this vein, I would also recommend Charles Seife's "Zero". The math in this book is much more accessible (should prove no problem for HS students), yet it drives home some very important ideas that are crucial to understanding higher math.
The movie that always springs to my mind is Robert Zemeckis's Contact. The movie doesn't focus on computers per se, but they accurately depict computers being used in the computer-heavy field of astronomy. (Note: I am not an astronomer, so I could be way off here...would love for a real astronomer to meta-comment.) The computers are a mish-mash of hardware from different vendors, but they all seem to be running some flavor of *NIX, and the software looks entirely plausible. In addition to getting the computers right, it's also a great movie.
The polar circumfrence of the moon is ony about 3500 km, so any point from the equator to either pole is approximately a quarter of that, 875 km. The original lunar rovers used in the first lunar exploration had a top speed of just under 13 km/hr and very limited ranges, so they would obviously be unsuited to take a "lunar road trip." But it seems to me that we could build a vehicle that was more like a "lunar RV" that could make the trip. Say we improve rover speed to a modest 45 km/hr and assume we can't take a perfectly direct course to a pole...call it 900 km. So it would take 20 hours in your VW lunar rover. As long as they pack enough ganja and doritos, they should be fine. It seems that with the low gravity and cloudless skies, that kind of performance could be achieved with solar power, perhaps boosted by some chemical propulsion. It would have to be capable of carrying enough oxygen for the crew to survive for several days, but it seems like this would be possible.
Let me choose another example, since the OS example is confusing, and people feel pretty vehement about it. So let's look at...compilers. One the one hand, we have Borland's development suite, various embedded compiler companies, Microsoft's Visual Studio suite, and so on and so forth. Then we have gcc (and Wacom, as a previous poster pointed out.) The former cost approximately $1500. The later costs $0. As a developer who is striking out on my own, I need access to a good development environment, but I also don't have a tonne of money to kick around. What am I going to choose? That's right: gcc. Would I pay $50 for gcc? Heck yes I would. Would I pay $5 for Mozilla? Yep. $50 for Linux? Sure would.
I think it's great that there are developers out there making free software. I'm not, however, convinced that they aren't doing any harm. I think they're making it difficult for small development companies or individual developers to sell software. My anxiety is that when I put a piece of software on the market, that a potential customer is going to look at it and say to themselves "hey, I'm not going to pay $30 for that! I'm sure there's something free out there that will do the job just as well!" Perhaps there is -- and perhaps there isn't. Either way, the expectation is hurting my sales.
I can't think of any other field, really, where I could do quality work and worry about people getting it elsewhere for *free*. In almost every industry, professionals have to worry about being undersold, but I think we have a unique phenomenon here in software development: a market where you have to worry about competetors giving away the same product.
Every time this subject comes up, inevitable panicked comment is "but what will we replace it with?" Well...do we have to replace it with something? Personally, I'm getting fed up with technology. I'm beginning to look at it as the most disappointing of all human endeavors.
(The following, while it may seem off topic, does have a relevant conclusion, so be patient.) We've seen the computer "revolution" and hell, it's still happening. But revolutions usually involve a change in society, hopefully for the better. I don't really see how this so-called computer "revolution" has changed our society. Certainly, communication is faster. Life is more convenient. We have more information at our fingertips than ever before. But this isn't really a change in society; computers aren't the new printing press, they're just a better printing press. What bothers me is that society hasn't changed for the better as a result of computers. People still work jobs that they hate to buy shit they don't need (as Paluchiak's Tyler put it.) People still search for meaning and come up short. They loose touch with each other (and thanks to modern communications there are a million more and faster ways to loose touch). Stress. Insomnia. Heart attacks. Ulcers. Anxiety. And are computers making things better? I say that they're making things worse.
Now I come to my point: the "next" thing shouldn't be quantum computing or DNA computing or God knows what other undreamt of technology. The next thing should be introspection. These computer things, they're marvelous. They're marvelous right now and we we're still a decade away from the silicon ceiling. The humblest desktop computer is capable of staggering computation, torrental communication, and vast storage. But how does that humble computer improve the quality of your life? I'm not talking about the game that distracts you from your life, or the fact that it's a lot easier to stay in touch with dear mum. I'm not even talking about recreational programming, an admittedly worthwhile endeavor. The emphasis everywhere seems to be on convenience and entertainment. Instead of making computers faster and bigger, let's think about making them better. Let's really start looking at them as a vehicle for enlightenment, not a convenience. What does this mean? I'm not sure, and maybe I'll never have the answers. But someone will. Collectiviely, we can. Let's use technology to better understand the world around us, ourselves, and each other. Forget the silicon ceiling: we've been hunched under the cultural ceiling so long that we don't know what it means to stand up anymore.
You seem concerned that "Hello World" won't capture their interest. I don't think for programmers (or aspiring) programmers it matters *what* your first program is. Its the thrill and magic of seeing an innanimate collection of silicon and iron do something that you told it to. Sure, doing a Mandelbrot set or even random pixels would be "cool", but for heaven's sakes...start 'em off with "Hello World".
RESIST the temptation to start them off on a Windows box! It WILL rot their mind! I started in a DOS/Wincentric world, and it made my subsequent introduction to the *nix world that much more painful. I don't think it would have been as hard the other way....
As far as languages, I've seen a lot of excellent suggestions. I'd be inclined to avoid BASIC...Perl, I think, is a good replacement for the simplicity of BASIC these days. The comment about teaching them to shoot by giving them a machine gun was cute, but the fact is, Perl CAN be clean and pretty. Perhaps its more analogus to teaching them to draw by handing them a pencil and a sheet of paper: you could draw ANYTHING, or you could learn about perspective, foreshadowing, etc, etc. I haven't had much experience with Python, but I think that too is a good suggestion. What about the venerable old Pascal? It, too, was designed as a teaching language, and I think it does a pretty good job at it. I would avoid C because its so tricky (they'd spend more time learning the inconsistencies, pitfalls, and details than they would on programming principles...there's pleanty of time for the former). I would avoid C++ because if you want to get them into OOP, go Java, Python, or Smalltalk. I also am in favor of introducing them to functional programming languages like LISP, or even better, ML. Besides, aren't they at that age that they're learning about a little discrete math in school? You know, what it means to be associative and commutative, etc? That would tie in nicely to ML (or some other nice functional language). Functional languages surprised the hell out of me when I got to college...I had NO idea something like that was out there.
And most of all, enjoy! They may not follow in your footsteps, but while they explore your world, treasure it!
One movie that impressed me recently in its portrayal of computers was Contact. Look at the computers...you'll see several different OS platforms running on a mishmash of hardware platforms. Product placement was obviously not a concern here. Whenever something was displayed on a computer it was realistic and not sensationalized. I realize that computers were not the point of this movie, but it added an extra touch of authenticity to me that the computers used in it were very close to what you might really find in the astronomy field.