
Teaching Two Programming Languages in the First CS Course - rbanffy
https://cacm.acm.org/blogs/blog-cacm/228006-teaching-two-programming-languages-in-the-first-cs-course/fulltext
======
jowiar
My concern with most research is that it often attempts to generalize/control
for "type of programming language" with "a specific implementation of that
type of programming language".

At least in my experience, the implementation matters. And then the number of
papers that generalize results about "an object oriented language" when they
mean "Java" is sickening. See also research on productivity w/ "static typing"
vs. "dynamic typing".

One of the worst things about learning to program at school in the oughts was
that Java was the language of choice. I have no problems (more than any other
language) with Java as a professional tool, but Java as a first language is a
disaster with its conceptual overload.

------
niklasd
At my university we started with C (and some Assembly) and contiued with Java
(and I privatly learn Python). I really liked to start with C and then move to
a language with a higher abstraction – so you can understand what these higher
languages make easier, and what kind of control you lose when you use them.
Now knowing the basics of three languages, I find it easy to transfer concepts
like functions/loops etc. beetween them, however, the different syntax can be
confusion and I think the switching costs sometimes really decelerate the
learning process.

~~~
nothrabannosir
Couldn’t agree more. We started with java, then moved on to C and it was a
colossal failure. They tried to explain concepts like vtables and static
methods vs instance methods to people who had never seen a program in their
life and it was a disaster. I basically guessed everything on the exam, and I
remember thinking “this is such random nonsense, how could anybody ever know
how static works?” The next semester we move on to C, they casually explain
how you would implement vtables and classes using structs, and suddenly
everything clicks. I retroactively retook the Java course in my mind that
semester.

I have always thought of that first semester as a total waste of time. I am
still a bit angry at the sheer stubborn incompetence of our department that
led to this curriculum.

Jesus. Vtables. Who even thinks of that? Java is so complex. Ugh. Teach your
maths freshmen calculus before you cover arithmetic, while you’re at it.

------
cpeterso
A friend attended UC Berkeley (long ago) and said the first semester language
was Scheme and the second semester language was assembly. Subsequent classes
used C/C++. That sounded like a useful round trip from high-level algorithms
to the metal and back to a practical language in between.

------
pjmlp
What is so hard about it?

At my university it was common to teach C++ and Pascal during the first year,
to both CS and EE degrees.

