A Python tutorial using Snap!
======
SnapPy: Why Do It?
As technology becomes increasingly relevant in our lives, so does the ability to understand, interact with, and build modern technological systems. To do this, programming, the process by which one is able to communicate directly with a computer, has become an extremely important skill to possess. However, to those unacquainted, learning how to program can be a daunting task. Unlike other languages, a single typo in an entire block of code will completely break its functionality. Therefore, the learning curve for the most commonly used programming languages is quite steep and the ability to do something useful requires an enduring commitment. Because of its lack of instant gratification, those who do not know how to program are often disheartened at the process of learning.
Our philosophy is that the current proccess of learning to program by learning a language such as Java or C is flawed. Instead, the process should be split into two stages: (1) learning how to think like a programmer, and (2) learning a programming language. Teaching these two concepts used to be inseparable, however with the invention of graphical programming languages (GPLs), it has now become possible to teach programming without the need to also teach the complex syntax of most programming languages. A graphical programming language is a language that allows users to create programs by manipulating graphical elements rather than writing textual code.
Unlike the syntax of even the most user friendly textual programming languages, the semantics of blocks in graphical programming languages can be easily inferred without any prior coding knowledge. Additionally, blocks are always visible and therefore the user does not need to memorize the syntax of a block, only that a block with a particular functionality exists. These features make graphical programming languages an ideal tool for teaching beginners the basics of computer programming. They have the unique ability to give users a hands on experience with the core workflow and components of programming without bogging them down in tedious syntax.
Because of this, GPLs are becoming increasingly popular as a way to introduce kids to computer programming for the first time in a fun and engaging manner. However, for many reasons that should be apparent, graphical programming languages have their limitations. The biggest limitation is that blocks are merely a high level abstraction of underlying textual code and have no support outside of their environment. Therefore, while GPLs are useful and cool, at this time, the main end goal must still be to teach beginners how to harness the powers of a textual programming language. As was mentioned above, GPLs are popular among kids, however after reaching the boundaries of what a GPL can offer, these beginners have no obvious method of converting their knowledge of GPLs into the knowledge of a more useful textual programming language.
Therefore, SnapPy is a tutorial that uses snap to introduce the basics of python.