Fuck you, Programming Language Concepts professor!

Ditto that. I’m a mechanical engineer, for crissake (albeit one with a couple of data structures and a numerical methods class under my belt.) In the real world, where one of my apparent skills is to hop disciplines, I’ve had to pick up C/C++, Java, Perl, Python, a couple of tongues of Lisp, Prolog, and Ada on my own. I did have a class in basic Fortran 77 waybackwhen, but I can’t say that it really helped me much, or was even all that useful in the Fortran hacking that I’ve had to do on legacy code. If you’re going to a US$33k/year school–presumably one of those Tier 1 schools with a highly reputed CS department–then yes, it is expected of you (as it will be out in the commercial world) to pick up applications and languages on your own, while the professor spends his valuable time teaching concepts rather than showing you how to output “Hello World!” in n different languages. You’re supposed to be learning computer science, not computer programming.

The same is true for applications in other engineering disciplines. You need to perform controls analysis? Your prof isn’t going to sit down with you and teach you Matlab or Scilab. Want or requred to use Mathematica to format your lab reports? You’d best buy or borrow The Mathematica Book and figure it out for yourself. In my controls lab, we were expected to read, debug, and correct poorly written QuickBasic code and Relay Ladder Logic instructions with minimal references and no guidence, and as assinine as that type of thing might seem to you now, this is what you’re going to have to do when you’re taking pay. He may be a jackass, but he’s also doing you the favor of teaching you that you can and will have to learn things for yourself.

Just wait until grad school, should you opt to go that route. Nobody is going to sit and teach you anything; you’re just expected to research all the gaps of what your instructor leaves out. If you can’t hack that, then yes, you need to find something other than a technical major.

But a widely used (and abused) mess, and far better than Java. I avoid it whenever possible–and thankfully, in the current job, virtually none of the code is written in C+±-but you can’t be a serious [del]hacker[/del] programmer/computer scientist without knowing it.

Stranger

Far better for teaching, though? If you’re trying to get concepts across then things like manual memory management are just going to get in the way. I understand that students are in for pain when they move to C or C++, but so long as the instruction is careful they should be able to avoid most problems.

I will deal with this problem when I hit grad school. This is an introductory course, In-tro-duc-to-ry. It is not the instructor’s job in an introductory course to make the students sink or swim. It’s the instructor’s job to teach the students how to swim so that they don’t drown in grad school or the real world, where, I might add, they does not pay for swimming lessons. I might let it slide if the school made it clear that you need some programming experience to get through the course, but they tend not to do this in introductory courses.

I still say that the majority of CS teachers who pull this shit are blaming the beginning students for their own shitty teaching skills.

It’s not the same, Stranger. I presume you had to go to school to learn mechanical engineering to begin with, right? That probably helped you with the logical mathematical structure needed to program. That worldview is not intuitive; it has to be learned and instilled over time. In school, which is what we’re talking about.

For a fair comparison, let’s say you wanted to learn Korean, and I was your teacher. On the first day of class, instead of teaching you the hangul alphabet I go right into teaching you about sentences. Oh, you did know there was a different alphabet to learn, right? No? Well, that’s OK, I’m sure you’ll pick it up quickly enough. It’s fairly simple as far as Asian alphabets go. No time to teach it to you, I’m afraid.

OK, so I start writing down the sentences in hangul, and I start talking about the grammar structures, because that’s the basis of Korean, right? It’s no problem, because I’m sure that once you pick up the alphabet, learning the vocabulary’s going to be no sweat. Oh, it’s not? You mean you don’t know about the roots of the language and pure Korean vs. Sino-based Korean? Well, there’s something else you’re going to have to pick up on your own.

Get the picture? I could probably handle this, not because I’m any smarter than you (I would bet money that I’m quite a bit less smart than you), but because that is my background. I love languages and have a background in them, and if I took a grad school level class, I would be expected to pick this stuff up on my own. If I were a raw beginner taking an introductory Korean course in college after years in the computer field, I would expect to be pushed, but also taken through the basics in class in the beginning, not told to suck it up (and certainly not in those words).

Teaching C++ makes sense if you’re trying to teach C++. If you’re trying to teach computer science, C++ is a poor choice because the C++ will keep getting in the way of your programming concepts. Java is not so great for this either, IMO; my first language was Scheme and that has served me very well indeed.

On topic: the teacher sounds like an ass. If there’s no time to cover Bison in class, then fine, there’s no time to cover Bison, but in that case he must either a) be willing to assist students who come to him outside of class with Bison problems, or b) list familiarity with Bison among the course requirements. Anything else is needless slaughter of the innocent, all so the professor can feel macho.

Programming Languages Concepts isn’t going to be a introductory-level course, though. Not from what the OP described. If a bunch of students with no programming background were taking that course, then that would be a problem.

Keep in mind that CS is not programming. Many experts in the field have said that you could teach CS without ever teaching any programming language at all. Indeed, the theoretical roots of the field pre-date general-purpose computers.

That depends. If the students have never done any programming before, then I guess you’d be ok. If they have programmed before, it likely wasn’t in a functional language, and then functional programming is just going to get in the way of your programming concepts.

