Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

As a anecdata-point, Stanford's CS 142: Web Applications course was previously focused on Rails, now it teaches a MEAN stack:

http://web.stanford.edu/class/cs142/

It requires students to test on Chrome:

> Unfortunately, Web browsers are still not 100% identical in their behavior, so Web pages may behave differently on different browsers. For this class, the reference browser is Chrome: your project solutions must work on Chrome, and the CAs will use Chrome to test them. Your solutions need not work on any browser other than Chrome. You may use a different browser to develop your solutions if you wish (Chrome, Firefox, and Safari all have very similar behavior), but please test on Chrome before submitting. We do not recommend that you use Internet Explorer for development: historically, its behavior has been quite different from the other browsers, so things that work on IE may not work on Chrome, and vice versa.

I have mixed feelings on this. Sure...open web, and everything. But in academia, Chrome is one of the more ubiquitous dev environments to be used...I remember being locked into Visual Studio. And purportedly, the class isn't just about job skills...it's attempting to teach HTML/CSS/HTTP/JS to students who may have not had real exposure to any of those concepts, on top of Angular/Mongo/Node/Express. Restricting the environment allows at least for more consistent instruction/grading.



I don't have mixed feelings about this. A course name "Web Applications" should start by explaining the fundamental difference between "Applications" and "Web Applications", the second of which is accessed via browsers, which the developer has no control over. It's a pretty crucial concept.

As far as grading, I wouldn't expect responsive design or old IE support, but it should work in all current, major desktop browsers. It's really not hard, you just have to be conscientious of the fact that there are multiple browsers out there.


To use another technical analogy...I teach data analysis using SQLite...the purpose of the course is for students (most of who have never actually programmed) to be introduced to SQL, but more fundamentally, the concepts of databases and data joins. Ignoring the profound differences in database architecture...SQLite follows most of the SQL standard [0]...but I think there are enough syntax differences between it and Postgres that the gulf might be roughly comparable to at least the disparity in vendor prefixes on the browser side. As for SQLite vs. MySQL...well, I used to teach lessons that allowed the use of either SQLite and MySQL, and gave that up after a year.

In addition to being SQLite focused, I tell students to just use one open-source, cross-platform client: http://sqlitebrowser.org/

Sure, you could make the argument that I'm woefully preparing my students for jobs in which PG/MySQL/MSSQL is by far the standard...whether you're talking about web applications or dealing with legacy data files. But job viability is not in my scope...I argue that I'm teaching students the fundamentals of data and logical joins...that I use SQLite is merely an implementation detail.

That's how I feel about the CS 142 class...if students come out of that class being able to understand even an intermediate level of all those concepts...when they get out into the "real world", learning how to write for cross-browser compatibility will be well within what they can learn on the job. Just like it's trivial to learn the other variants of SQL once you've grokked SQL itself.

[0] https://www.sqlite.org/lang.html


I understand what you're saying, but I think you're confusing tools and deliverables.

If I hired someone to do data analysis, and they delivered accurate results using SQLite, I could not fault them since the deliverable is correct, whether they used SQLite or PG.

If I hired someone to build a web application, and then found out that it only worked in Chrome, that's a broken deliverable.

The specific tool (SQLite/PG/etc or Chrome/FF/Lynx/etc) used for creating each deliverable doesn't matter.


The point was made that, in one course, they're already learning JS/HTML/CSS and the full MEAN stack. Adding on the requirement that it work in each browser is just too much, especially when you consider how you'd want to grade such a thing.

FeatureA works in Chrome/FF but looks weird in Safari and is outright broken in IE. 7.346/10?


It's not "make it work in each browser", and it's not "just too much". If you spend an additional couple minutes per assignment checking functionality in major browsers (ignoring IE), you're set.

For your FeatureA, I'd ignore IE (that's a whole college course in itself), but I'd grade that 9.8/10. -0.2 cause it looks weird in Safari.


As a real world analyst, I'd love a job where you just sit there and pay me to come up with "insights/deliverables" and not have to worry about implementation details.

Indeed, in my experience, the thought that this is how it's done/what analysts should do is a chief complaint about academic-esque analysts, because they can't actually implement anything or their solution is completely unworkable for real scale/tech environment/software stack.

But I would happily take a job where I can be paid to live in my ivory tower if you know a place that views that as the deliverable of analysis :p

