7 votes

Topic deleted by author

4 comments

  1. stu2b50
    Link
    I think Berkeley's intro course has a good mix. It's listed under Python here, which is true, but the class isn't all python. In around halfway to three-quarters in it switches gears, and you have...

    I think Berkeley's intro course has a good mix. It's listed under Python here, which is true, but the class isn't all python. In around halfway to three-quarters in it switches gears, and you have to actually write a scheme interpreter yourself, and then write scheme for it.

    That really hammers in the simplicity and 'beauty' of Lisp languages, that an undergrad can be taught to write a lisp interpreter in the span of like two weeks. Certainly couldn't do that with Python, it's far too complex of a language.

    I think it's important to stick to your roots even with Python. The "text" (which was just written by the course staff) for the intro course is heavily (i.e very heavily) based off of SICP, which you can see here

    7 votes
  2. onyxleopard
    (edited )
    Link
    As a graduate student who needed to bone-up on my CS skills, I took an undergraduate level course based on the MIT SICP course and the SICP book by Abelson and Sussman. We used Racket for this...

    As a graduate student who needed to bone-up on my CS skills, I took an undergraduate level course based on the MIT SICP course and the SICP book by Abelson and Sussman. We used Racket for this course. It was by far the best CS course I ever took. It really helped me learn a lot about programming in general instead of getting bogged down with language specific hangups. This is compared to some other courses I took that were taught in pseudo-code (for written assignments) and Java (for programming exercises).

    I think all CS undergrads should take a course like SICP and that it should be taught in Racket (or some other Lisp variant, but Racket is probably the best choice). I don’t think you could adequately adapt SICP to teach it in Python (or Ruby or Rust etc.). Part of the great value I got out of the course is learning about function evaluation and application, the isometry to lambda calculus, that code is data and data is code—all things that become apparent because of the elegance of Lisp. This is not so easy to grasp when neophyte programmers encounter non-Lisp-like programming languages (at least not without a lot of extra effort).

    Don’t get me wrong, I love Python (it’s my go-to language for 99% of things I code). But I fear that if I had only ever took Python (and Java) CS courses, I would be that much poorer of a programmer for it.

    5 votes
  3. Litmus2336
    Link
    I generally disagree with the article (although it's points are somewhat convincing). My biggest disagreement is over the idea that because people don't use racket later in their career, racket is...

    I generally disagree with the article (although it's points are somewhat convincing). My biggest disagreement is over the idea that because people don't use racket later in their career, racket is not good. I think this is very far from the truth. Like most people, I learned a ton of languages in school, and now am a Java developer. But by far, the language that taught me the most about Java was another impractical functional language, SML. It taught my so much about the functional paradigm, which has been extremely useful in my professional career.

    Whether racket is a great first language is another story. I do believe imperative programming is easier to grasp. I really hate python though, for a lot of reasons. But I also realize that it's wildly useful to a lot of people, and that the work I do is really not one where python makes sense. Because as much as I think I can say python is an empirically poorly designed language, a lot of those criticisms also apply to Java.

    4 votes
  4. imperialismus
    Link
    Python is a rather unimaginative language. This is generally considered a good thing. However, Computer Science, as opposed to something like Software Engineering, is not just about learning the...

    Python is a rather unimaginative language. This is generally considered a good thing. However, Computer Science, as opposed to something like Software Engineering, is not just about learning the lowest common denominator of the most popular industry languages like Java or Python.

    Maybe it isn't appropriate for CS101, but I definitely think Scheme is an excellent teaching language, and SICP is one of the best programming textbooks of all time. "It's not industry standard" or even "students don't like it" are not good reasons to exclude something from a CS education. This is like complaining that a degree in theoretical physics teaches you things that you can't directly apply to building cool robots with lasers for eyes.

    4 votes