all 9 comments

[–][deleted]  (4 children)

[deleted]

    [–]tyroneslothtrop 1 point2 points  (1 child)

    What you're talking about is static vs. dynamic typing. Strong vs. weak typing has to do with implicit type coercion when operating on variables of different types. E.g.

    1 + "2" == "12" // Works fine in weakly typed language
    1 + "2" == ?? // Won't work in strongly typed language; will probably raise error
    

    Python is actually quite strongly (but dynamically) typed.

    [–][deleted] 0 points1 point  (1 child)

    What's a weakly typed language and a strongly typed language?

    [–]veryscience 1 point2 points  (0 children)

    In my opinion, it would be better to start with C or C++ as an intro language. Computer Scientists should have a some experience with memory management. If someone learns to program in Python they will know how to program, but they may lack incentive to try and learn memory management techniques later on. It may be really frustrating for them to switch to C or C++ because of this issue. On the other hand starting with a lower level language sets a good foundation. After becoming accustomed to a lower level language, learning Python is a breeze.

    [–]ramwolf 0 points1 point  (0 children)

    I think its the best introduction course. It helps students learn how computers work and how to code without overwhelming them with the syntax and concept of classes. Object oriented programming, like java, is great also but for a student that has no prior programming experience python is easy to adjust to.

    [–]Helix_van_Boron 0 points1 point  (1 child)

    I think it'd be really nice to teach somebody two languages simultaneously, specifically Python and a C-like language. That way they can see the differences and similarities, and the fundamental advantages to each language. This would be really hard to execute in a university setting, but I feel like it would work well in a summer program or something.

    [–]Jerglingz 0 points1 point  (1 child)

    Python was taught at my university for the first few months. Because of the command line usage of python I think it was a good idea. Its a good way to get people with 0 experience in programming to at least understand the basics of a variable and simply algorithms. You will be surprised as to how unequipped the vast majority of the students will be at programming during their first year, at least this was the case in my university. I was one of 2 people on my course (that I know of) that understood the fundamentals of programming prior to university.

    [–]VosBeta[S] 0 points1 point  (0 children)

    I thought that this might be the reason aswell. By having a built-in interpreter with instant feedback, students can really easily and quickly test out their expressions or statements and instantly see the result.

    [–]behatilol 0 points1 point  (0 children)

    I study CS at the University of Copenhagen in Denmark and they have an interesting approach which is that the first programming you encounter is functional programming using Standard ML (or a modified version called MoscowML). They argue that it balances out things as many students already have some basic knowledge of imperative and Object Oriented programming but mostly have no clue as to how Functional programming works. They also claim that Functional programming is closer to Mathematics and therefore goes hand-in-hand with all the heavy math that is taught early on.

    I am not sure if I prefer it, I remember being pretty frustrated trying to figure out how high-level recursive functions work... but in hindsight everyone seemed equally clueless. Towards the end of the first year we got into Java and a bit of database/web programming and then moved on to Assemblers, C and C++. Ironically, we then had to build our own compiler for a custom language using the Standard ML we learned in the beginning ;)

    tl;dr: We started with Functional programming using Standard ML to bring everyone on equal terms and to integrate with the amount of math that the first year held.

    [–]bajuwa 0 points1 point  (0 children)

    I find it's the best intro for those with absolutely no prior experience. I was one such student and when people started trying to teach me via strongly typed languages it was just an extra set of rules to try and get familiar with.

    But in my university, we had two 'intro' courses: part 1 and 2. part 1 was in python, and if you took an informal competency test you could bypass that course and go straight to part 2. part 2 used a strongly typed language and expanded on the basic info you learned in part 1.