Indeed, I think the comparison of someone delivering a webpage that doesn't run on other browsers is quite an apt analogy...


That's not entirely true, what about when you bring someone in and say "here's my mysql server that I haven't upgraded in years, analyze the data in it"


Tangential: please stop abusing ellipses, it makes your (otherwise fine) writing unduly difficult to read.

http://writing-skills.com/five-annoying-ways-use-ellipsis

http://www.holyfuckingshityouredumb.com/2010/02/02/the-dread...


Don't listen to the other comments. Your job is to teach the concepts. Implementation details are a separate concept to be learned on the job. You're teaching crafts(wo)men, not Unsullied.

I remember my first job not knowing the difference between #includes with brackets versus quotes, and where the IDE was searching for them. I was so pissed that my CS program didn't prepare me adequately for my first job. But the truth is this was one of thousands of "figure that shit out for yourself" that they glossed over in favor of "don't write n^n algorithms" and "cartesian products will be the death of you"; I'm currently taking over a code base where simple requests from an ORM are issuing thousands of queries.

So, please continue to teach SQL. As for browser coding, I learned all that on the job too, and it has no place in an academic setting. It's entirely dependent on feature needs, your target market, accessibility concerns, etc. To say that some new graduate should have all the skills necessary to navigate that minefield is madness.

I wonder how many people bitching about Chrome/Firefox/IE are ARIA compliant.


Not the first time that I see academia teaching their students the wrong way of doing things. I had to work with some graduates with certain strange ideas about approaching the work and tried to teach them an alternative, at least open their eyes and consider the possibility that what they are doing might not be the right way. Tough job. Sometimes it feels easier to hire somebody with no programming skills and teach them from scratch than to change the mental pathways of stubborn graduates.

On that note, my experience has been that academic environment often does more damage than good to its students. It sometimes takes a monumental effort to make the graduates unlearn all the wrong things they learned in the academic environment before they can proceed further in their professional development without all that bad baggage that keeps pulling them in the wrong direction.

It's like children mistreated by their parents in their youth who will carry their psychological trauma from the childhood through the years and that would detrimentally affect their lives until they get some professional help from a skilled counselor.


I'd been programming for nearly 20 years when I made it to University, everything about the way they taught programming was pretty much hilariously wrong* (not the language choices or any of that, that's just noise in the grand scheme of things) but the approaches and the way they explained how to decompose a problem, write it, test it etc.

Not helped by lecturers who'd either always been lecturers or lecturers who'd left industry 15 years earlier (this was 2005 so they'd have left in 1990).

It was still a valuable experience since a lot of the other stuff was valid but I took all the programming stuff with a massive pinch of salt.

* Except Charlie, Charlie was an ex-telecomms C/Unix God he didn't like the way a lot of the programming stuff was taught but he did point us all to where we should be looking.


>> Not helped by lecturers who'd either always been lecturers or lecturers who'd left industry 15 years earlier (this was 2005 so they'd have left in 1990).

Exactly what I'm talking about. I've met graduates with very weird ideas about how to approach problem solving, and they would eventually confirm it had been taught to them at the university as the one true method of doing things. I remember that I myself had to "accept" some of the ideas being taught to us and recite them at the examination, pretending I agreed with them. Was the only way to get through some courses, and I recall many other students suffering from wrongful instruction. Some tried to argue with the academic staff and get those wrong things fixed, many of them would pay the price later by failing the examination. Apparently, those lecturers and professors didn't like their competence questioned.

About 15 years ago we had a new lecturer come to teach our group. I remember my thoughts after a couple of his lectures: this guy must have been thrown out of every shop that's out there. Was completely useless, even if senior by age (around 50 I believe). Tried to teach us about computers by reading aloud a book similar to the "Computers for dummies" series. Was not a good reader either. From the rumor that was circulating around he had a buddy in the hierarchy and used that to land a job at our university. Was truly pathetic.

As the common saying goes: Those who can do, do. Those who can't do, teach. Those who can't teach, manage.


> It's like children mistreated by their parents in their youth who will carry their psychological trauma from the childhood through the years and that would detrimentally affect their lives until they get some professional help from a skilled counselor.

Please, your analogy just doesn't make any sense. Just because someone is stubborn and doesn't want to relearn something doesn't make it professor fault. Nor does it mean he/she suffered child mistreatment. Parents beating their children leads to mental illnesses if the right genes are present. You are reducing child abuse to banality.


I currently work in academia so I'm obviously biased, but I'll argue that wrong things learned in college is quite a bit different paradigm than child abuse. Hard to unlearn child abuse, it seems.


The long term effects may be just as devastating.

Consider that as a lecturer every your word will carry a meaning. Even an innocuous remark may turn out to be something that will stick with one of your pupils for years and will lead them to make a sequence of wrong decisions that will eventually ruin their life.

Having access to younger minds and influencing their personal and professional development is not a joke. It's that kind of a job which if not done properly may potentially produce the next tyrant.


Being taught the wrong thing for a couple months by a shitty professor when youre a young adult isnt comparable to your parents hitting you as a child. The professor is not your entire world, your brain is much more developed, and youre unlikely to consider all your waking actions in terms of your professional skills.


Your comment saddens me and only confirms what I've been suspecting: a lot of people including those working in academia don't take education seriously and do not comprehend the far-reaching repercussions of their actions.

Generally speaking, a person only begins to reach psychological maturity at around 30 years of age. Until that time all incoming ideas generally fall on a fertile ground, as the person is not yet capable of telling bad apples from the good ones apart and can't always discard the wrong ideas. Sometimes it's exactly those ideas that take and derail somebody's life, unnoticeably, one step at a time.


I mean Im just having trouble understanding a substantial link between wrong information learned in an acedemic envirnment (diverse peer group, diverse set of professors, bulk of learning being self directed, having already developed a worldview thats slightly more robust than "mommy knows everything") and trauma. Yes, it has negative economic reprecussions. Sure, in very rare and extreme cases, doing some wrong due to something you learned in college miight lose you a job (I say rare because it should be obvious that most work processes are wrong or out of date and there aint alot of firing done because of it.) But to equate that one source of incorrect knowledge (as opposed to everything else you hear or see which is true somehow?) with your whole fucking world regularly hitting you, telling you youre worthless, being absent in your life, etc, doesnt really gel with my understanding of childhood trauma.


As a solid example of this... A fellow student was working on a problem that had a key-value mapping, but instead of storing them in a hash table/map/whatever the language wants to call it, he was storing them as pairs in a list and complaining about the performance on a large data set.

I asked him why he wasn't just storing it in a hash table instead. His answer: "Because I sometimes need to iterate over it and get both the key and the value"

My brain had to sit and parse what he'd said for a few moments, before I realized what the heck he was talking about. In all of the data structure courses, he'd been taught "A hash table hashes the key, and stores the value in the corresponding slot". In that mental model, there's no way to retrieve the key, only to retrieve the value given the key.

I explained to him that real-world implementations do do that, but also store the key along-side the value, so that you can still iterate across it. You could see the look of amazement wash over him, and then he frustratingly declared "Why the hell didn't they mention that?!"


What does that have to do with academia? That's just having an overly simplified mental model of something, which all humans do when learning any new thing, whether through a lecture, a random stack overflow question, the compiler manual, or through pure experimentation.


Academia carries with it a larger amount of authority than a random programming forum. Students have the expectation that the academic staff is generally knowledgeable and wise and what they say in all probability is very important, has to be remembered and followed (even if you don't quite understand why yet but perhaps you will in the future).


I don't think "Academia" that doesn't teach critical thinking and only practices its authority over students should be called academic institution.


I agree. And yet, this seems to be the rare type. Often it's just a few people in the staff that are trying to do things the right way, for the others it's simply a nice job (with few responsibilities and seemingly no obligations). That's what I've been trying to get across. Teaching is a sensitive job with far-reaching consequences, yet more often than not people don't take it seriously and don't care what their students will carry with them into the life when they leave the walls of that academic institution.


They probably did mention that, perhaps he wasn't paying attention? Besides, unless you have perfect hashing, you're bound to have a hash collision at some point. How did he expect a hashmap to work in that case, without also keeping track of the key? If he never asked that question he doesn't understand hashing either.


I was in the same lecture, it definitely wasn't mentioned. I'd been hacking on Perl for years before starting school, so I already "knew it in my heart" how it worked in practice. Just one of those little but critical details where something important got missed.

And yes, when you've got a complete understanding, it seems quite obvious that the key has to be stored with it. That's why I got it. He'd just learned it though, and there were still those gaps in his knowledge that he would have carried for a long time until someone else helped point out the missing piece (or he had decided to sit through and make sure he understood everything)


If one thing a STEM professor says can lead to ruining your life, then you probably have a lot worse things going wrong in your life.

DISCLAIMER IAMA academic


"You should apply to graduate school!" Didn't ruin my life, but it did waste 3 years and $30k.


Ok thats a decent point lol..


And apparently hard for the GP to unlearn his academic abuse.


What/who does "GP" refer to?


>> What/who does "GP" refer to?

Grandparent. Two posts up the hierarchy from the person who used the term "GP".


Thank you.

So this is a personal attack then. Frankly, I expected better from the HN community. It looked more evolved when I was just an occasional visitor prior to joining. Rather disappointing.


>> So this is a personal attack then. Frankly, I expected better from the HN community.

It seemed like a bit of a snipe maybe (or a joke where they forgot the smiley). I went back and re-read your original "GP" comment and it seemed like you had encountered a number of students who had trouble as a result of such teaching. The snipe implied your experience was just your own personal problem, which seems false in looking at it again. Relax, it's just people you don't know responding to someone they don't know.


You have some pretty bold claims here and not much to back them up. If you gave us some examples or studies you'd be highly upvoted, in my experience.

Anyway, I appreciate your viewpoint.


>On that note, my experience has been that academic environment often does more damage than good to its students.

How bad are we talking? My small bubble doesn't constitute mountains of data, but I have friends across the US from top-tier and not-so-top-tier schools that aren't damaged goods from academia.

Better yet, are you sure it's academia that screwed up or stubborn individuals who worship the ground their professors walk on? Those are the types of people that see academia as the end all, be all of what's right.


This is really bad considering MEAN is a) much less popular (IMO it's dying down), b) much less beginner friendly, c) much less easy to work with than Rails.

And I say this as a JavaScript dev.


I was surprised by your statement of MEAN dying down but I checked out Google Trends and it seems you're right: https://www.google.com/trends/explore#q=%2Fm%2F0_v9b5j. I wonder why that is and what's taking its place?


Honestly just personal experience as someone who's heavily in the more "cutting-edge" JS world.

While Angular 1.x is still big, most new things are made with React. Mongo has gotten a ton of bad press over the last few years that it's hard to find positive things about it any more. This has more of an effect that you'd think. Express and Node are fine though.

What I mean is that Rails, though older, is still much more popular than MEAN.

Ironically my work place uses Express and Mongo, but React!


I don't see anything dying down in that trend.

The last point on the graph is for July which is very partial data, so it's probably best to ignore it.

Without that point, the trend seems to be upwards.

I wish it was dying down - I do not have much love for any part of that stack - but Google trends does not tell us that.


Chrome, Angular, Mongo, Node, and Express? To teach HTML/CSS/HTTP/JS?

Damn. I would definitely not take that class.


Right? Angular is far from regular HTML. It makes sense to use, when you want people to get started with interactivity in the web... after that, though, playing with "dependency injection" and "transclusion" is just not good for you.


> It makes sense to use, when you want people to get started with interactivity in the web...

I don't think it makes sense even then. The toolset is just way too complex both for teaching, and even for practical use for small projects.

I mean, when people are supposed to learn about things like HTTP, or the idea that server-side programming involves writing programs (the normal, regular kind) that output text - which will later be sent over the wire to the browser. Or even how the control flows through your application. You know, the basic, fundamental stuff - understanding of which is kind of required to do this job well. All the "we'll teach non-programmers coding with current framework du jour" courses and classes I've seen involve typing in magic invocation that generate shit ton of folders and files that nobody tells you what they do or - more importantly - why they're even there, and that's all for a "hello world" app.

I feel that all the current sexy web classes are aiming to produce code monkeys, not programmers. Which might be an effective way to get someone to bullshit their way into the first job - but I doubt it serves the students long term.

Personally, when I'm teaching someone server-side development, I start with simple programs that print stuff to terminal using the regular printf()/whatever calls, and then show them that websites is what you get when you send that text to a browser instead...


Thanks for the response. That's really useful.


I think that Stanford tries to be trendy, since it's located in Silicon Valley and surrounded by startups.


At least it's not Rails anymore /s




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

Search: