<p><a href="https://courses.cs.washington.edu/courses/cse120/17sp/" rel="nofollow noreferrer">The CSP course at UW</a> uses processing
The instructor has reported mixed feelings about it.</p>

<p>Stanford is trying out a <a href="https://explorecourses.stanford.edu/search?view=catalog&amp;filter-coursestatus-Active=on&amp;page=0&amp;catalog=&amp;q=CS+106J%3A+Programming+Methodology+in+JavaScript&amp;collapse=" rel="nofollow noreferrer">new course based around Javascript</a>:  (but it hasn't run yet...)</p>

CC BY-SA 3.0
2017-05-23T15:09:41.667Z
2017-05-23T16:01:01.607Z
2017-05-23T16:01:01.607Z
adamblan
<p>According to a semi-recent survey paper by Pears et al.<sup>1</sup>,</p>
<blockquote>
<p>During the last four decades, many languages have been used for teaching introductory programming. The language choice is usually made locally, based on factors such as faculty preference, industry relevance, technical aspects of the language, and the availability of useful tools and materials.</p>
</blockquote>
<p>On these criteria, Processing doesn't look too bad.</p>
<h2>Faculty preference</h2>
<p>What can I say to you about your own preference? I would just advise thinking about what you hope to achieve with the course. As I've said elsewhere on this site, a traditional computer science program, a zero-to-job-ready boot camp, and a short-track for non-majors might have intro courses with very different objectives, and that's as it should be.</p>
<h2>Industry relevance</h2>
<p>Relevance is kind of a hidden benefit here. I've never heard of any big companies writing serious enterprise projects in Processing. However, it is based on plain old Java, which remains one of the most widely used languages today. In fact, it's sort of a best-of-both worlds situation.</p>
<p>Pears et al. tell the story of RIT dropping Eiffel because students didn't want to learn a language that they couldn't use after graduation, but also note that one big downside of Java is that it come with a lot of syntactic baggage that gets in the way of learning actual computer science (algorithmic thinking, how data structures work, etc.). Processing strips away a bit of the syntax that Java beginners find overwrought while still being <em>basically</em> the popular language that they will be able to use in the real world.</p>
<h2>Technical aspects</h2>
<p>Not much to say here beyond what was in the previous section. Processing is very graphics-oriented. It'll be up to you to design a curriculum that teaches CS concepts using graphics-oriented tools.</p>
<h2>Tools and materials</h2>
<p>There's plenty here. A solid official website at processing.org with documentation and tutorials, a relatively small but respectable <a href="https://stackoverflow.com/questions/tagged/processing">community on Stack Overflow</a>, a subreddit, and a FOSS culture that has ported Processing to other languages/platforms.</p>
<p>Simon Fraser University recently ran <a href="http://www.cs.sfu.ca/CourseCentral/166/tjd/intro.html" rel="nofollow noreferrer">an intro course using Processing</a>. I have no special insight there, I found it by a simple web search. But if you're interested, maybe you could reach out.</p>
<p><sub>1: Pears, A., Seidman, S., Malmi, L., Mannila, L., Adams, E., Bennedsen, J., ... &amp; Paterson, J. (2007). A survey of literature on the teaching of introductory programming. <em>ACM SIGCSE Bulletin, 39</em>(4), 204-223.</sub></p>

CC BY-SA 3.0
2017-06-23T20:51:45.993Z
2017-06-23T20:51:45.993Z
2020-06-18T08:36:57.023Z
Piyush Parikh
<p>Bret Victor offers some excellent criticism of specifically Processing (and Javascript) as a language/environment for learning to program, in his wonderful (like almost everything he produces) <a href="http://worrydream.com/LearnableProgramming/" rel="nofollow noreferrer">Learnable Programming</a> essay, with respect to things like readability, making computation visible, decomposition and recomposition and more. It's a must-read!</p>

<blockquote>
  <p>JavaScript and Processing are poorly-designed languages that support
  weak ways of thinking, and ignore decades of learning about learning.</p>
</blockquote>

CC BY-SA 3.0
2017-06-14T17:25:47.483Z
Can you elaborate here on some of those criticisms? It's helpful for us to have answers here rather than on a site linked out to. Thanks!
Peter
CC BY-SA 3.0
2017-06-14T17:30:19.683Z
@Peter it's a large, well-thought-out piece building on especially Papert's constructionism research, with the sections following on each other. It will take away from the impact of everything he says to quote smaller sections. Which is why I only mentioned the _types_ of things he criticizes in Processing (and other systems), such as poor readability, not making computation visible, etc., as I mention in my answer.
Abraham
CC BY-SA 3.0
2017-06-14T17:32:07.897Z
The criticisms, in my opinion are more applicable to the Khan academy system rather than the tool. It's easy to poke holes in all of those self guided learning environments.

All programming languages / teaching tools have their ups and downs.

You can design wonderful educational experiences with processing and horrible ones as well.
Mike Zamansky
CC BY-SA 3.0
2017-06-14T17:56:43.047Z
@MikeZamansky I don't agree re applicability. Although some of the criticisms could be said to _only_ be applicable to a system with higher levels of liveness (liveness itself being a good thing, which Processing does not have), most are not -- such as the criticism of the [design decisions that were made when creating the] Processing language/environment itself in the Language section of the essay, touching on Identity and Metaphor, Decomposition, Recomposition (global state, modes that alter the meaning / consequence of code), and Readability (context-sensitive, memorisation, ambiguity).
Abraham
CC BY-SA 3.0
2017-06-14T18:20:24.087Z
@Peter if you've read the essay, you (and everyone else of course) are very welcome to share suggestions for which criticisms to put in this answer like you asked -- I can't actually think of any that won't reduce the impact of reading the essay in its entirety. If I agree with the suggestions I'm more than happy to edit my answer for the sake of everyone reading it. Thanks!
Abraham
CC BY-SA 3.0
2017-06-14T17:23:57.967Z
2017-06-14T17:23:57.967Z
Abraham
<p>I am currently designing an intro to programming course for middle school students using Processing. In particular, I am using these two resources to focus the curriculum:</p>

<p><a href="http://rads.stackoverflow.com/amzn/click/1457187086" rel="nofollow noreferrer">Make's <em>Getting Started with Processing: A Hands-On Introduction to Making Interactive Graphics</em></a></p>

<p><a href="https://www.raspberrypi.org/learning/introduction-to-processing/" rel="nofollow noreferrer">Raspberry Pi Foundation's "Introduction to Processing" Resource</a></p>

<p>Make's resource moves all the way from simple, one-line programs like <code>ellipse(50, 50, 80, 80);</code> to OOP, file IO, JSON, data visualization, etc. </p>

<p>To supplement these resources, I am using videos from Daniel Shiffman's YouTube channel <a href="https://www.youtube.com/user/shiffman/featured" rel="nofollow noreferrer">The Coding Train</a>. Of particular value are his short coding challenges where he completes a programming task in the allotted time while talking through the design process.</p>

<p>I find that Processing's power comes from its scale combined with its ease of entry. I can confidently say that students will be writing "real" code on day zero and getting instant results on something other than the command line. Plus, there's the satisfaction of starting to learn programming with a text-based language instead of something like Scratch which can feel restricting and elementary to some students. And, as Daniel Shiffman's videos show, there's really no stopping how far you can go with it. </p>

CC BY-SA 3.0
2017-05-23T20:34:09.153Z
2017-05-23T20:34:09.153Z
Peter
<blockquote>
  <p>What features of the Processing language lend themselves to an introductory course?</p>
</blockquote>

<p>In a nutshell: Processing makes it easy to create visual, animated, interactive (read: fun and engaging) programs without all of the boilerplate code that other languages require.</p>

<p>For example, here's a full executable Processing program:</p>

<pre><code>ellipse(50, 50, 25, 25);
</code></pre>

<p>This program will show a window that displays a circle. Students can very easily change the parameters to see what happens. Can they draw a smaller circle? Can they move it left or right? This allows you to pretty easily talk about functions and parameters, as well as pointing them to other functions in the reference. In pretty much no time at all, you can have them looking stuff up in the reference to draw a scene or a character.</p>

<p>Here's a slightly more advanced program:</p>

<pre><code>void setup(){
  size(500, 500);
}

void draw(){
   ellipse(mouseX, mouseY, 25, 25);
}
</code></pre>

<p>This program shows a 500x500 window, and 60 times per second it draws a circle wherever the mouse is. This allows users to "draw" with the trail left by the circles. This leads you to pretty easily talk about stuff like <code>if</code> statements and user input.</p>

<p>These programs are much more engaging than the typical hello world programs of other languages. Think about all the boilerplate code that you'd need in Java or JavaScript to get a window with a 60 fps draw loop and user input.</p>

<p>Processing also lends itself to "graduating" to other languages pretty easily. It's built on top of Java, so it leads to developing "pure Java" or even using Processing as a Java library. And it can be deployed as JavaScript using Processing.js, which leads to developing HTML and JavaScript (which circles back to developing P5.js).</p>

<p>Other than that, I love the community built around Processing: it's geared more towards artistic and creative coding, and makes an effort to be inclusive and welcoming to novices.</p>

<p>Shameless self-promotion: I've written a series of tutorials on Processing available at <a href="http://HappyCoding.io" rel="nofollow noreferrer">HappyCoding.io</a>.</p>

CC BY-SA 3.0
2017-07-24T18:10:17.047Z
2017-07-24T18:10:17.047Z
Kevin Workman
<p>My team and I have used Processing for an intro experience a couple of times. The first was for rising ninth graders when I designed Google CAPE 2010. </p>

<p>There were a number of reasons for the decision to use processing but the bottom line is, at the end of the day, it worked very well.</p>

<p>We have since used processing for the intro experience for the CSTUY SHIP summer program and again, it works well.</p>

<p>As with any platform / language, you have to make some choices - Processing lends itself to graphics without GUI support so if you want to really be text or GUI based that could be an issue. We also had some compatibility issues with either the sound or video library (I forget which) but that said, the fact that on supported platforms, it was easy to access these features was a plus.</p>

<p>Some of the reasons we chose processing:</p>

<ol>
<li>The community (not as important now as it was then since there are more alternatives)</li>
<li>Java as the core language (this meant that we bought into the oop idea but we could also say "the language used in APCS-A which for a summer program was a selling point)</li>
<li>A number of interesting libraries to use.</li>
</ol>

<p>On the other hand, I've never used Processing for a school year class intro experience but there's no reason why it couldn't be used.</p>

CC BY-SA 3.0
2017-06-13T17:07:46.277Z
2017-06-13T17:07:46.277Z
Mike Zamansky
<p>We have two entry points for programming students here: one is web-oriented and features HTML5/CSS3/ECMA6, and the other is in a robotics environment using LabView.  Both classes address the "big 5": variables, objects, functions, conditional logic, and iteration.  </p>

<p>We are thinking about a new entry point for a new audience. What features of the Processing language lend themselves to an introductory course? </p>

CC BY-SA 3.0
2017-06-12T02:46:37.643Z
@Peter:I have (hopefully) narrowed the question by asking for whether this meets "minimum requirements"/entry point as opposed to "best practices," and wonder if the question can be reopened in its current form.
Tom Au
CC BY-SA 3.0
2017-06-12T21:15:28.840Z
@TomAu Absolutely - it has my nomination for reopening certainly. Thanks for the revision.
Peter
CC BY-SA 3.0
2017-06-23T15:07:47.213Z
What's the age level here?
auden
CC BY-SA 3.0
2017-06-23T15:20:45.260Z
Grades 11 and 12.  The audience is students who are brand new to programming.  My school is a statewide magnet school (NCSSM) located in Durham, NC.
ncmathsadist
CC BY-SA 3.0
2017-05-23T20:59:22.753Z
I'm voting to close this question because “is anyone out there doing this?” invites a long list of “me too” answers, which [Stack Exchange isn't a good place for](https://cseducators.stackexchange.com/help/dont-ask). There are surely good questions to ask about how to devise a course around Processing, about how to teach this and that subject using Processing, about what audiences it's suitable for... but this question isn't it.
Gilles 'SO- stop being evil'
CC BY-SA 3.0
2017-05-24T00:34:01.937Z
This is a new site and this is the basis for useful discussion.  We need to get some of those started.
ncmathsadist
CC BY-SA 3.0
2017-05-24T08:40:51.833Z
No, this is [not a discussion site](https://cseducators.stackexchange.com/help/dont-ask), it's a [question and answer site](/tour). We do *not* need overly broad questions to get started, in fact they're a bad idea because they start the site with poor content that is inferior to other, more established resources. The ideal way to start the site is with *focused*, *expert* questions.
Gilles 'SO- stop being evil'
CC BY-SA 3.0
2017-05-27T01:53:58.030Z
I have a vested interest in this topic and would love for substantive, experiential responses, so I suggested an edit that might address the issue of it being "too broad."
Peter
<curriculum-design><processing>
Using Processing as an entry point in an Introductory Course
# Using Processing as an entry point in an Introductory Course

(Asked by: username_0 on 2017-05-23)

We have two entry points for programming students here: one is web-oriented and features HTML5/CSS3/ECMA6, and the other is in a robotics environment using LabView. Both classes address the "big 5": variables, objects, functions, conditional logic, and iteration.

We are thinking about a new entry point for a new audience. What features of the Processing language lend themselves to an introductory course?

**Tags:** curriculum-design, processing

> **Comments:**
> **username_4**: I'm voting to close this question because “is anyone out there doing this?” invites a long list of “me too” answers, which [Stack Exchange isn't a good place for](https://cseducators.stackexchange.com/help/dont-ask). There are surely good questions to ask about how to devise a course around Processing, about how to teach this and that subject using Processing, about what audiences it's suitable for... but this question isn't it.  
> **username_0**: This is a new site and this is the basis for useful discussion.  We need to get some of those started.  
> **username_4**: No, this is [not a discussion site](https://cseducators.stackexchange.com/help/dont-ask), it's a [question and answer site](/tour). We do *not* need overly broad questions to get started, in fact they're a bad idea because they start the site with poor content that is inferior to other, more established resources. The ideal way to start the site is with *focused*, *expert* questions.  
> **username_2**: I have a vested interest in this topic and would love for substantive, experiential responses, so I suggested an edit that might address the issue of it being "too broad."  
> **username_1**: @username_2:I have (hopefully) narrowed the question by asking for whether this meets "minimum requirements"/entry point as opposed to "best practices," and wonder if the question can be reopened in its current form.  
> **username_2**: @TomAu Absolutely - it has my nomination for reopening certainly. Thanks for the revision.  
> **username_3**: What's the age level here?  
> **username_0**: Grades 11 and 12.  The audience is students who are brand new to programming.  My school is a statewide magnet school (NCSSM) located in Durham, NC.  

---

## 6 answers

### Answer by username_2 on 2017-05-23. Score: 4

I am currently designing an intro to programming course for middle school students using Processing. In particular, I am using these two resources to focus the curriculum:

[Make's *Getting Started with Processing: A Hands-On Introduction to Making Interactive Graphics*](http://rads.stackoverflow.com/amzn/click/1457187086)

[Raspberry Pi Foundation's "Introduction to Processing" Resource](https://www.raspberrypi.org/learning/introduction-to-processing/)

Make's resource moves all the way from simple, one-line programs like `ellipse(50, 50, 80, 80);` to OOP, file IO, JSON, data visualization, etc.

To supplement these resources, I am using videos from Daniel Shiffman's YouTube channel [The Coding Train](https://www.youtube.com/user/shiffman/featured). Of particular value are his short coding challenges where he completes a programming task in the allotted time while talking through the design process.

I find that Processing's power comes from its scale combined with its ease of entry. I can confidently say that students will be writing "real" code on day zero and getting instant results on something other than the command line. Plus, there's the satisfaction of starting to learn programming with a text-based language instead of something like Scratch which can feel restricting and elementary to some students. And, as Daniel Shiffman's videos show, there's really no stopping how far you can go with it.


---

### Answer by username_9 on 2017-07-24. Score: 3

What features of the Processing language lend themselves to an introductory course?

In a nutshell: Processing makes it easy to create visual, animated, interactive (read: fun and engaging) programs without all of the boilerplate code that other languages require.
For example, here's a full executable Processing program:
ellipse(50, 50, 25, 25);

This program will show a window that displays a circle. Students can very easily change the parameters to see what happens. Can they draw a smaller circle? Can they move it left or right? This allows you to pretty easily talk about functions and parameters, as well as pointing them to other functions in the reference. In pretty much no time at all, you can have them looking stuff up in the reference to draw a scene or a character.
Here's a slightly more advanced program:
void setup(){
  size(500, 500);
}

void draw(){
   ellipse(mouseX, mouseY, 25, 25);
}

This program shows a 500x500 window, and 60 times per second it draws a circle wherever the mouse is. This allows users to "draw" with the trail left by the circles. This leads you to pretty easily talk about stuff like if statements and user input.
These programs are much more engaging than the typical hello world programs of other languages. Think about all the boilerplate code that you'd need in Java or JavaScript to get a window with a 60 fps draw loop and user input.
Processing also lends itself to "graduating" to other languages pretty easily. It's built on top of Java, so it leads to developing "pure Java" or even using Processing as a Java library. And it can be deployed as JavaScript using Processing.js, which leads to developing HTML and JavaScript (which circles back to developing P5.js).
Other than that, I love the community built around Processing: it's geared more towards artistic and creative coding, and makes an effort to be inclusive and welcoming to novices.
Shameless self-promotion: I've written a series of tutorials on Processing available at HappyCoding.io.


---

### Answer by username_8 on 2017-06-13. Score: 2

My team and I have used Processing for an intro experience a couple of times. The first was for rising ninth graders when I designed Google CAPE 2010.

There were a number of reasons for the decision to use processing but the bottom line is, at the end of the day, it worked very well.

We have since used processing for the intro experience for the CSTUY SHIP summer program and again, it works well.

As with any platform / language, you have to make some choices - Processing lends itself to graphics without GUI support so if you want to really be text or GUI based that could be an issue. We also had some compatibility issues with either the sound or video library (I forget which) but that said, the fact that on supported platforms, it was easy to access these features was a plus.

Some of the reasons we chose processing:

1. The community (not as important now as it was then since there are more alternatives)
2. Java as the core language (this meant that we bought into the oop idea but we could also say "the language used in APCS-A which for a summer program was a selling point)
3. A number of interesting libraries to use.

On the other hand, I've never used Processing for a school year class intro experience but there's no reason why it couldn't be used.


---

### Answer by username_5 on 2017-05-23. Score: 1

[The CSP course at UW](https://courses.cs.washington.edu/courses/cse120/17sp/) uses processing
The instructor has reported mixed feelings about it.

Stanford is trying out a [new course based around Javascript](https://explorecourses.stanford.edu/search?view=catalog&filter-coursestatus-Active=on&page=0&catalog=&q=CS+106J%3A+Programming+Methodology+in+JavaScript&collapse=): (but it hasn't run yet...)


---

### Answer by username_6 on 2017-06-23. Score: 0

According to a semi-recent survey paper by Pears et al.1,

> During the last four decades, many languages have been used for teaching introductory programming. The language choice is usually made locally, based on factors such as faculty preference, industry relevance, technical aspects of the language, and the availability of useful tools and materials.

On these criteria, Processing doesn't look too bad.

## Faculty preference

What can I say to you about your own preference? I would just advise thinking about what you hope to achieve with the course. As I've said elsewhere on this site, a traditional computer science program, a zero-to-job-ready boot camp, and a short-track for non-majors might have intro courses with very different objectives, and that's as it should be.

## Industry relevance

Relevance is kind of a hidden benefit here. I've never heard of any big companies writing serious enterprise projects in Processing. However, it is based on plain old Java, which remains one of the most widely used languages today. In fact, it's sort of a best-of-both worlds situation.

Pears et al. tell the story of RIT dropping Eiffel because students didn't want to learn a language that they couldn't use after graduation, but also note that one big downside of Java is that it come with a lot of syntactic baggage that gets in the way of learning actual computer science (algorithmic thinking, how data structures work, etc.). Processing strips away a bit of the syntax that Java beginners find overwrought while still being *basically* the popular language that they will be able to use in the real world.

## Technical aspects

Not much to say here beyond what was in the previous section. Processing is very graphics-oriented. It'll be up to you to design a curriculum that teaches CS concepts using graphics-oriented tools.

## Tools and materials

There's plenty here. A solid official website at processing.org with documentation and tutorials, a relatively small but respectable [community on Stack Overflow](https://stackoverflow.com/questions/tagged/processing), a subreddit, and a FOSS culture that has ported Processing to other languages/platforms.

Simon Fraser University recently ran [an intro course using Processing](http://www.cs.sfu.ca/CourseCentral/166/tjd/intro.html). I have no special insight there, I found it by a simple web search. But if you're interested, maybe you could reach out.

1: Pears, A., Seidman, S., Malmi, L., Mannila, L., Adams, E., Bennedsen, J., ... & Paterson, J. (2007). A survey of literature on the teaching of introductory programming. *ACM SIGCSE Bulletin, 39*(4), 204-223.


---

### Answer by username_7 on 2017-06-14. Score: -1

Bret Victor offers some excellent criticism of specifically Processing (and Javascript) as a language/environment for learning to program, in his wonderful (like almost everything he produces) [Learnable Programming](http://worrydream.com/LearnableProgramming/) essay, with respect to things like readability, making computation visible, decomposition and recomposition and more. It's a must-read!

> JavaScript and Processing are poorly-designed languages that support
> weak ways of thinking, and ignore decades of learning about learning.

> **Comments:**
> **username_2**: Can you elaborate here on some of those criticisms? It's helpful for us to have answers here rather than on a site linked out to. Thanks!  
> **username_7**: @username_2 it's a large, well-thought-out piece building on especially Papert's constructionism research, with the sections following on each other. It will take away from the impact of everything he says to quote smaller sections. Which is why I only mentioned the _types_ of things he criticizes in Processing (and other systems), such as poor readability, not making computation visible, etc., as I mention in my answer.  
> **username_8**: The criticisms, in my opinion are more applicable to the Khan academy system rather than the tool. It's easy to poke holes in all of those self guided learning environments.  All programming languages / teaching tools have their ups and downs.  You can design wonderful educational experiences with processing and horrible ones as well.  
> **username_7**: @MikeZamansky I don't agree re applicability. Although some of the criticisms could be said to _only_ be applicable to a system with higher levels of liveness (liveness itself being a good thing, which Processing does not have), most are not -- such as the criticism of the [design decisions that were made when creating the] Processing language/environment itself in the Language section of the essay, touching on Identity and Metaphor, Decomposition, Recomposition (global state, modes that alter the meaning / consequence of code), and Readability (context-sensitive, memorisation, ambiguity).  
> **username_7**: @username_2 if you've read the essay, you (and everyone else of course) are very welcome to share suggestions for which criticisms to put in this answer like you asked -- I can't actually think of any that won't reduce the impact of reading the essay in its entirety. If I agree with the suggestions I'm more than happy to edit my answer for the sake of everyone reading it. Thanks!  

---

