Earlier quoted context omitted.
You have to meta it one level. The reason C was taught was because it was close to the machine without actually being assembly language. That's pedagogically useful because it exposes the student to all the properties of the Turing machine without having to be too specific about implementation (not that MIPS assembly isn't also a good choice). Similarly, the reason to teach Smalltalk is to teach OO, the reason to tea…
You claim that "the only reasons Java is taught is because students demand it," and it appears your objection is based on this claim. Do you have any support for this claim outside of your personal belief? My undergrad made the switch to Java right before I graduated, and they are a counter-example to your claim. Also, I doubt your claim about C is true. C was used because it was close to the machine without actually…
Why I am Not a Professor, or The Decline and Fall of the British University
91–100 of 127 posts
Re: Why I am Not a Professor, or The Decline and Fall of the British University
#92Earlier quoted context omitted.
My god. It's truly amazing how any technical or academic topic seems to degenerate into a Java vs C debate. Is there a law for that?
I think the "Java C"-debate is an instance of the problem "Should studying computer science be mindwreckingly hard or should studying computer science make you able to program things?". Plus, you can also bash Java in this special instance, which is always nice coughs . Other instances include "Compiler construction or not?", "Theoretical computer science or not?", "Assembler or not?".
Your wording is heavily loaded. In any case, learning computer science should absolutely not be about learning to program.
Re: Why I am Not a Professor, or The Decline and Fall of the British University
#93Earlier quoted context omitted.
Java is an improvement though, especially under Eclipse. Even better would be using Python followed by Scala. Perhaps the issue is that too much class time is spent teaching details of a language and its libraries.
No. Java and Python and Scala are not improvements. Why? They're too easy. Pointers are hard (relatively). Compiler design is hard. Complexity theory is hard. A loss in any one of these sections is a loss to the degree as a whole. The ACM ICPC helps a little in promoting intelligent problem solving (every CS student should be able to write a program to use Dijkstra's algorithm in under 20 minutes from memory ), but i…
Re: Why I am Not a Professor, or The Decline and Fall of the British University
#94Earlier quoted context omitted.
This is the result of the university becoming more of a business than anything else. If you start flunking people out, you lose revenue.
It might be the socialist in me, but schools should always be public. No business should be involved in educating the next generation. I think of universities more like a R&D department for the general public. (which also is why I think all software developed in universities should be Free)
Almost every country in the world is more socialist that the (former) U.S. None of those countries' university systems come close to that of the U.S. And what are the best universities in the U.S.? MIT, CalTech, Harvard, Stanford, Yale, Princeton, Dartmouth, etc. (private) vs. UC Berkeley and UCLA (public). The latter two are soon to feel the financial collapse of California.
Re: Why I am Not a Professor, or The Decline and Fall of the British University
#95Re: Why I am Not a Professor, or The Decline and Fall of the British University
#96Knowing classic literature was not (functionally) why upper class kids of past times went on to earn much more than their lower class peers. It was just part of the symbolic glue that allowed members of that class to recognise each other.
Throughout history, access to good education was by birth, not by talent.
Most analyses featuring Mozart are flawed. It's probably because nobody is quite sure whether the purpose of education systems is to find those rare individuals with innate genius, or rather to teach a large number of reasonably intelligent people something so they are more capable of solving particular problems as a result. I don't think there is one approach that is suitable for doing both.
Mozart is often introduced into the debate by those demanding more stringent standards of admission. However, if it's about finding the Mozarts of the world, radical and indiscriminate broadening of access must be the top priority.
It's the nature of innate genius that it occurs just as likely in illiterate african street kids as in the offspring of english professors. Taking on a large number of totally unprepared kids and exposing them to interesting stuff is probably the most beneficial approach to finding the Mozarts. Demanding good preparation and high entry standards is a social filter, not a talent filter.
So I think, universities must commit themselves to actually teaching students something instead of whining about low entry standards. I fully understand that the author of the article does more than that, and I agree with his other points.
But let's face it, universities are there to bring as many people as possible onto a high level of knowledge and skill. The goals are largely economic ones and that should not be lamented. They are no longer the kind of upper class culture club they once were, and they are not primarily an endeavour to find the Mozarts and Einsteins.
Re: Why I am Not a Professor, or The Decline and Fall of the British University
#97The only thing this article tells us is the quality of the students that study at Leeds. It's a bit of a stretch to extrapolate from experience of one department in one university to claim that the same is happening everywhere.
Re: Why I am Not a Professor, or The Decline and Fall of the British University
#98Earlier quoted context omitted.
I think the "Java C"-debate is an instance of the problem "Should studying computer science be mindwreckingly hard or should studying computer science make you able to program things?". Plus, you can also bash Java in this special instance, which is always nice coughs . Other instances include "Compiler construction or not?", "Theoretical computer science or not?", "Assembler or not?".
That would hold up if learning a bit of memory management was actually "mindwreckingly hard".
Re: Why I am Not a Professor, or The Decline and Fall of the British University
#99I can't comment on the US experience, but as a student in the UK in the 80s and Canada in the 90s I concur with Mark Tarver. This is not just a CS issue, it's universal and the real damage is being done in the second tier establishments where grade inflation and dumbed-down courses are endemic. The tier one establishments (Oxbrige, Ivy League etc) can still use their own screening methodologies for aptitude and smart…
> This is not just a CS issue, it's universal and the real damage is being done in the second tier establishments where grade inflation and dumbed-down courses are endemic. It's worse that that, because the dumbing down doesn't just effect universities. Secondary school science education has also been badly hit. The links that follow contain actual questions from GCSE science exams (note for non-British people: a GCS…
No it doesn't. The question is "which organ contains light receptors?", which although simple, does requires some knowledge of scientific jargon. And this is on the foundation paper, for which the maximum mark is a C - IIRC, the intermediate and higher papers don't include questions this easy.
This type of question is not for A-Level candidates, it's for distinguishing between the weaker students. Of course it's worthwhile keeping track of what kind of questions appear in exams as a benchmark of educational standards, but only looking at the worst examples you can find does not give a clear snapshot.
Re: Why I am Not a Professor, or The Decline and Fall of the British University
#100And here we have the reason why just about every single CS department in the US teaches Java instead of C or Scheme.
I think comments like there are border-line trolls in a community like HN. The languages used in various parts of a CS curriculum are one component to the whole. Holding up that component as the reason that the sky is falling is, at best, disingenuous. I can construct terrible CS curriculums that start with C, and terrific ones that start with Java. If those who construct the curriculum want the beginning courses to…
I don't know that Java does this all the much better than C. The problem with C for a beginning student isn't so much that you have to manage memory manually--it generally takes a few weeks to even get to malloc() in a C-based introductory course--but that C gets in your way with explicit typing, #includes, etc. Java does away with some of that but introduces its own OO scaffolding to get in your way too. Instead of having to write main()s and #include's, the Java student has to enclose their functions in a class and so forth. Let's compare Hello World in C, Java, and C#.
C:
#include
int main(void)
{
printf("Hello, World!\n");
return 0;
}
Java: class HelloWorldApp
{
public static void main(String[] args)
{
System.out.println("Hello World!"); // Display the string
}
}
C#: class Hello
{
static void Main()
{
System.Console.WriteLine("Hello World!");
}
}
The Java and C# examples are even more cluttered than the C example when it comes to superfluous tokens: it has a class declaration, the method signature is more unnecessarily elaborate, and the print command has like three levels of object-drilldown in it. When you get to the simple procedural programs that a beginning student will write, this mysterious crud remains unresolved for longer. It's not enough to explain typing as you would in C or Pascal, but you have to talk about object-oriented programming before you get into problems complex enough to justify that level of abstraction.If you really want an abstract language to enforce algorithmic thinking, pick one that doesn't have all that extra mental burden when you first approach it.
Perl 5.8
print "Hello World!\n"
Perl 5.10 say "Hello World!"
Python print "Hello World!"
Ruby print "Hello World!"
The cool thing is that these languages still have subroutines and classes and so forth, but they don't force you to declare a class, declare a subroutine, and call an object method just to code "hello world".Java has advantages over C. These advantages don't include "letting beginning programmers focus on algorithmic thinking by using high level abstractions". Java's higher level than C in that it protects you from naked pointers and lets you do OOP, but that's not the type of high-level abstraction that helps a beginning programmer, especially not when it comes at the cost of forcing them to put everything in classes and methods.
If those who construct the curriculum want the beginning courses to focus on algorithmic thinking, I think it's fair to use a language that abstracts away as much as possible. We have no shortage of good interpreted languages to accomplish this.