Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change

Teaching Perl inside an Academic Course

by Mago (Parson)
on Mar 08, 2004 at 21:14 UTC ( #334931=perlmeditation: print w/replies, xml ) Need Help??

Which would be the advantages and benefits of school or college teaching Perl to it's students?


  • Comment on Teaching Perl inside an Academic Course

Replies are listed 'Best First'.
Re: Academic Formation
by flyingmoose (Priest) on Mar 08, 2004 at 21:43 UTC
    Which would be the advantages and benefits of Perl's usage on academic formation?

    Can you please elaborate on the question? I do not really understand what you are asking.

    If you are discussing academic (teaching) languages, typically one goes more towards "pure" languages rather than hybrids like Perl -- aka a mostly-pure OO language (such as my least-favorite language Java) (for OO) or Lisp/Scheme (for functional programming) or C/C++ so development can start in a procedural way. IMHO, Perl allows too many shortcuts and too many styles to be a 'first' language for training disciplined programmers. Perl is a fine second or third language. In other words, it's too powerful in the hands of the inexperienced because there are no rules. That is, of course, why I like it. I think Universities should offer at least a Perl short-course, though, once the students have grasped the various styles -- the blend of them in Perl is very productive -- it makes computing a Zen artform.

    If you are using it in research, well, I still think a more "pure" language is historically encouraged -- though it is possible to be Lispy in Perl should you want to -- say if your research was string extensive or needed a ton of CPAN modules or could benefit from something like POE. In theory, choice of languages SHOULD NOT be largely relevant in academics, though your colleagues might still be biased I.e. a lot of "Software Engineering" types like to kiss Java's hairy butt and AI guys like Lisp/Scheme, and would choke if you used Perl. But if you are doing basic algorithms or networking or speech synthesis -- no one will care as long as the tools work and what you publish is high quality. In these areas, theory is what matters most. My Computer Graphics professor dabbled in speech recognition using Mathematica. Heck, that's barely even a language -- but it worked for him.

    If I got the question wrong, I apologize. But hey, I work in the "real" world, what do I know!

      IMHO, the only justification for Java for a teaching language is to make CS courses buzzword-compliant. Python and Ruby are much better for that task.

      : () { :|:& };:

      Note: All code is untested, unless otherwise stated

        I agree with you 100% here -- probably more so with Ruby than Python (due to the self and __ and ___ aspects).

        Java is widely used, unfortunately, due to industry dominance and the insistance of students that they learn Java. IMHO, Students should be learning computer science, not languages. Might as well use languages that are more conducive to thought and less to business programming. Java should be left to a short-course.

      I think Universities should offer at least a Perl short-course, though, once the students have grasped the various styles -- the blend of them in Perl is very productive -- it makes computing a Zen artform.
      I disagree. Universities should use a minimal (when it comes to syntax) language to teach students how to program. (Pascal, Python, Java for instance). After that, they should be able to learn themselves new language. If not, they shouldn't be at university.


        Short courses, at least where I come from, are 1-hr courses that are basically worthless if you are trying to accumulate credits. Our teaching language started with C++, eventually the university switched to Java (yes, I know, industry whoring). (Pascal was used in the early 90's). Beyond that, a few short courses were avialable in C++, and we were expected to pick up languages like Fortran, Lisp, Matlab (if that's a language), etc, for various courses. Spoonfeeding this was not. However, if it weren't for the Perl short course, half the students would have never even tried Perl -- and they would have not come to love it. That had a huge influence on me, but it was a delayed one -- once I started applying what I knew in industry it took off. Still, many folks who never saw Perl in college never picked it up -- partly because they weren't told why it was cool and didn't have folks to help them with it. Perl is not a language, unfortunately, that is heard of much on the streets. C++ and Java (gag, choke) are.

        Regardless of what your ivory-tower (to use your phrase you used against me previously) opinions hold, eventually most students will wind up in industry, and interviews will ask "Did you learn XXX" in school? It's fine to say "I learned XXX" on my own, but there is a lot to be said to having course experience in a language. It's not as good as "job experience" to them, but it's close. They have some assurance that, at least, you have a strong chance of learning it correctly. A University does have to make a tradeoff between being a slave to industry and being a slave to raw academics. A good one will allow students to go in both directions. Especially in today's economy, a school that only produces Pascal folks (and can't say they used language XXX in coursework), is not going to get anyone a job. Is that a universities job? No. Especially not in the Greek sense. But unfortunately everyone does not live in the "ivory tower". People go to college and expect to get jobs in their chosen field.

        Having course experience in Pascal (well, I do) is completely worthless to industry. No one cares about Pascal. It's a horribly broken language for doing anything interesting beyond simulating ATM machines. Do you list Pascal on your resume? I don't. Yes, I know how to write rigourously typed procedural code in a language with a poor standard library. Oh boy, we need that guy. Hire him right away!

        I do agree that colleges should *not* act as technical schools, but to ignore the major applications of the areas being taught, by say, exclusively using Pascal in all courses, is absolutely stupid. For instance, a university teaching courses labelled after a programming language, after Freshman year, have problems. You should not be able to take a class labelled Perl for 3 credit hours, nor should you be able to comprise your education of languages -- but forced exposure to multiple languages is important, nay, CRITICAL, to thinking outside the box. Binding someone to one language will make them think only in that one language, to learn languages quickly (I frequently claim I can learn anything...and it's true...who can't?), you need to know paradigms from all over the place. Every obscure language helps. And when you are starting out, it's harder to pick up new languages from scratch, especially when they are as far apart as Pascal and Lisp.

        My AI class, for instance, used Lisp -- not Pascal. Pascal here would be stupid. As for learning the language, yes, this was on us, but we were given pointers. AI in Pascal is a round peg and a square hole. As is OO Software Design in Pascal. Pascal is the straw-man here, but diversity in languages is important, and to teach Computer Science pretending languages don't matter is somewhat misleading -- yes, languages in theory don't matter, but languages are very very real.

Re: Academic Formation
by dragonchild (Archbishop) on Mar 09, 2004 at 01:09 UTC
    I'm going to assume that academic formation is another way of saying "teaching students how to program".

    I think that Perl is both very poorly and very excellently suited to being a teaching language.

    It is a very poor first language because

    • It is weakly typed
    • It allows for runtime modification of processing environment
    • It allows you to do anything, (optionally) enforcing nothing

    First languages should really be something like Pascal, which is a very strict B&D (bondage and discipline) language. One needs to learn the fundamentals of structure before one can play. (I am a firm believer in a formalized guild system.)

    It is an excellent second language for pretty much every reason I mentioned above, and then some. Once someone has learned why one should not do X or Y, then it is time to learn when one must do those things. Perl is an playground par excellence.

    That said, it is all about the teacher and the syllabus. If one has a good teacher and a strong syllabus, you could teach programming in PDP-11 ASM and turn out excellent developers. On the flip side, one could take a language designed for teaching (Pascal) and make a mess of things with a poor teacher and weak syllabus. *shrugs*

    Remember - if you type for more than 20-40% of your time, you're typing too much.

    We are the carpenters and bricklayers of the Information Age.

    Please remember that I'm crufty and crochety. All opinions are purely mine and all code is untested, unless otherwise specified.

Re: Academic Formation
by BrowserUk (Patriarch) on Mar 08, 2004 at 22:36 UTC

    Hm. "academic formation"? Do you mean a school, college or other academic body perhaps?

    If so, of the two possible interpretations of your question:

    [the affect of] using Perl on a school...


    ...[the affect on] a school, of using Perl...

    only the latter really makes any sense, so I'd translate your question into

    What are the advantages and benefits of school or college teaching Perl to it's students.

    Again, making the assumption that you are talking about the advantages to the students and teaching staff rather than any administrative advantages, my answer would be:

    Perl is a very easy langauge to get started with. It also comes with a huge body of very powerful components that are free to download and use. This means that even those with no previous experience of programming can very rapidly be writing short, uncomplicate programs that do very real, interesting and powerful things.

    The short learning curve required to get something simple going, means that students are more likely to get "hooked by the programmming bug" than if their first experience of programming is one of the drier, more esoteric "teaching langauges".

    Used correctly (by the teaching staff), Perl is more likely to engender the enthusiasmm of the students to want to learn programming. This is, of itself, probably the greatest single advantage that any academic body can gain from the use of any teaching tool. It is also the greatest gift any teacher can give his students. Once a student wants to learn something, the battle is half (if not more) won.

    To temper that recommendation: Perl should not be the only langauge taught. As a language, it is too loose, and too forgiving of bad programming and sloppy technique to form the only basis of a student's learning. It needs to be combine with a language that requires and instills discipline. Something with strong typing, comprehensive error detection and preferably, a fairly low-level view of the machine. Modula, Pascal or Java (in roughly my personal order of preference) would make good companions to Perl.

    Only by experiencing the constraints, and understanding the low-level of one or more other languages, will the student learn to appreciate (and use correctly) the power and flexibility of Perl.

    Examine what is said, not who speaks.
    "Efficiency is intelligent laziness." -David Dunham
    "Think for yourself!" - Abigail
Re: Academic Formation
by Abigail-II (Bishop) on Mar 09, 2004 at 09:57 UTC
    I don't think languages belong in an academic curriculum (at least not in Computing Science). At least no more than metal welding belongs to the curriculum of the astronomy department.

    But when it comes to teaching algorithms or software engineering, I think Perl is a bad choice. You only have to look at Mastering Algorithms to see why. With a rich language like Perl, it's too easy to get bogged down in the language details, and it's hard to focus on something else.


Re: Teaching Perl inside an Academic Course
by blue_cowdawg (Monsignor) on Mar 09, 2004 at 15:15 UTC

        Which would be the advantages and benefits of school or college teaching Perl to it's students?

    A concise answer to that question is: "it depends"

    Mostly it depends on the goals and desires of the overall course curriculum in question.

    I was once tasked with teaching an intermediate course in Unix Programming to college level continuaing education students.

    This course was supposedly a course to take budding programmers and teach them "how to be able to program in a Unix environment" which is a very ambiguous goal IMnsHO.

    One of the failings of the fine institution in question that I had to deal with was a total lack of any sort of curriculum or coordination between other courses within the program.

    After much Q&A with the director of the program I came to the conclusion that what they wanted me to teach my students was an all-inclusive course in Unix concepts (file systems, process lifespan, etc. etc.) and do it in 10 weeks. Great! I was going to be giving these poor students of mine a drink of water from a 3" firehose.

    Hence after preparing my own curriculum and preparing to teach wonder subjects like fork(), exec(), file system structures and other subjects replete with C API programming examples I found on my first night of class that I had no common ground to talk to my students from. They had no prior C language knowlege and the only programming language they had any exposure to was Java and/or Visual Basic. Hardly an auspicious start to a class where the concepts I was tasked with teaching required some knowledge of the underlying system and system calls.

    As strange as this might seem to some folks, but not so strange if you think about it for a while I decided that rather than try and teach my students a crash course in C programming (pointers anyone?) I decided that I could teach a crash course in Perl.

    From within the confines of Perl I could demonstrate what a child process inherits from its parent process. I could demonstrate IPC. I could even assign my students homework assignments that let them demonstrate these principles and other Unix related principles for themselves.

    Best of all, compared to teaching a course in C, teaching Perl was a fairly quick process. My students were by no means Perl gurus at the end of the 3 nights I spent on the subject, but they could write workable code even if it would be code that would make the average monk on PM cringe. (They were newbies after all.)

    Lastly, I did them a service IMHO in giving them another tool in their toolbox when they go out in the Real World® and ply their trade. They were only being taught Java and/or Visual Basic and Perl was something the school in its infinite wisdom hadn't thought to add to the curriculum.

    As a side note: in my class handouts I made sure they were armed with lots of web links to on-line references to learn more about the Perl language, lists of books to add to their reading list as well as a link to the PM site.

    Peter L. Berghold -- Unix Professional
    Peter at Berghold dot Net
       Dog trainer, dog agility exhibitor, brewer of fine Belgian style ales. Happiness is a warm, tired, contented dog curled up at your side and a good Belgian ale in your chalice.
Re: Academic Formation
by Louis_Wu (Chaplain) on Mar 08, 2004 at 21:44 UTC
    Which would be the advantages and benefits of Perl's usage on academic formation?
    Well, that depends on what "academic formation" is. What does "formation" mean?


    "Through the Monastery I've become aware of the importance of good coding practices: use strict; use warnings; profile before optimizing; seek thee a better algorithm; test, test, and test again." - blyman, in a reply on testing.

      "Formation" means 'education'--formação in the OP's native language. Educação, on the other hand, is 'rearing' or 'upbringing'. I'm so used to Euro-English that I didn't even notice that this would be a problem to understanding. ;)


      Damon Allen Davison

Teaching Perl as the First Language in an Academic Course - Good or Bad Thing?
by monsieur_champs (Curate) on Mar 09, 2004 at 14:14 UTC

    Hello, fellow Monks.
    Mago just asked me to try to rewrite his question. Reading the answers, I figured ou that the most of the fellows just figured out The Right Thing and gave his/her answers for the Right Question.

    On the other side, several Monks just asked "what's going on here?" and can't figure that out for (?:him|her)selves.

    The question Mago asked is more correctly expressed like this:

    Please tell me what you think about teaching Perl as the first-language for students at a computer science academic course, what do you see as good things or bad things in choosing perl as the first language?

    "In few words, translating PerlMonks documentation and best articles to other languages is like building a bridge to join other Perl communities into PerlMonks family. This makes the family bigger, the knowledge greater, the parties better and the life easier." -- monsieur_champs

      Perl is too loose for a first language. A first language should be something like Pascal (designed as a teaching language), which is strongly typed and doesn't allow much flexibility. A first language should be something that teaches good practices.

      Later, a student should be taught when those practices are unwarranted. But, those situations are very rare and usually involve very advanced topics. In that situation, Perl makes an excellent second language. One cannot appreciate the flexibility Perl offers without having had to do it the "hard way" first.

      This is how I learned programming. 10 years later, I still appreciate Perl for what it does for me, and try to do the same with what I develop.

      We are the carpenters and bricklayers of the Information Age.

      Please remember that I'm crufty and crochety. All opinions are purely mine and all code is untested, unless otherwise specified.

      Personally, I guess perl is not a language for the begginners. Perl shouldn't be the first language, because there is little restrictions on datatypes and syntax constructions. This generally speaking leads the newcomers to become less disciplined and write bad code. This is a bad thing. On the other hand, perl is fast to learn and powerful. Much more powerful than the needs you have at academia. This is both an advantage and a disvantage, for the same reason you don't teach basic math operations to children using a scientific calculator - they will not learn how to think, just how to press buttons and read the answers.

      "In few words, translating PerlMonks documentation and best articles to other languages is like building a bridge to join other Perl communities into PerlMonks family. This makes the family bigger, the knowledge greater, the parties better and the life easier." -- monsieur_champs

Re: Academic Formation
by Anonymous Monk on Mar 08, 2004 at 21:39 UTC
    Which would be the advantages and benefits of Perl's usage on academic formation?

    WAG ... none. Perl stands for Practical Extraction Reporting Langauge. I tend to think that Practical is the anthesis of Academic.
      We use Ada as a first language at the University I attend. I think it is a great first language. Perl should be included in university studies, but like most I would agree that it is not a good first language. I would, however, like to see it included in any systems administration course or the like. There is a scripting languages course here that dedicates half the semester to Perl basics. I think further elaboration and exposure to Perl in a university setting would be a great thing, but not to introduce someone unfamiliar with a programming language to programming techniques, algorithms and basic concepts. In my opinion, the first academic language used should be strongly typed, with optional oop, very structured programming that would limit creativity to stray away from the historical concepts at hand. A language that would stay out of the way of the student and allow for the logic of their first several dozen programs to read like a book.
Re: Teaching Perl inside an Academic Course
by flyingmoose (Priest) on Mar 10, 2004 at 15:42 UTC

    Why didn't I think of this before. Well, yes, Perl has a *perfect* place to fit into a pure academic education. Finite Automata.

    Why? It's 95% about grammars and parsing. I took a whole class that dwelt in the mathematics of it all, and we *mentioned* lexx and yacc and sed and awk, but did not get into gory details since they were rather...well..gory and different. Perl unites these. At the time, I new Perl, but was not aware of cool things like Parse::RecDescent and Parse::YAPP

    I think Perl (combined with grading programs using Test::More or equivalent, could be used to provide some programming context to what is, in general, a rather rigorous (and potentially arcane) mathematics course.

    One could start with simple regexes to mention Kleene Star, and then write more complex grammers using the various Parse:: modules and so on.

    In fact, I think Perl is probably the best language to use in such a course, provided one is told how to do it cleanly. Finite Automata is usually a 3rd year course, so it would not be the first language for a student, and they would already have the discipline required to wield Perl like the mighty blade it is.

    I'm not quite sure if it's applicable in terms of State machines, turnig machines, and so on...but for the grammar portion, it would be perfect. If a short (say 10 pages) of sample Perl were provided as a reference jump start. Make the Camel and/or Llama optional books for those that really want to understand the language, but for simple parsing, diving too deep might not be required.

Re: Teaching Perl inside an Academic Course
by ahg (Initiate) on Mar 10, 2004 at 08:44 UTC
    My response like many others starts with "it depends" but I take a different approach.

    I have long believed that basic programming skills could benefit all computer users, including non Tech/CS professionals. I have been dismayed that computer courses at the high school level or even "intro" college level consist of learning computer applications like MS Office. There was a time when everyone learned BASIC...

    but getting off the soap box...

    If you want to teach a group of non-CS students a programming language as a basic tool, then I think Perl is an excellent choice. If you are teaching a an intro class for CS students then for reasons already cited, Perl is not the best choice. CS students need to know how to do things the "Right Way" before they discover Perl. Other people, be they researchers, etc, who want to be able to knock out some quick code to do a small task/demo a concept, can find Perl to be a real gem.
Re: Teaching Perl inside an Academic Course
by Ordinary_User (Beadle) on Mar 10, 2004 at 22:24 UTC
    Why not Perl as a first language?

    I believe Perl to be a very excellent choice as a first programming language in school!

    I know it's very "unrestricted" and "there's more than one way to do it", but I just can't help feeling that "strict and discipline" is not the right thing when it comes to learning. We are all different in the way we learn. Some learn fast when reading, others when listening and so on.

    The human mind is not strict and certainly not disciplined (at least mine isn't, can't speak for anyone else) so what would be better than Perl?

    Perl is fine with "I do it this way and you can do it that or this or those ways". As humans we all look alike, but we all provide the same basic functionalities.

    Anyway, I agree that all must have a sound foundation to stand on (knowing what a $var is or a @array and what IF..ELSE does etc.) but this is "common programming skills" that holds true in all programming languages.

    Since Perl is such a "open-minded" language, it will be forgiving with students who are new to this as well (or it's the hard way right from the start. <grin>)

    If I would compare Pascal to Perl (don't start a flame war over this), I'd say that when I coded Pascal, I could code no program that I had any use of and it took a long time from concept to finished program (if I ever got that far). With Perl, I can think up virtually anything I want to code, and in an hour or so, I have a first draft finished that actually do something.

    To sum it up:
    Pascal is too "disciplined". Perl is "loose enough".

    "May the forces of high bandwidth be with you."
Re: Teaching Perl inside an Academic Course
by SamCG (Hermit) on Mar 11, 2004 at 23:15 UTC
    And here I was thinking in a college course like philosophy or art, or as a substitute for foreign languages. . .
Re: Teaching Perl inside an Academic Course
by Mago (Parson) on Mar 11, 2004 at 12:37 UTC

    I´m intending to defend perl´s usage in the academic world.
    So, my necessity is to gather arguments to that.

    My basic understanding is:
    Condidering Perl a simple and powerfull programming language,
    whose syntax is similar to the natural language (english) and
    that it could facilitate the algorithims´s learning and at the
    same time possess innumerable applications in the most diverse areas,
    why not to use the Perl as a tool of assistance in the university education?
    Which arguments could I use to convince people that perl is a good
    option to the above explained intention?



Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlmeditation [id://334931]
Approved by Plankton
Front-paged by monsieur_champs
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (3)
As of 2022-05-21 09:27 GMT
Find Nodes?
    Voting Booth?
    Do you prefer to work remotely?

    Results (76 votes). Check out past polls.