# Fuck you, Programming Language Concepts professor!

**URL:** <https://boards.straightdope.com/t/fuck-you-programming-language-concepts-professor/357592>\
**Category:** The BBQ Pit\
**Created:** [May 21, 2006, 1:19am UTC](https://boards.straightdope.com/t/fuck-you-programming-language-concepts-professor/357592 "2006-05-21T01:19:54Z")\
**Posts on this page:** 20\
**Page:** 3

<div class="post-metadata">

**Author:** ![Stranger\_On\_A\_Train](https://avatars.discourse-cdn.com/v4/letter/s/13edae/32.png) [@Stranger\_On\_A\_Train](https://boards.straightdope.com/u/Stranger_On_A_Train)\
**Post date:** [May 22, 2006, 1:10am UTC](https://boards.straightdope.com/t/fuck-you-programming-language-concepts-professor/357592/41 "2006-05-22T01:10:54Z")

</div>

> [@if6was9](#):
>
> Kinda works that way IRL. Same with learning new stuff for a project. Just sayin…

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.

> [@Dominic Mulligan](#):
>
> No it isn’t. C++ is a mess.

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

---

<div class="post-metadata">

**Author:** ![Rysto](https://avatars.discourse-cdn.com/v4/letter/r/ecccb3/32.png) [@Rysto](https://boards.straightdope.com/u/Rysto)\
**Post date:** [May 22, 2006, 1:28am UTC](https://boards.straightdope.com/t/fuck-you-programming-language-concepts-professor/357592/42 "2006-05-22T01:28:32Z")

</div>

> [@Stranger On A Train](#):
>
> 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.

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.

---

<div class="post-metadata">

**Author:** ![Linty\_Fresh](https://avatars.discourse-cdn.com/v4/letter/l/c5a1d2/32.png) [@Linty\_Fresh](https://boards.straightdope.com/u/Linty_Fresh)\
**Post date:** [May 22, 2006, 1:51am UTC](https://boards.straightdope.com/t/fuck-you-programming-language-concepts-professor/357592/43 "2006-05-22T01:51:47Z")

</div>

> [@Stranger On A Train](#):
>
> 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.

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.

> [@](#):
>
> 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.

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).

---

<div class="post-metadata">

**Author:** ![Taran](https://avatars.discourse-cdn.com/v4/letter/t/edb3f5/32.png) [@Taran](https://boards.straightdope.com/u/Taran)\
**Post date:** [May 22, 2006, 2:08am UTC](https://boards.straightdope.com/t/fuck-you-programming-language-concepts-professor/357592/44 "2006-05-22T02:08:36Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![Rysto](https://avatars.discourse-cdn.com/v4/letter/r/ecccb3/32.png) [@Rysto](https://boards.straightdope.com/u/Rysto)\
**Post date:** [May 22, 2006, 3:15am UTC](https://boards.straightdope.com/t/fuck-you-programming-language-concepts-professor/357592/45 "2006-05-22T03:15:53Z")

</div>

> [@Linty Fresh](#):
>
> 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).

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.

> [@Taran](#):
>
> 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.

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.

---

<div class="post-metadata">

**Author:** ![Digital\_Stimulus](https://avatars.discourse-cdn.com/v4/letter/d/aeb1de/32.png) [@Digital\_Stimulus](https://boards.straightdope.com/u/Digital_Stimulus)\
**Post date:** [May 22, 2006, 4:46am UTC](https://boards.straightdope.com/t/fuck-you-programming-language-concepts-professor/357592/46 "2006-05-22T04:46:57Z")

</div>

> [@Rysto](#):
>
> 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.

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.

> [@](#):
>
> 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.

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.

---

<div class="post-metadata">

**Author:** ![Mirror\_Image\_egamI\_rorriM](https://avatars.discourse-cdn.com/v4/letter/m/e56c9b/32.png) [@Mirror\_Image\_egamI\_rorriM](https://boards.straightdope.com/u/Mirror_Image_egamI_rorriM)\
**Post date:** [May 22, 2006, 5:23am UTC](https://boards.straightdope.com/t/fuck-you-programming-language-concepts-professor/357592/47 "2006-05-22T05:23:33Z")

</div>

> [@Digital Stimulus](#):
>
> …Personally, I think Scheme is the best choice for a first course; syntax just doesn’t get any easier (assuming a parenthesis matching editor), debugging is relatively straightforward (as it’s interpreted), recursion is (necessarily) adequately covered, and students get some exposure to functional programming.

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).

---

<div class="post-metadata">

**Author:** ![Taran](https://avatars.discourse-cdn.com/v4/letter/t/edb3f5/32.png) [@Taran](https://boards.straightdope.com/u/Taran)\
**Post date:** [May 22, 2006, 12:04pm UTC](https://boards.straightdope.com/t/fuck-you-programming-language-concepts-professor/357592/48 "2006-05-22T12:04:59Z")

</div>

> [@Rysto](#):
>
> 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.

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.

---

<div class="post-metadata">

**Author:** ![Nava](https://avatars.discourse-cdn.com/v4/letter/n/da6949/32.png) [@Nava](https://boards.straightdope.com/u/Nava)\
**Post date:** [May 22, 2006, 3:17pm UTC](https://boards.straightdope.com/t/fuck-you-programming-language-concepts-professor/357592/49 "2006-05-22T15:17:17Z")

</div>

> [@Digital Stimulus](#):
>
> …it’s like asking a freshman or sophomore math major to be able to do differential equations…

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 😛 And please stop making me feel old and foreign.

---

<div class="post-metadata">

**Author:** ![Voyager](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/voyager/32/133_2.png) [@Voyager](https://boards.straightdope.com/u/Voyager)\
**Post date:** [May 22, 2006, 4:17pm UTC](https://boards.straightdope.com/t/fuck-you-programming-language-concepts-professor/357592/50 "2006-05-22T16:17:51Z")

</div>

> [@Nava](#):
>
> Uhm, 10th grade in High School. And it was compulsory math for all HS students.
> 
> Y’all need better math 😛 And please stop making me feel old and foreign.

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

---

<div class="post-metadata">

**Author:** ![WolfpackJeep](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/wolfpackjeep/32/2921_2.png) [@WolfpackJeep](https://boards.straightdope.com/u/WolfpackJeep)\
**Post date:** [May 22, 2006, 4:40pm UTC](https://boards.straightdope.com/t/fuck-you-programming-language-concepts-professor/357592/51 "2006-05-22T16:40:42Z")

</div>

> [@Nava](#):
>
> Uhm, 10th grade in High School. And it was compulsory math for all HS students.

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:

---

<div class="post-metadata">

**Author:** ![Capt.Ridley\_s\_Shooting\_Party](https://avatars.discourse-cdn.com/v4/letter/c/cc9497/32.png) [@Capt.Ridley\_s\_Shooting\_Party](https://boards.straightdope.com/u/Capt.Ridley_s_Shooting_Party)\
**Post date:** [May 22, 2006, 5:17pm UTC](https://boards.straightdope.com/t/fuck-you-programming-language-concepts-professor/357592/52 "2006-05-22T17:17:00Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Autumn\_Almanac](https://avatars.discourse-cdn.com/v4/letter/a/d26b3c/32.png) [@Autumn\_Almanac](https://boards.straightdope.com/u/Autumn_Almanac)\
**Post date:** [May 22, 2006, 5:35pm UTC](https://boards.straightdope.com/t/fuck-you-programming-language-concepts-professor/357592/53 "2006-05-22T17:35:26Z")

</div>

> [@Shagnasty](#):
>
> I think he is doing you a favor. Many IT jobs are just like that day in and day out. I know mine is. The absolute most important skill you need to be successful in computer related work is the ability and desire to teach yourself. Technologies come and go at light-speed so most things you learn in college will be obsolete in terms of specific technology when you get a job. Most workplaces don’t actually teach people anything except at the basic levels. IT people get thrown a scary project using stuff they have never seen before and are expected to ask questions and figure it out.

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. 🙂

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).

---

<div class="post-metadata">

**Author:** ![Rysto](https://avatars.discourse-cdn.com/v4/letter/r/ecccb3/32.png) [@Rysto](https://boards.straightdope.com/u/Rysto)\
**Post date:** [May 22, 2006, 5:47pm UTC](https://boards.straightdope.com/t/fuck-you-programming-language-concepts-professor/357592/54 "2006-05-22T17:47:05Z")

</div>

> [@Digital Stimulus](#):
>
> 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.

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.

> [@](#):
>
> Putting that aside, if this course truly fit the “theoretical roots” mold, 70% of the grade shouldn’t be due to implementation assignments.

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.

---

<div class="post-metadata">

**Author:** ![ultrafilter](https://avatars.discourse-cdn.com/v4/letter/u/3d9bf3/32.png) [@ultrafilter](https://boards.straightdope.com/u/ultrafilter)\
**Post date:** [May 22, 2006, 5:55pm UTC](https://boards.straightdope.com/t/fuck-you-programming-language-concepts-professor/357592/55 "2006-05-22T17:55:03Z")

</div>

> [@Rysto](#):
>
> 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.

---

<div class="post-metadata">

**Author:** ![Rysto](https://avatars.discourse-cdn.com/v4/letter/r/ecccb3/32.png) [@Rysto](https://boards.straightdope.com/u/Rysto)\
**Post date:** [May 22, 2006, 6:07pm UTC](https://boards.straightdope.com/t/fuck-you-programming-language-concepts-professor/357592/56 "2006-05-22T18:07:50Z")

</div>

> [@ultrafilter](#):
>
> 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.

---

<div class="post-metadata">

**Author:** ![GargoyleWB](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/gargoylewb/32/199_2.png) [@GargoyleWB](https://boards.straightdope.com/u/GargoyleWB)\
**Post date:** [May 22, 2006, 6:30pm UTC](https://boards.straightdope.com/t/fuck-you-programming-language-concepts-professor/357592/57 "2006-05-22T18:30:26Z")

</div>

> [@Monty](#):
>
> I’d venture to say that if someone expects to be spoon-fed at a university, then they are in th wrong kind of school. I can’t think of any major offhand that spoon-feeds people.

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.

---

<div class="post-metadata">

**Author:** ![Soapbox\_Monkey](https://avatars.discourse-cdn.com/v4/letter/s/ed655f/32.png) [@Soapbox\_Monkey](https://boards.straightdope.com/u/Soapbox_Monkey)\
**Post date:** [May 24, 2006, 3:52am UTC](https://boards.straightdope.com/t/fuck-you-programming-language-concepts-professor/357592/58 "2006-05-24T03:52:48Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![WolfpackJeep](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/wolfpackjeep/32/2921_2.png) [@WolfpackJeep](https://boards.straightdope.com/u/WolfpackJeep)\
**Post date:** [May 24, 2006, 4:08am UTC](https://boards.straightdope.com/t/fuck-you-programming-language-concepts-professor/357592/59 "2006-05-24T04:08:03Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Soapbox\_Monkey](https://avatars.discourse-cdn.com/v4/letter/s/ed655f/32.png) [@Soapbox\_Monkey](https://boards.straightdope.com/u/Soapbox_Monkey)\
**Post date:** [May 24, 2006, 4:31am UTC](https://boards.straightdope.com/t/fuck-you-programming-language-concepts-professor/357592/60 "2006-05-24T04:31:21Z")

</div>

> [@Jeep's Phoenix](#):
>
> 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.

[Previous page](https://boards.straightdope.com/t/fuck-you-programming-language-concepts-professor/357592.md?page=2)

[Next page](https://boards.straightdope.com/t/fuck-you-programming-language-concepts-professor/357592.md?page=4)
