This is nothing new. Since course registration has had a web interface, there have been those who find the system clunky, inefficient, and useless for a wide array of situations, the least of which is registering for classes. I know at least 3 people in my grade level who have done the same thing. I've done the same thing. People before me have told me how they did the same thing. This is all at one university. The NYTimes is making these guys out to be heroes of programming and ingenuity, when this is almost a first step for a college/university programmer.
"But scientists have yet to develop an affordable, active water splitter with catalysts capable of working at industrial scales."
"The nickel/nickel-oxide catalyst significantly lowers the voltage required to split water, which could eventually save hydrogen producers billions of dollars in electricity cost"
Making it more plausible I suppose. The only thing I have a problem with is that they used a battery, which required electricity to be initially charged. The electricity had to be generated somehow. If we plan to use <insert renewable energy here> to charge the batteries to split the water to generate the hydrogen to power our cars, I think very few people will be driving.
But it doesn't, it only serves as practice for distinct edge cases that teachers try to use to trip up new students. Which is fine except that it does not teach you anything, it lets you figure it out through frustration and trial-and-error. It never tells you "Hey, make sure you pay attention to this part" or "Sometimes weird stuff like this might happen" and then offer a path for the student to progress.
I personally feel that Javascript is a language that you move into when you properly understand primitive programming constructs. I think this because if you start with Javascript, every other language will make you feel crazy and lost since you can't override internal structures, protected primitives and definitions, on top of the fact that "object-oriented" Javascript is almost as laughable as it is frustrating. There was an article on the front page here just recently that was along the lines of "x tips to being a better Javascript programmer." It just confirmed my choice to not have a career involving Javascript.
1. This doesn't teach you how to code, this teaches you how to read code and learn arithmetic logic that goes with programming.
2. You use Javascript as a base.
I'm with the parent commenter. I actually deleted my Facebook, but would love to utilize this service to create a public trust profile. I just can't involve social media accounts.
I completely understand the need for speed, which is why I'm happy you picked something like Java. It's just with the popularity of Javascript on HN, I was worried that it would be yet another JS project.
The problem is that web programming is a very abstracted and high level concept. When you take a data structures course, you learn in languages where memory usage can be easily measured or guaranteed, such as Java or C, and the runtime can be more concretely measured. This is important because the fundamental importance of data structures is their memory vs time trade off.
Javascript is just not the language for this. Neither is Ruby, Python, Haskell, Perl, <insert trendy scripting/functional language here>.
I understand that you're trying to push for teaching a language that might have more modern, real world applications, but CS is not ( at least in the undergraduate world ) about learning the modern or bleeding edge. Leave that to post-graduation, in your free time, or during a graduate program.
The best you can do is extending the CS curriculum to teach "Introduction to Web Programming" or the like utilizing Python and/or Javascript, or offering it as an elective. The closest thing to replacing Java in CS undergraduate curriculum is Go or Rust or some similar, newer language, but the jury is still out on how useful as educational tools they are.
You recommend teaching Javascript or Ruby in an undergraduate Computer Science Data Structures course. Are you aware of the fact that Computer Science, as a major, is not "Learn programming"? It is learning the theory and science behind Computers, computing and programming. What you suggest is more applicable for CNIT or Computers, Networking, and Information Technology; A major where one would learn more how to apply the theories and concepts of programming. But even then, you're suggesting SCRIPTING languages for PROGRAMMING. The only thing a scripting language is good for in the education system is conveying concepts such as abstraction ( because that's practically all they are ). Java is a way better language for that.
I think instead of attempting to revamp the CS curriculum, we should work harder to portray CS for what it is, which is not "Study this and be a programmer for the rest of your life". People who come out of CS go on to do a wide array of things, programming is just a basic and necessary skill for learning and understanding computing that one picks it up. And knowing the theories and concepts really well makes good programmers, same as how knowing the fundamentals of Mathematics would produce someone who could be a good accountant or something similar.
I'm appalled that some of the first languages you intend to teach are Javascript (But really JQuery) and Python. That's just my personal opinion, but when I think "Teaching kids to code" I don't think "pick languages unlike any other language, and that will teach bad expectations of future languages." I would even be happy if you were to teach them something like VB over Javascript and Python.