Become a fan of Slashdot on Facebook

 



Forgot your password?
typodupeerror
×
Programming Education Java Python

Should First-Year Programming Students Be Taught With Python and Java? (huntnewsnu.com) 160

Long-time Slashdot reader theodp writes: In an Op-ed for The Huntington News, fourth year Northeastern University CS student Derek Kaplan argues that real pedagogical merit is what should count when deciding which language to use to teach CS fundamentals (aka 'Fundies'). He makes the case for Northeastern to reconsider its decision to move from Racket to Python and Java later this year in an overhaul of its first-year curriculum.

"Students will get extensive training in Python, which is currently the most requested language by co-op employers," Northeastern explains (some two decades after a Slashdot commenter made the same Hot Languages = Jobs observation in a spirited 2001 debate on Java as a CS introductory language)...

"I have often heard computer science students complain that Fundies 1 teaches Racket instead of a 'useful language' like Python," Kaplan writes. "But the point of Fundies is not to teach Racket — it is to teach program design skills that can be applied using any programming language. Racket is just the tool it uses to do so. A student who does well in Fundies will have no difficulty applying the same skills to Python or any other language. And with how fast the tech industry changes, is it really worth having a course that teaches just Python when tomorrow, some other language might dominate the industry? Our current curriculum focuses on timeless principles rather than fleeting trends."

Also expressing concerns about the selection of suitable languages for novice programming is King's College CS Prof Michael Kölling, who explains, "One of the drivers is the perceived usefulness of the language in a real-world context. Students (and their parents) often have opinions which language is 'better' to learn. In forming these opinions, the definition of 'better' can often be vague and driven by limited insight. One strong aspect commonly cited is the perceived usefulness of a language in the 'real world.' If a language is widely used in industry, it is more likely to be seen as a useful language to learn." Kölling's recommendation? "We need a new language for teaching novices at secondary school and introductory university level," Kölling concludes. "This language should be designed explicitly for teaching [...] Maintenance and adaptation of this language should be driven by pedagogical considerations, not by industry needs."

While noble in intent, one suspects Kaplan and Kölling may be on a quixotic quest in a money wins world, outgunned by the demands, resources, and influence of tech giants like Amazon — the top employer of Northeastern MSCS program grads — who pushed back against NSF advice to deemphasize Java in high school CS and dropped $15 million to have tech-backed nonprofit Code.org develop and push a new Java-based, powered-by-AWS CS curriculum into high schools with the support of a consortium of politicians, educators, and tech companies. Echoing Northeastern, an Amazon press release argued the new Java-based curriculum "best prepares students for the next step in their education and careers."

Should First-Year Programming Students Be Taught With Python and Java?

