Stack Exchange Network

Stack Exchange network consists of 175 Q&A communities including Stack Overflow, the largest, most trusted online community for developers to learn, share their knowledge, and build their careers.

Visit Stack Exchange

Hot answers tagged

31

I think that the purpose of such a course is not to teach you a language. After all, Scheme, with its abstract syntax, is pretty minimal as a language. The purpose of a course like that is to teach you to think abstractly. If you can do that now, several years later, you can probably thank the course for getting you started. Abstraction, after all, is the ...


22

There's one more reason I'd like to add to those here, less high-minded, but also a genuine consideration. One of the practical difficulties of teaching an introductory course is that the students come in at vastly different levels. Some are quite competent already, and some are brand new. It is rare for kids to come in with any experience outside of ...


17

Every second you spend explaining a programming language is a second you are not teaching programming, software development, software engineering, software design, or computer science. You can teach the entirety of Scheme in a single lesson. You can probably teach the entirety of Scheme in 10 minutes. Python is significantly more complex than Scheme, so, ...


15

With Scheme, you start teaching programming concepts on day 1 - and also implementing them as working code on day 1. With a typical procedural language (C++, Java, etc) you first have to crawl through the swamp formed around 20+ years of accumulated obsolescent and deprecated syntax. The survivors from that experience might get to learn some concepts ...


12

Simplicity You can write the definition of scheme on the back of a postage stamp. Therefore as @Buffy says, you don't have to learn the language at the same time as learning the concepts. It is a pure functional language. You will be a better programmer, because you learnt functional. Better to do it first, few people learn functional second. Education ...


11

Racket is a variant of Scheme that is both very good and very popular. The DrRacket system is probably all you need. DrRacket is widely used and there is quite a bit of information about it online. It provides a very simple interface. There are also Scheme plugins for NetBeans and Eclipse if you want a more complete IDE.


10

Scheme is not that widely used in the industry, but that is not the point. The purpose of CS is not to teach you any particular language, but to teach fundamental concepts. When you know the fundamental concepts, learning any particular language is pretty easy. Anybody with a solid CS background would be able to learn Python in a few hours of self-study. ...


5

How to Design Programs is released under the MIT license, and has the distinct advantage of being integrated directly into DrRacket. This allows you to work through bite-sized chunks of Scheme, and gives you an easy tutorial-style way to follow the textbook as you explore the language. Within DrRacket, go to the Language Menu, and the Teaching Languages ...


5

I would add to Buffy's answer that DrRacket also contains several built-in learning languages that allow you to dip into Scheme slowly. These languages are designed to be used with the free online textbook How to Design Programs by Felleisen, Findler, Flatt, and Krishnamurthi (the last of whom is a user on this very site). Please see my answer here (Scheme ...


5

Procedural approach. Not a joke: with functional programming students are very quickly faced with the necessity to write their code as a set a (reusable) functions with a clearly defined role. With the traditional approach of imperative/OO languages, they learn functions after a lot of other concepts : loops, arrays, etc. Probably too late. For example: ...


4

I undertook this study myself about a year ago. I started working through the Programming Languages MOOCs on Coursera (Part A Part B Part C), which are based on a UW course of the same name. I didn't really know what I was getting into, but it sounded interesting. Before I knew it, I was learning a radically different approach to programming first with SML ...


4

I won't tell you which one, as I don't know, and would just be my opinion. But here are some criteria. First look at what other learning materials you have, and use the same language. Some versions of scheme are not pure (that is they have mutation). Do not use one of these. Half way through structure and interpretation of computer programs, we learn how to ...


3

There are some great answers here already, but I have one thing that was not said yet directly: Forcing students to learn a second language before proceeding further I strongly believe that knowing multiple languages is crucial for proper programmer development. Every language has it's own ways of modelling reality, and devs using (even worse: knowing) ...


3

I taught a "Functional Programming" course on multiple occasions. It was basically a Haskell course. Phew, can't wait to teach it again. To answer you question precisely: you have no state, no classes and no usual OOP model. You have to abstract things much more than you are used. Oh, and there is this weird syntax. I mean--- uncurry f a b = f (a, b) But ...


3

When I created my course for Scheme (under not dissimilar circumstances from yours), I used The Little Schemer as my primary source. The book itself rapidly became too dense for my HS students, so I designed my lessons around each chapter. My course, then, like the book, took the students slowly through a very foreign landscape. We took no effort to ...


2

I learned Racket using the material taught by the UW MOOC on Coursera Programming Languages, Part B, which is modeled after this UW course. Here are the relevant helpful documents, which do provide an introduction to the language along with quite advanced material which involves implementing a programming language within Racket: Notes for Unit 5 and Unit 6 ...


2

Unfortunately most scheme books are dead tree only and many are out of print, though available in the used book market. The classic is Structure and Interpretation of Computer Programs by Abelson and Susan. It is probably your best option and is still in print. There is also an online version of SICP at https://mitpress.mit.edu/sicp/full-text/book/book....


1

user2892 mentioned the book SICP (Structure and Interpretation of Computer Programs). This book alone is enough of a reason to justify Scheme as a major contender for an introduction to computer science class. This book is a must-read for anyone truly into computer science. See Brian Harvey's essay... Brian Harvey: "In 2011, to celebrate the 150th ...


Only top voted, non community-wiki answers of a minimum length are eligible