Stanford dumps Java as introductory class
-
For JavaScript.
-
In its latest update to the Programming Methodology course code CS 106J, the University replaced the difficult to master Java language that was present in CS 106A, with the more palatable language JavaScript.
I like JavaScript, but I will not for a moment pretend it's an easy language to master. Understanding how the
this
pointer works alone takes a lot of learning. And then using "Hello World!" as a demonstration of how JS is apparently easier is like proving a Ford going at 55mph has a higher top speed than a Ferrari doing 45mph.But this change is mainly there to help students get into the concepts behind programming, instead of drowning them in 'Public Static Void' like jargon.
So, to get students to learn concepts better, you throw half of them away. Gurd jorb.
With the digital world becoming more enshrined with our daily lives, having more educated people know how to code will only benefit us in the long run.
And you educate people by teaching them stuff, not ignoring stuff.
As for how successful this change in language will be at retaining students in the long haul, remains to be seen.
It'll breed a whole generation of programmers who don't understand a lot of the basic concepts of programming, and will write code of a deplorable standard hitherto unseen up to this point.
-
@benjamin-hall said in Stanford dumps Java as introductory class:
For JavaScript.
hmm... if it is just CS-101 that's not the worst move in the world. lowers the barrier to entry, allows people to learn the absolute basics without having to fight eclipse or netbeans, and if they're literally taking CS-101 to get computer proficiency credit (a WTF in its own right but that one's the registrar offices fault) then it makes them more likely to be able to complete the course.
then as you proress into CS2xx and CS3xx you get C# or Java, and C, and hopefully a language that doesn't have a C-type syntax, such as Python.
yeah. i can see the move bing a good thing if they're implementing it properly
of course the odds of that are fairly remote.
-
Just for comparison, when I went to college, they didn't have any course that taught C, but all of the 200-level courses assumed you knew it.
-
@antiquarian The only languages they ever taught us were Java and Assembly, and then they had classes for the rest of university that hoped you knew random weird languages no one uses.
-
@magus I was taught Java, ARM assembler, and C when at university. And I have used none of them since I graduated.
-
@raceprouk I was taught C++ almost exclusively. I learned enough about the language that I've spent my entire professional career avoiding it wherever possible.
-
@raceprouk I was taught Scala and Ocaml, and was forced to use Emacs for them. The professor even gave out negative points for using menu bar instead of keyboard shortcuts.
"Short" cuts. Ha ha.
-
Intro classes were in c++ and java. After that it was up to you what to use unless the assignment specifically said what language to use. So we could use whatever in most of the level 200+ classes.
-
Could be worse. At my uni they are discussing switching to Python as the first language.
"They" largely being the two teachers in charge of the "introduction to programming" course, and for more or less unarticulated raisins. I keep pressing the progamme managers to at least consider some of the research on learning progamming and which language provides the best platform for subsequent curses.
But that's probably just me, and my dislike for any language that assigns a semantic meaning to whitespace...
-
@raceprouk The 'Assembly' we learned was LC3 assembly, which...
Actually I think you're the one who found it somewhere on the internet when I mentioned this in the status thread.
-
@raceprouk all your arguments would be valid when they switched from C and Pascal to Java.
It didn't matter then, and it won't matter now. That was a good move.
-
@magus said in Stanford dumps Java as introductory class:
@raceprouk The 'Assembly' we learned was LC3 assembly, which...
Actually I think you're the one who found it somewhere on the internet when I mentioned this in the status thread.
Not that I recall
-
@gąska said in Stanford dumps Java as introductory class:
@raceprouk I was taught Scala and Ocaml, and was forced to use Emacs for them. The professor even gave out negative points for using menu bar instead of keyboard shortcuts.
"Short" cuts. Ha ha.
I expected something weird from the polish, but I would have guessed perl. The .pl extension matching the tld would add to the confusion. Like gaska.com.pl/login.pl
-
Reads title: "Stanford dumps Java as introductory class"
Oh, it's in the General category instead of Sidebar, so they must have replaced it with a decent language like C# or maybe went for something a little more barebones like C or C++ to teach them the nuts and bolts--
"For JavaScript"
Oh FFS.
-
@the_quiet_one Yeah, this should have been in Sidebar
-
My brother's doing a programming Uni course at the moment. It's mostly C# (with some horrible advice. In his first assignment he was forbidden from using generics and had to use ArrayList for any collections)but he also did a module on MARIE, which is apparently an assembly emulator in Java.
I don't have any formal CS training, but I was taught Oracle and C++ with MFC as training for my first programming job, where I spent most of my time doing MSSQL
-
@jaloopa said in Stanford dumps Java as introductory class:
In his first assignment he was forbidden from using generics and had to use ArrayList for any collections
Who gave that advice? They're late for an appointment with my .
-
https://what.thedailywtf.com/post/572959
I got a notification over there some time recently ;)
-
@mikael_svahnberg said in Stanford dumps Java as introductory class:
which language provides the best platform for subsequent curses.
-
@mikael_svahnberg said in Stanford dumps Java as introductory class:
language provides the best platform for subsequent curses
IME it's other people's code, regardless of language, that will generate the most curses.
-
@jaloopa said in Stanford dumps Java as introductory class:
with some horrible advice. In his first assignment he was forbidden from using generics and had to use ArrayList for any collections
I'd be OK with this if they went into generics as a topic later in the semester. Introducing students to lists in general without distracting them with what generics are is a reasonable teaching approach, IMO. For a first assignment, I'd not consider that a huge WTF.
But if that's all they do all semester, then yeah. That's horrible.
-
@raceprouk said in Stanford dumps Java as introductory class:
Who gave that advice?
The lecturer. Apparently generics were considered too complicated for an introductory course.
The lecturer sounds pretty shit. She's apparently boiled the projects down to the point they can be graded almost automatically. My brother did some stuff in his that would have given him good marks if she'd chosen a different assignment, but was marked down in this one
-
IF it is truly an intro, then use Blockly - and yes, I am serious.
-
@the_quiet_one said in Stanford dumps Java as introductory class:
Introducing students to lists in general without distracting them with what generics are is a reasonable teaching approach
Maybe I've been doing this shit for too long, but I don't really see how it's all that confusing to say "with a list, you tell it what it's a list of. You then won't be able to insert anything that isn't that type or a subtype"
Either way, not teaching it is one thing but explicitly saying you'll mark students down for learning about it themselves and implementing it seems like a to me
-
@jaloopa said in Stanford dumps Java as introductory class:
The lecturer. Apparently generics were considered too complicated for an introductory course.
Seriously? It's not like generics in C# are complicated. Does she also recommend using
x = x + 1;
instead ofx++;
?
-
@raceprouk I was taught COBOL, PL/1, Fortran, IBM assembler. My Dad told me about this "cool" language that was coming: C. (He worked at Bell Labs). I picked up C and then C++ when I was hired at my first permanent (non-contract) job.
-
@jaloopa said in Stanford dumps Java as introductory class:
@the_quiet_one said in Stanford dumps Java as introductory class:
Introducing students to lists in general without distracting them with what generics are is a reasonable teaching approach
Maybe I've been doing this shit for too long, but I don't really see how it's all that confusing to say "with a list, you tell it what it's a list of. You then won't be able to insert anything that isn't that type or a subtype"
In and of itself it isn't, but when you're teaching students an intro where you have to assume they don't even know what a primitive is, much less other stuff like arrays in hour/1.5 hour chunks of time, there's just a lot of take in. Again, I'm talking about the first assignment, not the entire semester. It sounds like this teacher isn't even getting into generics in a 3-4 month class, about C#, which is horrible, but I don't mind generics being held for the middle of the semester after you've at least mastered the concept of classes and interfaces first.
Either way, not teaching it is one thing but explicitly saying you'll mark students down for learning about it themselves and implementing it seems like a to me
Agreed on that point. I've always hated teachers who punish students for going the extra step of doing stuff that isn't learned in class yet. If there's anything we need to do in programming class, it's encouraging them to learn stuff on their own.
-
This is more relevant than ever, now that they're making things even worse than Java:
-
@hungrier said in Stanford dumps Java as introductory class:
@mikael_svahnberg said in Stanford dumps Java as introductory class:
language provides the best platform for subsequent curses
IME it's other people's code, regardless of language, that will generate the most curses.
And your own code falls into the "other people's code" after 6 months of not looking at it.
-
@raceprouk @The_Quiet_One oops. I wasn't sure what category to go under. How do I request a move? Or world that require work from a moderator (and so be unlikely)?
-
@hungrier I find my own code provides plenty of cursing opportunities as well.
Edit:
-
I'd been going to argue that for an introduction, aimed at non-programmers, that JavaScript wasn't a bad choice, but then I read the course description.
CS 106J: Programming Methodology in JavaScript
Introduction to the engineering of computer applications emphasizing modern software engineering principles: object-oriented design, decomposition, encapsulation, abstraction, and testing. Emphasis is on good programming style. This course covers the same material as CS 106A but does so using JavaScript, the most common language for implementing interactive web pages, instead of Java. No prior programming experience required. Enrollment limited to 100.why choose javascript as an exemplar of object-orientated design and how/why tackle engineering principles in a course for absolute beginners.
-
@mikael_svahnberg said in Stanford dumps Java as introductory class:
which language provides the best platform for subsequent curses
Perl.
-
@raceprouk said in Stanford dumps Java as introductory class:
@jaloopa said in Stanford dumps Java as introductory class:
The lecturer. Apparently generics were considered too complicated for an introductory course.
Seriously? It's not like generics in C# are complicated. Does she also recommend using
x = x + 1;
instead ofx++;
?That's a tragedy. Obviously should be teaching
++x;
instead ofx++;
.
-
@boomzilla said in Stanford dumps Java as introductory class:
@raceprouk said in Stanford dumps Java as introductory class:
@jaloopa said in Stanford dumps Java as introductory class:
The lecturer. Apparently generics were considered too complicated for an introductory course.
Seriously? It's not like generics in C# are complicated. Does she also recommend using
x = x + 1;
instead ofx++;
?That's a tragedy. Obviously should be teaching
++x;
instead ofx++;
.Wrong. It's
const ONE = 1; x += ONE;
-
@raceprouk said in Stanford dumps Java as introductory class:
But this change is mainly there to help students get into the concepts behind programming, instead of drowning them in 'Public Static Void' like jargon.
So, to get students to learn concepts better, you throw half of them away. Gurd jorb.
Well, yeah? If you want them to learn the "algorithmic thinking" behind programming, all the Java boilerplate is not going to do anything but annoy them.
Why do you think PHP and Python became popular? No boilerplate structures necessary, not even a
main()
, just jump straight to the code.And also let's state the obvious once more: functions should be able to exist outside a class.
-
@mikael_svahnberg said in Stanford dumps Java as introductory class:
Could be worse. At my uni they are discussing switching to Python as the first language.
That's definitely not worse, since it teaches people to format their code properly. Also, Python might not be ideal, since its designers made controversial choices, but at least it's well-designed and not a language developed in a rush, whose bugs and flaws were later standardized, like JavaScript.
-
@mikael_svahnberg said in Stanford dumps Java as introductory class:
I keep pressing the progamme managers to at least consider some of the research on learning progamming and which language provides the best platform for subsequent curses.
Good point. They definitely should. Be sure to tell us what that research says, because I have no idea.
-
@asdf said in Stanford dumps Java as introductory class:
Also, Python might not be ideal, since its designers made controversial choices, but at least it's well-designed and not a language developed in a rush, whose bugs and flaws were later standardized
- Dynamic typing
- No CASE statement
- Notorious for being ridiculously slow
- The GIL
- The "empty collection for default parameter" bug
Should I continue?
-
- Dynamic typing
That's a questionable design decision, not a bug. Also, not different from JS.
- No CASE statement
Again, see above. Also, C-style switch statements are a really bad idea; C#-style ones are the only reasonable ones. So, if you think this through, a lot of languages suck in this regard.
- Notorious for being ridiculously slow
I think you're confusing Python with Ruby here...
- The GIL
That's an implementation detail in the reference implementation, not at all a language flaw.
- The "empty collection for default parameter" bug
That's the only thing in your list I'd call an actual problem in the language itself.
-
@anonymous234 said in Stanford dumps Java as introductory class:
@mikael_svahnberg said in Stanford dumps Java as introductory class:
I keep pressing the progamme managers to at least consider some of the research on learning progamming and which language provides the best platform for subsequent curses.
Good point. They definitely should. Be sure to tell us what that research says, because I have no idea.
Neither do I, but I know it has been researched, and that it is not my job to find and read this particular piece of research. Yet.
-
@mikael_svahnberg I like the cut of your jib.
-
@raceprouk said in Stanford dumps Java as introductory class:
I like JavaScript, but I will not for a moment pretend it's an easy language to master. Understanding how the this pointer works alone takes a lot of learning.
Wat?
"When you do
something.fn()
,something
isthis
insidefn
"It's literally one sentence.
-
@cartman82 Way to ignore
bind()
,call()
, and the million edge cases they create.
-
@cartman82 said in Stanford dumps Java as introductory class:
@raceprouk said in Stanford dumps Java as introductory class:
I like JavaScript, but I will not for a moment pretend it's an easy language to master. Understanding how the this pointer works alone takes a lot of learning.
Wat?
"When you do
something.fn()
,something
isthis
insidefn
"It's literally one sentence.
it'd work that way in Java. JavaScript is special.
-
@raceprouk said in Stanford dumps Java as introductory class:
forbidden from using generics ... ArrayList for any collections
That's unpossible
-
@mikael_svahnberg said in Stanford dumps Java as introductory class:
Could be worse. At my uni they are discussing switching to Python as the first language.
But that's probably just me, and my dislike for any language that assigns a semantic meaning to whitespace...
Like javascript?
-
@jazzyjosh ArrayList isn't generic, it's a collection of Objects.
In fact, is there any practical difference between ArrayList and List<Object>?
-
@jaloopa
.Cast<>
and the like are onIEnumerable<>
, so you miss out on a large portion of the spells you'd normally be able to cast on collections.