Comments Filter:
  • I mean, why not? The point isn't teaching the language of the week.
    • Re:BASIC (Score:5, Insightful)

      by saloomy ( 2817221 ) on Sunday January 05, 2025 @02:51PM (#65064351)
      Which is why they should first be taught in C. Fundamentals is important.
      • Re:BASIC (Score:5, Insightful)

        by Brain-Fu ( 1274756 ) on Sunday January 05, 2025 @02:55PM (#65064367) Homepage Journal

        They should be taught how to solve hard problems, and exercise those skills a lot in their assignments.

        If they are taught this, the language doesn't matter at all. If they are not taught this, the language doesn't matter at all.

        But teaching this scares a lot of students away, and colleges have a direct financial incentive to avoid scaring students away.

        • To an extent. Building bad habits while learning to solve hard problems makes you build big, convoluted, shitty code. Sure, it might work, but you're fucking sideways whoever's job it is to maintain it after you leave. Some languages, like Java, and to a lesser extent, Python, and even C, allow you to get away with shit that you really shouldn't be doing and build exactly these kinds of bad habits. From what I've seen of haskell, it seems to enforce doing sane things with your code. I'd say rust, but I'd be

        • That's why I felt Scheme used by MIT was a good approach. An unfamiliar language, not learned by the prodigys that had BASIC on their home computer who showed up assuming that they knew everything already. It also forces you to focus on thinking about the problem and the structure of solving the problem.

          Then the next thing after thinking about the problem in a programming language, is thinking about how to be structured and organized. BASIC fails here, and C is pretty awful too. C++ is better, but it's

        • by andrewz ( 199936 )

          I started with Pascal, then learned C, then Scheme, in college, for my CS degree. IMHO Scheme is an excellent programming language for a CS curriculum. If a CS student can't learn Python after learning Racket, maybe they should rethink their major.

        • If they are taught this, the language doesn't matter at all.

          One thing to rememebr is that at universities in North America students from other sibjects may also be taking CS courses on how to program. At our institute the CS department used to be exclusively Java which is utterly useless for Physics and many other science subjects. Python, C or C++ is much more relelvant and when they switched to that instead of teaching programming ourselves we were able to encourage our students to take CS courses.

          While that should not get in the way of the pedagogical needs o

      • C is advanced, in my humble opinion. As an old programmer, I see how C is adapted to machine language, I can almost see in my mind how it will be converted to machine language. BASIC is a language that is adapted to human type thinking.
        • BASIC is a language that is adapted to human type thinking.

          BASIC was invented to be something like COBOL for college students - easy enough for non-coders to code something useful. Humans adapt to programming languages, not the other way 'round (with a few exceptions like Lisp, where the language can change to become the program). I don't think BASIC is any closer to "human type thinking" than COBOL is and I wish I'd never learned either of them.

          Anything interpreted is good so that early students don't have to think about compiling and linking. Anything with a REPL

          • Re: (Score:3, Funny)

            by Anonymous Coward
            Yeah, teach them Perl as their first language. That will definitely make them reconsider their career path.
      • Re: (Score:3, Interesting)

        by ceoyoyo ( 59147 )

        Fundamentals are important. First they should learn formal logic, algorithms, take a some other decent math courses, and about transistors. Then they can build a gate, then an ALU, a processor, and finally a computer. At the same time they can be learning assembly so when they've built their computer they can write an assembler for it, and a compiled language so they can write a compiler. An interpreted language is a good idea too, preferably one that works well with the compiled language.

        • Sure why not. Although my CS prof in grad school lamented that she felt like a fraud because she didn't know how to build a VAX. I explained that it was simple enough so not to worry.

          First thing I really learned from a borrowed book from a junior college, before I ever touched a computer (way too expensive), was all about how to build adders, shift registers, etc, leading up to bit slice chips and the like. I thought it was great stuff. But that was only taught briefly at college, in a couple of weeks.

      • Re:BASIC (Score:4, Insightful)

        by Waffle Iron ( 339739 ) on Sunday January 05, 2025 @03:59PM (#65064553)

        Which is why they should first be taught in C. Fundamentals is important.

        One of the most fundamental things they should be taught is that due to advancements in language design over the last 50 years, as well as ever-increasing threat environments, C is no longer suitable for use in production environments.

        • Or they could just make it suitable again by teaching them about pitfalls in memory management.
        • And yet it's a still extremely widely used in production environments, devices, medical equipment, etc. You can't get rid of it just by waving snobbish hands at it.

          • Just because something is widely used, it doesn't mean it's suitable.

            The current state of cybersecurity overall is abject failure across the board. This is one aspect of that, along with a whole host of other widely used but unsuitable practices.

            If we could at least inform new students that the attitude of "C is just fine; the problem is 100% with idiot programmers" is not valid, then software development could start to advance one funeral at a time.

            • But you need C, there's no replacement for it yet. In a modern compiler, with static analysis, it's very safe. The biggest fault with software is not the language, or the lack of hand holding and nannies, but in no way to require the programmer to properly think, design, and document. If you can't even get the comments to match the code, then the problem isn't with the language.

            • The thing is that most of these advancements don't mean shit. Security relevant bugs, and bugs in general, have been had dime a dozen in all languages. Pythin, Java, JavaScript, PHP...

              We could talk about Rust, but it's as of yet unrealistic to stick to Rust and Rust only for every task. Although I'm sure that Ruat cosr isn't (going to be) bug free, either, once enough people start using it for projects big enough.

        • by kmoser ( 1469707 )
          Do you have a better language for embedded systems programming that works in all environments?
      • by vyvepe ( 809573 )
        They should be taught Haskell. Fundamentals is important.
        • by rta ( 559125 )

          That's practically the status quo: the current language is Racket, which i'd never heard of before this article, but it appears to be a modern Scheme ( which is Lisp)

      • C on MS-DOS so any pointer fault problem is punished hard by requiring a reboot.

        But seriously any compiling language with strong static typing like Ada, C# or Java should be the norm. Many peculiar bugs originates from mistyping.

        Also add the importance of modularization and structure to the code.

        As a side note - when programming C under MS-DOS you need to make sure you free memory exactly in the opposite order of the malloc order or you'll have a memory leak.

    • by dfghjk ( 711126 )

      Because Basic is a hack, it is not designed to teach students skills.

      There are languages specifically designed for teaching.

      • Yes BASIC is a hack, and it is an acronym. Never spell it "Basic", it is not that.
      • BASIC was designed to teach everything. The "All-Purpose" part of its very name. The problem is that "purpose" back then meant interaction with connected hardware, not coexisting within software or user ecosystems. Those things didnt exists yet.

        peek and poke, in and out, IOCTL....

        In modern times, no language, not even assembly, is a simple tool for manipulating the hardware. The legendary EGA/VGA Programmers Reference is neigh on useless under any modern operating system (master control program), nor co
        • It was also designed after structured programming was a thing, but before structured programming was generally realized to be a good thing. It was kind of obsolete for teaching when it was new.

      • And Python has many of the same issues Basic had in the 80's.

    • Re:BASIC (Score:5, Interesting)

      by cstacy ( 534252 ) on Sunday January 05, 2025 @03:08PM (#65064407)

      I mean, why not? The point isn't teaching the language of the week.

      BASIC lacks fundamental constructs (such as closures, anonymous functions, higher-order functions, and most versions don't have objects or even structs, among other things). In that respect, Python is a much better choice.

      Racket is arguably better than Python for similar reasons. It is descended from Scheme (a Lisp) that was the gold standard for teaching computer science for several decades. A programmer who learns using Racket should have no problem becoming professionally fluent in Python within a couple of weeks. In general, someone with this kind of background in the fundamentals will have no problem learning *any* programming language extremely quickly, as they will be familiar with all the concepts.

      Students in many fields need to be able to do a little programming. And they should definitely learn Python, because it is so popular. There should be three courses available:
      (1) Intro to practical and simple programming for non-programmers, using Python.
      (2) Getting the most out of Python (follow-on to the above), for STEM non-programmers.
      (3) Professional Programming for computer science students. This would be engineering exercises, in the vein of comparative languages, after completing the Racket courses. It assumes they have already done the non-programmer Python courses, too. It would cover Python, Java and C#, Javascript, C and Rust, and a type-based language like OCaml or something. Probably two semesters in which you learn the adaptation of the core concepts you learned with Racket, the syntax, and something of the libraries. This allows you to hit the ground running. But is all based on what you learned with Racket.

      As has been emphasized many times: the point of learning with Racket is not that you are learning Racket. It's that it is a clean platform on which to learn fundamental concepts and algorithms. And how to think about thinking about programming. Computer "science" is not the same as "programming in some language so you can get a job".

      • I know BASIC through and through. I dipped my toes in Python, and I find it similar, however with much greater capabilities... it seems to me. I would endorse Python as a beginners software language. As for C though, people have to know what integers are, bytes, for loops, memory spaces. That can come later.
      • Those things were considered grad school topics in my time, as they're functional programming concepts. Fundamental is structure; if/while, functions, recursive calling, parameterization, algorithms, data structures, etc.

    • Re:BASIC (Score:4, Insightful)

      by 93 Escort Wagon ( 326346 ) on Sunday January 05, 2025 @03:23PM (#65064453)

      The point isn't teaching the language of the week.

      While I agree - why not teach them the fundamentals using a language that's currently in widespread use? Seems like it'd be a more useful approach for both the short- and longer-term.

      • Seems to me that AI will replace a lot of programmers anyway. I find it a very useful tool. I describe in English what I want done, and it gives me the code. My only "additive" skill right now is to find the little bug inside what it gives me.
      • I think when I started college that the concept was to learn, and you pick up a programming language on your own. Each class would have a different language at times. Later when I graduated, there was immense corporate pressure to turn colleges into trade schools to churn out students knowing the latest language, ie, shovel ready jobs. So I never really cared what language was being used.

    • Because they suck!

      Also CS isn't "programming" so you don't even have to teach any language in year 1.

    • Teach pseudo-assembler for the first month. For this purpose MIXX would work well, though I started on 7094 assembler. After they learn the real basics, switch to either C or Python, depending on whether you're trying to teach engineers or mathematicians/chemists/physicists/etc. If you're trying to teach programmers, follow the assembler with a month of C, then a month of Python, then a month of Erlang, then perhaps a month of Forth. (I don't think LISP/Scheme is reasonable anymore, and C++ is too comp

    • Except it's a bad language, pedogogically. BASIC teaches bad style and has a lack of organizational features.

      As for the language to teach, on my experience the top fads last just long enough so that what you learned as a freshman is often obsolete by the time you're in the interview. At least for those jobs where they demand only the latest fads.

      Python used to be just a utility language. Ie, for scripting. Not for gargantuan projects. Mostly it was common in Linux installation scripts and the like. Th

  • by Drethon ( 1445051 ) on Sunday January 05, 2025 @02:45PM (#65064329)

    I rather wish intro programs would show a number of different languages and weight the pros and cons of each. Then students can get into learning specific languages after that.

    I love python for my own programming, I can throw together prototypes much faster than other languages and even advanced programs work pretty well. I do not like how python can produce both simple scripts and classes, and does not enforce private variables. They say C/C++ are languages that give you rope to hang yourself with, and it is true that those languages can produce some horrible code with bad memory bugs, but I feel python can also produce some horrible and unreadable code if a developer does not have the discipline to write good code.

    I'm glad I started with Java and was pushed heavy into proper class design and encapsulation. It has helped me to follow good design approaches and produce good maintainable code. However outside of college, I've never used Java. Most of my code has been in C/C++, Ada and Fortran, as well as now a lot of python.

    I see benefits to all languages and understanding where one is good vs other languages.

    • by dfghjk ( 711126 )

      "...it is true that those languages can produce some horrible code..."

      Languages do not produce code. Any python cannot do what C/C++ can do, that's why Python has interfaces to C/C++.

      "... I feel python can also produce some horrible and unreadable code if a developer does not have the discipline to write good code."

      Python also does not produce code, and any developer that lacks "discipline" is likely to produce bad code in any language.

      "...was pushed heavy into proper class design and encapsulation."

      A stro

      • by Jeremi ( 14640 ) on Sunday January 05, 2025 @03:25PM (#65064461) Homepage

        Languages do not produce code.

        Yes, and also no. One of the primary purposes of a programming language is to define not only the set of supported constructs that a programmer can easily express, but also the set of deliberately unsupported mechanisms that a programmer cannot easily express.

        That sounds Orwellian (and perhaps it is) but the fact is that programmers want a language that makes it easy for them to write a useful program, and hard for them to write a useless program. So, for example, a language that makes it hard to write a program that crashes can have an advantage over a language that makes it easy to write a program that crashes. Alternatively, a language that makes it easy to write code that executes efficiently can have an advantage over a language that makes it hard to write an efficient program. In either case, one's choice of programming language will have a significant effect on the performance of the programs one ends up writing.

        If this were not the case, then nobody would have any strong opinion about computer languages; any Turing-complete language would be considered equivalent to and therefore just as good as the next.

      • c++ templates begs to disagree
    • I rather wish intro programs would show a number of different languages and weight the pros and cons of each.

      I agree with the first bit but disagree with the second. I think maybe two to three choices would be best. For example, python as a solid high level language, assembly language (such as a PIC micro controller) for low level and something more mathematical like Haskell.

      The purpose isn't to weigh the pros and cons: you can only do that later when you can understand the pros and cons. The purpose I thi

    • by ceoyoyo ( 59147 ) on Sunday January 05, 2025 @03:06PM (#65064401)

      If the question is "which language should we teach our CS students" then you're doing it wrong. Learning multiple languages absolutely should be part of a decent CS degree, to the point where learning a new one isn't much of a hassle.

    • More importantly, the course should use whatever language is most appropriate to describe the topic at hand (data structures, object orientation, embedded and realtime systems, operating systems, whatever). Bonus points if the language is otherwise useless.

      That said, this is more of a CS perspective than âoeprogrammingâ thing. The point of a good CS degree isis for the students to learn the concepts and understand the topic. Itâ(TM)s not to teach them to program.

      I did Computer Engineering mys

    • Back in the day, no two courses in my Computer Engineering degree used the same programming language and platform. Assembly, C, C++, Fortran, Pascal, compilers (Yacc, Lex, Flex, Bison), embedded languages galore, Scheme, pretty much everything. We covered a ton of different computer architectures and programming concepts too.

      The interesting bit was the response of the hiring managers. The strategy was that the chemical engineering grads were hired to do mainframe programming, because the chemical engine

  • by jrnvk ( 4197967 ) on Sunday January 05, 2025 @02:46PM (#65064333)
    Fundamentals are more important than syntax. That being said, keeping it mainstream with an OO language like Java, C++, or C# .NET and a scripting language of choice probably gives the graduates the best opportunities for general placement.
    • by ebonum ( 830686 ) on Sunday January 05, 2025 @03:12PM (#65064421)

      Totally agree. Who cares what language you use?

      Unless we are hiring for C++, I've never worked for an employer who hired based on language. If you code mostly C#, we ask you C# questions. If you code mostly in Java, we ask you Java questions. If you've never looked at Python and we are using Python, smart programmers will be just fine. Total non-issue.

      It would be really weird to hire someone who doesn't have a firm grasp on pointers... Even if we aren't using C/C++. That would be like hiring someone who doesn't understand the very basics of how a computer works.

      Related note: Students should be required to demonstrate mastery of a functional programming language to graduate.

    • by Ksevio ( 865461 )

      It shouldn't matter, but the language should also not get in the way of learning fundamentals. In this case "Racket" (a LISP derivative) is pretty awkward to code in and the skills used in it aren't really applicable to the rest of the degree. It's mostly a functional language which is great for teaching functional programming but is also used for OO where it's really awkward compared to a language like Python or Java.

      Also since it's a relatively obscure language used only for teaching, there aren't many

  • by Savage-Rabbit ( 308260 ) on Sunday January 05, 2025 @02:47PM (#65064337)

    Should First-Year Programming Students Be Taught With Python and Java?

    The point of learning programming is to learn patterns and programming methods like OOP that are pretty independent from what language you are using. How to break a problem down into manageable chunks that make logical sense and result in code modules that can preferably be re-used in multiple places in your project. What programming language you used to do that is rather of secondary as far as I'm concerned. I've written software in a dozen different languages and the basics are usually the same. Not, that any of this matters anyway. I have it on good authority, from a number of unbounded AI company CEO geniuses, that all programmers will have been replaced by prompt engineers by 2030 who'll write complex software using AI in plain English so I think it would be a good idea for anybody studying to be a 'programmer' to instantly change his major to 'prompt engineering' with a second degree in English.

    • > How to break a problem down into manageable chunks that make logical sense and result in code modules that can preferably be re-used in multiple places in your project.

      In fact, that process is a fundamental that should be taught regardless of whether the kid has or will ever write even a single line of code

      Your very first exposure to programming doesn't need to involve coding at all. Basic project management is the real first course.

      • Every complex effort ever, becomes manageable when one heeds this. Found in every endeavour, from Roman politics to optimisation and good software (and hardware) design
    • by Dan667 ( 564390 )
      I was taught software languages are like tools in the tool box. I agree what they really should start with is things like software patterns and object oriented vs functional, etc. Give a 10000 foot view and then work into the details. If you just jump into one language then that is how those folks will try and approach every problem. When all you have is a hammer, everything looks like a nail.
  • by dfghjk ( 711126 ) on Sunday January 05, 2025 @02:51PM (#65064353)

    "While noble in intent, one suspects Kaplan and Kölling may be on a quixotic quest in a money wins world..."

    Sure, a "quixotic quest", educators should be criticized by capitalists for being concerned about how best to educate students.

  • Low-level first (Score:3, Insightful)

    by stanjo74 ( 922718 ) on Sunday January 05, 2025 @02:55PM (#65064365)

    Knowing low-level stuff first makes it much easier to understand high-level concepts otherwise everything turns into rote memorization and cargo-cult.

    Start with C (without the oddities) and computer architecture. Throw in some assembly to bridge the understanding between comp arch and C.
    Then learn higher level abstractions through an imperative and a functional language. A "computer languages" course helps to bridge the syntactic sugar/high-level abstractions with low-level C.

    The rest is operating systems, networks, advanced algorithms and data structures.

    • That describes my CS curriculum as was taught back in the 80â(TM)s. Programming language coursework was offered later.
    • Ideally, yes. I designed my own Z80 computer, built it with a friend, and put an OS on it in the 80's that I wrote. Man, other people seem stupid to me. They do stupid things. Asking most people to be smart seems like a fools errand to me.
    • ...which low level stuff though?

      I suspect what you mean is how things may be (and probably are) accomplished on an abstract memory machine (regular old ansi C)

      importantly the necessary ramifications of any other languages abstractions are revealed when you try to enforce the same thing within just a memory machine context ,, you can do OOP in C (you can even do OOP in assembly) and by doing so you see in what ways it could be implemented, and when you look deeper at other languages you see that yes, the
  • This way they can all experience this type of joy [imgur.com].

  • Beginners can start with any language
    After becoming familiar with it, a proper education should include multiple languages
    C and assembler to get insight into how stuff really works
    Python, Java, C++ and Javascript, because they are widely used
    lisp, smalltalk, haskell, etc to see some variety
    Learning programming is a lot more than learning one language. A competent programmer should be able to learn languages as needed by the project

    • I would argue that the very first things students should be touching is shader coding within a prearranged environment such as shadertoy.

      Write a program to color a pixel.

      The color should be White if.....
  • by xack ( 5304745 ) on Sunday January 05, 2025 @03:05PM (#65064397)
    Most introductory languages start with "Hello World" (printing to the screen), then move on to simple variables and arithmetic, then slowly gets more specialized with more algorithms and API usage. The language isn't really that important, it's the program flow that is cross language that people need to learn, which gets more abstract and the individual languages are just syntactic sugar. The compiler/interpreter still does the heavy lifting.
    • I still like LabVIEW. It is an expensive space to get into, used to be. I guess it can be got for free now for individuals. I can see how it compiles into C, and then into Assembly. It is abstract, and brilliant, I think. I have a personal grudge against National Instruments, and they sold themselves to Emerson Electronics recently, I guess, but it is what it is. It is a graphical language that has no "gotos", it is about data flow that EEs can easily understand. It is brilliant in my humble opi
  • The answer is different depending on career track.

    I can point to ways most of the popular languages suck for teaching.

    If it's a social sciences student just teach them R.

    Maybe CSE should start with assembly.

  • Not all institutions have the same initial programming pathway, but it seems like a lot of US institutions (according to a CS professor friend of mine) do three foundational courses: CS 0 (Introduction to Programming), CS 1 (Object-Oriented Programming), and CS 2 (Data Structures). CS 0 is often a general education course designed for non-majors that majors with HS experience skip over. That one can be taught in any language and probably Python makes the most sense. I do think it is helpful if CS 1 and C

  • Learning an immediately employable language like python makes sense for some career choices. Learning more programming theory and fundamentals, then moving on to more specialized types of developing is a different career path. Both should be available.

  • by jd ( 1658 ) <imipak@@@yahoo...com> on Sunday January 05, 2025 @03:27PM (#65064465) Homepage Journal

    First year CS should be about understanding algorithms, logic, and correctness. As such, I'd say SPARK (the Ada derivative that allows you to prove that the code in each function has certain properties).

    Getting programs right, at the start, is far more important than learning a popular language. Languages change, but the need to be right does not.

  • by Antique Geekmeister ( 740220 ) on Sunday January 05, 2025 @03:30PM (#65064471)

    The object oriented nature of Java teaches an extraoridinary of dangerously bad habits in what has become a deprecated language.

    • by Ksevio ( 865461 )

      Java is still the top language used by companies. Even if it sucks there's a large market for developers in it.

      I would say the functional programming of Racket hits the other extreme while being less useful

  • by stabiesoft ( 733417 ) on Sunday January 05, 2025 @03:41PM (#65064499) Homepage
    My first language was RATFOR in college. The course was more about algorithms and logic and structure. It could have been any structured language. I've used the language precisely 0 times since the class. Others have mentioned using diversity of languages as a first course. While I agree that is an important course, I don't think a good first course. I think it was maybe my 3rd or 4th. That course was more about how languages differ focusing on things like call by value vs call by reference and how it might trip you up if you did not understand it. The course also clustered languages into categories like algol based, lisp based, etc. One language covered in the course was snobol, another language I've never used again, but awk/sed/grep have some similarities so learning snobol had value. I think that kind of course requires the fundamentals of a good algol like language foundation though.

    Oddly, C, which I've used for literally millions of lines of code at this point in my life was one of the last languages I learned. It was taught by the EE dept, which is my major. Back then, code was just starting to really be a part of the EE curriculum, almost all my programming classes came from the CS dept.

    Today's college incoming class may have already had the structured language class in HS, and so maybe college now needs to take more of tiered approach to the first class and have a class for newbies and a different class for the more advanced kid. I took a fortran class in HS, and that in part was the reason I was allowed to even take a CS class freshman year. I also had advanced chem/math in HS so was taking 2nd year math, which was somewhat common and 2nd semester chem, which was less common. Both were tiers determined by tests done by the uni.

  • Seems like the industry changes mean we'll have a glut of experienced people for decades. A new grad hoping to enter the market is likely a fool.

  • It is a language based on graphics, mostly mouse clicks. No typing involved. I think anybody can download and try it from the National Instruments website. It is very powerful. I think anything you can do in C or assembly, you can do in LabVIEW. I enjoy programming with it, it does provide quick results.
  • by joeblog ( 2655375 ) on Sunday January 05, 2025 @04:08PM (#65064581) Homepage
    The best first book on programing is https://htdp.org/ [htdp.org] Its "sequel" is Structure and Interpretation of Computer Programs which is in Scheme from which Racket was derived. Other languages simply don't have educational material that good.
  • by SubmergedInTech ( 7710960 ) on Sunday January 05, 2025 @04:09PM (#65064585)

    There are only so many hours in an undergrad education. Time spent learning the syntax of a language used only in education is time *not* spent getting familiar with a language with real-world value. It'd be like saying, "Before we teach you German or Chinese or French, first we're going to spend a year introducing concepts of language in Esperanto. Which you will never use after this course."

    I'd rather hire someone with 3 years of Python or Java experience than someone with a year of Racket and 2 years of Python or Java.

    If there's an area where one real-world language is weak, that's a great opportunity to introduce a second real-world language which is better at that aspect. (So, if you start in Python and want to teach strongly-typed interfaces, introduce Java. Or Rust.)

    • by ceoyoyo ( 59147 )

      Everyone I've ever talked to who's good at learning languages has told me that understanding grammar is key. You can learn a language by just soaking it up, or memorizing it, but knowing how languages work makes picking up multiple of them very easy.

      I'd rather hire someone with 3 years of Python or Java experience than someone with a year of Racket and 2 years of Python or Java.

      Then you're not looking for a computer scientist or a software engineer. You want a tech school graduate in programming, or, god fo

  • I agree that CS students should be exposed to different languages. For a true introductory class where the student are not expected to have programmed before you want a language that minimizes boiler plate and which is easy to read and understand.

    Python was designed for this purpose by Guido and works well in this context. It has the additional advantage of a good standard library and broad ecosystem so that it is fun and rewarding for newbies. It is easy to introduce different paradigms and data structures

  • by EnsilZah ( 575600 ) <EnsilZahNO@SPAMGmail.com> on Sunday January 05, 2025 @04:12PM (#65064597)

    Personally, I would have loved to have learned Python first. As far as I'm concerned, get me up and running as fast as possible, being able to do something useful and I'd be excited to expand on that on my own.

    Back in high school the first language we learned was Pascal.
    As soon as we learned basic loops and text printing I started figuring out how to add color to the text and making UIs for programs that solved problems outside of the class.

    We only learned Assembly after we already knew how to implement elements of a CPU using logical gates, so the low level programming stuff made sense in the context of how it translated directly to the flow of bits.

    And finally we were taught Delphi / VB6 so we could build a Windows GUI for our graduation projects.

    So my perspective is, it's more important to have the immediate reward of being able to do something useful to motivate learning than strictly adhering to a bottom-up / top-down approach.

    • LabVIEW man. just saying. Check it out. It is a "brain buster", I know.. to just use a mouse and graphics to write software. I think it is super cool.
  • More grist for the mill! That seems to be the philosophy of industry. They don't want to spend anything training anyone because that expertise can be (and often is) poached.

    AI is going to undercut all entry level jobs (particularly in coding but not limited to) and cause a severe seed corn problem soon enough. Once the skill gap is allowed to open up because AI is "good enough", you cut off almost all of the flow of new minds into the field and within half a decade the AI becomes indispensable to the proces

    • Is this a horse vs car problem? or a permanent social problem where most people will never be able to get good employment any more? In your opinion?
  • You want to be a car mechanic but instead of using car engines in the classes they use engines from oil rigs or some other shit. Sure, the basics should be the same and the experience somewhat valuable but I would consider that a monumental waste of time. Unless you convince me that Racket is much better than Python for that task.
  • Yes, my subject line is clickbait. But, hear me out.

    After a massive surge, Python is peaking. The next great thing is soon at hand. So, they are late to the party in changing their language.

    YES! They should have dropped Racket forever ago. Who uses that shit? I'd never even heard of it before this article. It's as useless or more than Roblox or Scratch or whatever the children are using now.

    The university should be more current in its teachings. Python is great today, but could be "legacy" next year. It als

  • I can't be the first to mention Betteridge on this thread?
  • Java is something that is slowly on its way out.

    But for Python, make sure to also teach C and teach embedding (both ways). That would be a topic for the second half of the course. Do not coddle CS students by not teaching them how things work on the low level. That would be a bad mistake.

  • I'd agree with industry but there doesn't seem to be any reason to teach any language if these companies will only hire foreign students/H1B workers.

    We should sanction them into oblivion and fund let experienced American talent [including last weeks H1Bs] build America first alternatives that blow them out of the water. As a bonus they can pick up gear at the former tech company bankruptcy fire sales.

  • I'm only half-serious here, but if you're going to choose a language based solely on popularity/wide use, why not? There are about as many JavaScript jobs as there are Python (meh) or Java (ick) jobs. Indeed.com currently has 17,000+ results for "Java developer", 18,000+ results for "Python developer", and 16,000+ for "Javascript developer"

    I'm not disputing that JS has a ton of crap in it, but sticking to "the good parts" should be doable. Plus JS has some other advantages: closures, first-class functions a

  • The language taught in the introductory courses at Uni should be something that teaches the basics of good programming (which in 2025 means object oriented programming) without requiring the students to understand advanced topics.

    Having programmed in many languages over the years I would say that C# would make a great choice for such a course. I used Java in my first programming course at Uni a few decades ago and have programmed in both Java and C# a lot in the time since and I think C# is the superior lan

  • by ip_vjl ( 410654 ) on Sunday January 05, 2025 @06:42PM (#65064949) Homepage

    People are going to learn better if there is some applicability outside the classroom. Nobody is writing anything in Racket outside of their homework assignments.

    But, if you pick a language (any language) that students can use to do actual things, they'll be more likely to do more than just learn enough to complete the assignment. I learned more from poking around in BASIC (as bad as it is) on Atari and Commodore computers than I learned in college programming classes, simply because I had to keep expanding knowledge to do new things, whereas the college assignments I only needed to do enough to be graded. (And I've never touched Modula-2 outside the classroom.)

    I'm not a big python fan, but at least people can actually use it outside the class, as many applications use it as their built-in scripting language (eg. Blender, FreeCAD, etc) and there's even applicability to hardware (MicroPython, CircuitPython) which cna bridge to other CS-related tasks as people can mess with inexpensive microcontrollers.

    Of course, you can do all this with C, as well, but a higher level language is typically an easier thing to understand for people that haven't ever programmed before.

  • If you want to go to Oracle to learn something, then go there, but if you want to learn general computing programming concepts, then Java should be out.
  • I have a few bitter experiences with National Instruments, however, with a clear mind I can say that LabVIEW is a STEM type of a computer language. It becomes very fun after awhile. Some crazy shit can be programmed with it after awhile. It seems like a good beginners language, and There is nothing that you can write in C that I can't write in LabVIEW. I know assembly languages for many microprocessors so don't fight with me.
  • While studying programming, it is better for the students to learn several while doing some real, if simple projects, so that the students can start getting used to the novel concept of picking the best tool for the task at hand instead of hitting every nail with that one hammer they're used to.

  • I took Pascal classes for intro CS classes in the 1980's. Then the world switched to C and C++ very quickly. Not having the C/C++ classes was a big disadvantage when it came time to interview for jobs. Yes, I learned C on my own, but it's a big advantage to already be conversant in the desired language as a first language. For interviews, it was a big disadvantage to not know about the intricate details of a language, because those details are not immediately transferrable to other languages and have to

"What man has done, man can aspire to do." -- Jerry Pournelle, about space flight

Working...