35 votes
Accepted

What could be the possible advantages of teaching Scheme as first programming language?

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 ...
Buffy's user avatar
  • 36k
24 votes

What could be the possible advantages of teaching Scheme as first programming language?

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 ...
Ben I.'s user avatar
  • 32.9k
21 votes

Programming languages specifically designed for beginners

I would consider teaching in Python if you wanted to give your students a taste of programming in a text-based language—pretty much the only type of language used professionally. A visual programming ...
Aurora0001's user avatar
  • 3,506
21 votes
Accepted

Programming languages specifically designed for beginners

Scratch is a visual block-based drag-and-drop programming language designed specifically for learners, especially children. It's created by the Lifelong Kindergarten Group at the MIT Media Lab. The ...
Scimonster's user avatar
17 votes

What could be the possible advantages of teaching Scheme as first programming language?

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 ...
Jörg W Mittag's user avatar
15 votes

What could be the possible advantages of teaching Scheme as first programming language?

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 ...
alephzero's user avatar
  • 613
15 votes
Accepted

Is it ok to use logic programming(like Prolog) as students' first language?

I do and am currently teaching a high school student Prolog but not as a first language. Is it OK to use logic programming(like Prolog) as students' first language? While you could do it I would ...
Guy Coder's user avatar
  • 934
14 votes

What would be a good first choice to teach game programming to beginners?

For those interested in 3D (though, it can be used in 2D) game making with an engine, I would suggest teaching Unity. It's an engine and a platform for creating games. Unity can be used with C# and ...
ItamarG3's user avatar
  • 6,297
14 votes
Accepted

What can Snap! do that Scratch cannot?

The analogy is far from perfect, but Snap! is to Scratch as Mycroft is to Sherlock. For me, the big advantage for Snap! is its provision of custom functions rather than just the custom blocks that ...
Miles's user avatar
  • 1,256
12 votes

What could be the possible advantages of teaching Scheme as first programming language?

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 ...
ctrl-alt-delor's user avatar
12 votes

Programming language for teenagers

I highly recommend checking out a language called Processing. Processing is designed for novices, and makes it easy to create visual and interactive programs without a ton of boilerplate. Here's an ...
Kevin Workman's user avatar
11 votes

Programming languages specifically designed for beginners

Processing probably ticks a lot of your boxes. It's essentially a framework built on top of Java and shipped with its own IDE (also free and open source). A lot of the boiler plate code that normally ...
Diarmuid Ó Muirgheasa's user avatar
11 votes

For a beginner, is it better to start with C or a higher level language?

Based on your history and preferences, you have a particular view about what it means to be a programmer. I have somewhat the same history, but come to a different conclusion. Start with a high level ...
Buffy's user avatar
  • 36k
10 votes

Programming languages specifically designed for beginners

The Racket team has argued that no language that is suitable for writing any real software is great for beginners: they contain too many warts, legacy features, complex corners, etc. And that includes ...
Shriram Krishnamurthi's user avatar
10 votes

What could be the possible advantages of teaching Scheme as first programming language?

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 ...
user2892's user avatar
  • 101
9 votes

What can Snap! do that Scratch cannot?

The middle column is Snap!. In Snap! you can create your own C-shaped blocks, as well as functions (see range block), this is in addition to the procedures that can be done in scratch. Note: I ...
ctrl-alt-delor's user avatar
9 votes

Programming language for teenagers

Tl;dr: use python. (Preferably python 3.) Well, I’m a teenager in your age group, so hopefully I’m some level of qualified to respond. I have to say as a bit of a disclaimer that python is my favorite ...
auden's user avatar
  • 4,684
9 votes

Is it ok to use logic programming(like Prolog) as students' first language?

As Guy Coder says, Prolog doesn't help a lot with employment. But it goes a bit farther than that. As educators we normally teach students in CS how to build things. Logic Programming languages such ...
Buffy's user avatar
  • 36k
9 votes

Why do (all) professors teach C++ 11?

The advantage of C++ for teaching programming is that it is reasonably close to the actual raw workings of the computer whilst being high level enough to teach higher level concepts. The features ...
Jack Aidley's user avatar
8 votes

Motivation for learning C++ when you know Java

I think you're having trouble justifying the study of C++ because of the way that you're thinking about it. If you are aiming towards the practical benefits, then you immediately get to the following ...
Ben I.'s user avatar
  • 32.9k
8 votes
Accepted

Thoughts on language for Intro to Data Science?

The biggest strength of R when it comes to Data Analysis is in its data visualization. As you've mentioned it is a more or less dedicated tool for statistical analysis. The thing with Python is that ...
lucasgcb's user avatar
  • 273
8 votes
Accepted

Teaching an absolute beginners class Operating Systems with Rust

Trying to learn many things at once: A language, an operating system, creating command line tools, compilation, etc. goes against cognitive load theory. That is why so many students fail. Keep it ...
ctrl-alt-delor's user avatar
7 votes
Accepted

Do I need Prolog to teach logic concepts?

Logic is a tool for distinguishing true and false statements. If a statement is proved, then it is true. If its negation is proved, then it is false. Hence the core skill is checking whether a proof ...
beroal's user avatar
  • 246
7 votes

Scheme vs Haskell for introducing functional programming

I suspect there'll be more universities switching from Scheme to Haskell for introductory functional programming (FP) courses, mainly for the 'real world' appeal of Haskell. I see 15 mentions of ...
Miles's user avatar
  • 1,256
7 votes

Programming languages specifically designed for beginners

I had great success by teaching kids (8 to 11 years old) to set up their sites. First, plain HTML to understand how model maps to presentation; then CSS to see how boring stuff can be factored out; ...
user58697's user avatar
  • 462
7 votes

Scheme vs Haskell for introducing functional programming

As the kids these days would say, you're doing it wrong. Let me explain. As I've commented elsewhere, every "full language" has a whole bunch of things that educators would find inconvenient or ...
Shriram Krishnamurthi's user avatar
7 votes
Accepted

Event-driven or polling for beginning programming environments?

On the face of it, event-driven programming seems far easier to explain. "This code will run when the button is clicked" seems obvious, and similarly, visual environments that favour this ...
Aurora0001's user avatar
  • 3,506
7 votes

Event-driven or polling for beginning programming environments?

This is a technical response, rather than a response of a teacher for beginner students. One of the big "aha" moments for me was understanding that they are the same thing. Under the covers, for a ...
pojo-guy's user avatar
  • 998
7 votes
Accepted

Why do (all) professors teach C++ 11?

As a professor who teaches C++17/20(/23: mdspan for scientific computing): the 11 standard was the big evolution, and 14/17 are only minor improvements over it. If ...
Victor Eijkhout's user avatar
6 votes

What can Snap! do that Scratch cannot?

The biggest features Snap! has that Scratch doesn't are first-class EVERYTHING and functions. Scratch only lets you create custom command blocks, not reporter or Boolean blocks. This makes Snap! much ...
Scimonster's user avatar

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