Hacker News new | past | comments | ask | show | jobs | submit | z131's comments login

-1 -> Only sign in is with google.


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.


Did they share the program with other people? Why did 6+ people all rewrite the same program? Or did they have different specific uses?

From the first example of the article, it says that within the time span of one semester there were 8000 students who had used the software. In another example, the site used to compare courses at Berkeley now has over 50,000 registered users. Berkeley even paid them for the website afterwards because of the value they saw in it. They all produced something that lots of students use to solve problems/increase efficiency in academic life. That's not a trivial thing to do.


"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.


You wouldn't actually use a battery. It just makes a neat demo.


My problems:

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.


It teaches how variables work though, which can be one of the toughest parts about understanding code.


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.


The site doesn't claim to teach how to code (although the HN link title does).


I think the name of "Silent Teacher" conveys the idea that it is trying to teach you something.


Nothing wrong with using JavaScript as a base.


Of course there is. Learning how to be a developer with JavaScript is like learning how to become a mechanic by fixing Rube Goldberg machines.


that's a pretty biased assumption. javascript is a perfectly fine language to learn to code in, especially given its prevalence and penetration. there's some weirdness to it, yes, but every language has its quirks.


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.


Just curious, what's your objection to Javascript in this capacity?


See my reply below.


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.


What other accounts would you be comfortable associating with this trust profile? Would you hook up your GitHub?


I'd hook up my PGP key. Or X.509 certificate. Or old good username and password pair. Something I can truly own and handle. Why do I need some third party to have an identity?

Then I'd enlist accounts with any imaginable third parties (email addresses, Facebook, VKontakte, Google+, BitCoin addresses, GitHub, BitBucket, StackOverflow and so on and so on) as something I have at the moment.


So....Shamir's Secret Sharing algorithm[1]?

[1] http://en.wikipedia.org/wiki/Shamir%27s_Secret_Sharing


Nope.


Dear god thank you for not writing this in javascript.


I'm working on a version in JavaScript. I will send it to you when it's done.


Simulation speed is of primary concern here (though javascript isn't too shabby)! I actually have a C++ version too, but I thought Java might be more accessible to more people...


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.


How can simulation speed be a concern in a turn-based card game?


HearthSim is designed purely as a AI vs AI game simulation tool. It's not a "playable" Hearthstone clone. In the examples on my blog, I usually run 40,000 simulated games per data point, and each set of 40,000 games usually takes a few hours to run on a relatively modern PC.


Because this simulation is concerned with simulating as many games as possible. So overall speed matters.


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.


I absolutely beg to differ on your first point. You don't use actual performance measurements in Data Structures courses, no matter what language you use. You aren't instrumenting your code or counting bytes or anything. You measure the concepts by analyzing with Big-O notation. If you really wanted to, you could teach a Data Structures course using just paper, pencil, and pseudo-code.

Pretty much any language will work fine for teaching data structures.


Pretty much any language will work for teaching data structures badly.

If your instructor is showing you a cool animation of a list with less than 30 elements being sorted by X algorithm, he's doing it badly. Or at least if that's all he's doing. There are by the way many schools that do just that, under the rationalization that the point of the class is to have the student practice what he learned at Programming 101. I attended such course in the day, and then went to teach the same course some years later, but I don't think the results were any good.

IF he have you run your algorithm against input taken from /dev/random, first 100KB, then 1MB, then 10MB, then 100MB he's a little less bad. IF he makes you do the whole sequence a dozen times an plot each resulting data points in a graphic with logarithmic scale, he is not bad at all.

Then you can start to discuss Big-O notation, but for the resulting graph to make any sense you need that the program written by the student to have a relatively strong correlation with what the computer is actually doing. It will not do, by example, if the runtime environment decides to implement you list as a dictionary object instead of a raw array. Also, having a relatively precise clock like Java's currentTimeMillis will reduce the possibility that you embarrass yourself if the practice do not seem to match the theory.

If the course is being taught at graduate level, you may want to run a second experiment, this time with input sizes of 1KB, 256B, 64B, 16B. At this point you will be able to discuss stuff like the Little-O notation, the constants involved in both notations, and how those are derived from Limits of the time function.

For this you will absolutely need the best clock available in your hardware, so C because a must. It will also help if you can run cc -s on your code and see what assembly is behind your code. I know it is overly ambitions, but that's how I would like to have learn about this stuff.


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.


Yes, very aware. What I suggest was just an off the cuff idea to help spark ideas. CS is still too new to not have some evolution left in the curriculum. This really isn't controversial.

You are like the guy back in 1975 saying "...We don't need no stinking change from Assembly to C, this isn't a 'Learn How To Program Degree' don't you know..."

Assembly is fine, it's just not relevant anymore to a CS major. C and Java are still good but they are becoming less relevant was time marches on. Blah blah blah. Is thing on?

In fact, if waited and just said the same thing in 7-14 years or so, everybody would be saying "..<insert newer language here> for Data Strucutres?...no sh*#t, who programs in C or Java anymore?!?..."


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.


What's so appalling about JS and Python? They're both fairly similar to other high-level languages of today, and I don't see how they "will teach bad expectations of future languages." I love Python and use it nearly every day (JS not so much, but that's mainly because of what I do).


JavaScript is perhaps the most broadly and immediately useful language right now, whether or not it should be, and Python is probably the best balance of utility on its own, usefulness for learning concepts applicable to other languages, and accessibility of any language today.

VB is more distant from other languages than Python, more limited in its direct utility, and less useful for teaching general CS concepts.

Python and JS may not be the perfect set of choices, but they are good set, and certainly either is far better than VB.


Totally disagree. These languages were chosen wisely. They allow you to get stuff done quickly without complaining too much. Kids who want to build stuff for the browser should learn Javascript.

Also, Processing in particular is a very smart option. I know that when I was learning to code, being able to draw cool patterns and stuff on the screen was really motivating.


What's the problem with Python? It's no more complicated than VB and was designed as a teaching language. The significant whitespace may be annoying, but it's semantically identical to other ways of specifying blocks.

Javascript for teaching programming to children is an awful idea, though.


JavaScript is an excellent language to get children to learn to code, because it runs in a web-browser, an environment children are very familiar with.


Javascript is an awful language to get children to learn to code because it doesn't understand numbers and pretends to be object-oriented when it's prototypical - which puts it by itself in the world of popular languages.

That it naturally runs in a browser is an awful reason to use it. Use something that compiles to javascript if you feel web programming is so important.


VB?! Modern languages that are simple (like JS, Python) make more sense to me.

VB is a bit old and outdated at this point, I think.

(btw, my handle is not related to this site)


Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: