Hacker News new | ask | show | jobs
by markus_zhang 1866 days ago
I actually hold the opposite opinion: For an advanced class such as AI (I assume you at least need to work on Data Structures before that), students should be comfortable to learn whatever language and tools they need to succeed in a couple of weeks, and even less if needed. They should be able to grasp the basic in a few days and gradually improve their knowledge about the tools and languages along the way. After all I have never seen a univeristy course that assumes excellent grasp of a language.

It is very sad that we need to take two entry level programming language classes in the first year. My university does not allow me to remove it as it's the pre-requisite of pretty much everything else. And I can't "prove" that I know Java, which I didn't but I'm confident that I can get the basics going in one day and the basic-medium stuffs in a week because I already know some C, C++ and Python.

The only class that I think should teach programming languages should be a PL class. An introductive one usually teaches three or more languages in one shot with each an example of a paradigm.

BTW the zero-credit courses sound like an excellent idea. Students do not get credits but still get education out of them. It's a great practice.

2 comments

The college I went to they would bundle these sorts of classes into other ones. For example my 'C' class was also a how to get around in unix class and it was 1 day a week. But they also had pre-reqs so you had to have the 3 other classes first before you could do that one. So they could assume a particular level of education. When you are on your 2nd or 3rd language sometimes you are not sure what is important in a new one. So sometimes it takes a bit longer to learn. Now having a few under my belt I have a good idea which bits to look at first in a language. If all you knew was java and it was 1-2 classes of it, then being dumped into lisp and picking it up in 2-3 weeks would be a challenge for many.

Java as a language is actually tiny. So are most languages. Most of the pain is in the tools, build chains, and libraries that go along with them. Also sometimes what works very well in one lang is a pain in another. For example the dictionary in python has no real equivalent in C, unless you use some lib or write something yourself. In java you would need a map or hashmap class and knowing it exists sometimes is the biggest hurdle. But at least it is in the std library. So sometimes those sharp edges bite students as they are first starting with new langs and have decent exp in another language.

I agree with you to an extent, but learning lisp is a bit more involved than just picking up another programming language; it's learning to program in a completely new paradigm. I think it's perfectly reasonable to expect students to pick up things like syntax and standard libraries on their own, but to expect everyone to seamlessly pick up the functional paradigm with no help from the instructor is a bit much. For something like this there should be at least one lecture that goes over some of the fundamentals of functional programming and gives students the vocabulary they'll need to find the solutions to any roadblocks they run into.