But that’s the problem, isn’t it? CS is a misnomer at best, for all but a relatively small percentage in the discipline (i.e., algorithms and theory of computation people). CSE is a much better description, IMO, with an emphasis on engineering. Surely, the tried and true “right tool for the job” adage lends itself more to an engineering, not theoretical, perspective. Putting that aside, if this course truly fit the “theoretical roots” mold, 70% of the grade shouldn’t be due to implementation assignments.

In my experience, given two students with the same level of ability but one knows C/C++ and the other is not familiar with programming, the one without programming experience will do better. They’re not crippled by the bad habits the other has inevitably picked up and can approach the concepts without trying to force them into a given framework, likely inapplicable in a programming languages course. In more poetic words, it’s easier to fill a blank slate than it is to fit material in the margins.

Oh, and Linty Fresh – the Korean analogy was much better than the ones I gave earlier. Unfortunate that my struggling with katakana and rudimentary kanji (Japanese) didn’t occur to me.

Scheme is the first language taught at CS classes at Grinnell College, at least. The class is called “Fundamentals of Computer Science” and there was a little sink or swim going on, but mostly it was a “learn to swim” course. I’m glad, too, because I would probably have been a sinker otherwise (of course, I’m not going to be a CS major).

Except that functional programming is a programming concept, and an awfully useful one, as Google has demonstrated. What I meant is that your students don’t have to learn the nuances of C++'s particular static-ish type system, or learn the peculiarities of the syntax either (mind you, Scheme can also be a pain in the neck if your editor isn’t really smart about parentheses, but fortunately good editors aren’t hard to find these days). It takes practically no time to learn Scheme and start using it, whereas C++ is kind of big.

Mirror Image egamI rorriM: MIT does it this way too. Their lectures are available via BitTorrent (with the university’s blessing), and they’re where I always point people I know who want to become good programmers.

Uhm, 10th grade in High School. And it was compulsory math for all HS students.

Calculus 2 in college (Chemical Engineering; 2nd year) included differential equation systems. The exam’s system was 17 equations with 17 unknowns, because the calculators we had could handle matrices up to 16x16 (we were all required to buy the same calculator).

Y’all need better math :stuck_out_tongue: And please stop making me feel old and foreign.

Differential equations or calculus with derivatives? When the heck did you start calculus, kindergarten? :slight_smile:

For the record, my high school didn’t even teach physics. A calculus course was added my senior year, but it was taught by a basketball coach who really didn’t care about anything academic. Heck, I remember my advanced math teacher introducing sine, cosine, and tangent while telling us that “we would never see this stuff again.” :rolleyes:

Your high school didn’t teach physics? That’s appalling!

Seconded. My CS education involved a lot of seemingly impossible sink-or-swim assignments that literally made my hair turn gray at the time, but it’s served me well since. :slight_smile:

Also, a tip for the OP: Talk to your friends and classmates. I guarantee that someone in your class has experience with the subject at hand and can help you out. Form alliances and collaborate (to the extent allowed by the course rules).

That really depends on the CS program. My school offers both a CS program and a SE program, and while they do share some courses, for the most part the programs are very different. Perhaps my experience in my CS program is atypical, because we do a lot of theory. I currently have 4 CS assignments to do and only one of them involves handing in any code.

I’m not sure that I agree with this. I’ve taken several Math courses for Math majors, so they were definitely theoretical courses. Despite this, most of the assignments and exams were far more concerned with application than theory. It can be quite difficult to test knowledge of theory without having the student put the theory into practise.

Were those fairly low-level math classes? Otherwise I find that really surprising.

First and second-year courses. But for me, the equivalent of Programming Languages Concepts was a second-year course.

In retrospect, a comparison to science courses may have been better, but I haven’t taken many of them so I couldn’t make the comparison.

I’ve had a similar experience, and it isn’t a case of asking for “spoon feeding”. It is simply asking that the university provide a well-defined curriculum with structured available resources. The syllabus should have included all necessary course materials and software directly day one, either via textbook and publisher’s disk, or through the university network.

In my case, I took an engineering mathmatics course that should have been routine. The professor’s independently-developed curriculum (warning sign #1) required 3 additional “recommended” texts that were essential to completion of the course. All assignments and tests were to be scripted and evaluated in MATLAB, which none of the students had ever used before, and that the university did not require as a prerequisite. Our required textbook was set aside in favor of spontaneous “google” research projects.

“Sink or swim” is not an instructional technique, especially when instruction is being paid for by the students.

So the specifications for our last homework assignment have been posted. Three mandatory specs and 6 optional ones (i.e. VERY DIFFICULT). Now by optional you’re probably thinking “they don’t have to be done, but if we do wanna take a crack at them, maybe we’ll get some extra points.” Yeah, that’s what I would think to.

Until we went to his class today. See, as it turns out, if so much as ONE single person attempts any of the “optional” specs, those particular specs become mandatory for the whole class. That’s right, they count AGAINST us. So if one person attempts one, or two, he’ll get points and the rest of us will get docked points for not attempting it.

That’s bizarre! It also sounds like it might be against university policy – any way you can check into that?

My friends and I are going to the administration office tomorrow. This man shouldn’t be teaching.