PROJECT:EDU Guide, "Teaching Computer Science with LiveCode"

Share tips, tools, and other resources for helping educators bring LiveCode into the classroom

Moderators: FourthWorld, heatherlaine, Klaus, kevinmiller, robinmiller

Post Reply
FourthWorld
VIP Livecode Opensource Backer
VIP Livecode Opensource Backer
Posts: 9801
Joined: Sat Apr 08, 2006 7:05 am
Location: Los Angeles
Contact:

PROJECT:EDU Guide, "Teaching Computer Science with LiveCode"

Post by FourthWorld » Wed Mar 02, 2016 8:29 pm

The scope of useful new content to support LiveCode in educational settings is potentially quite vast, so to get started Bill Waldman and I propose this one we're willing to act as team leaders for to steward through to completion:

Teaching Computer Science with LiveCode

We propose this have as few pages as needed to explain the value of teaching beginning computer science with LiveCode, and to provide practical applicable guidance on using LiveCode for that goal.

It would have two main sections, effectively "Why" and "How":

Why LiveCode?: Explains the value of LiveCode from a pedagogical perspective, reinforcing the common programming elements learners will encounter (variables, loops, conditionals, I/O, etc.) while also conveying the unique advantages of LiveCode.

We believe one of the strongest advantages is that the language is inherently more readable than most others, and includes GUI objects as inherent language elements. These shorten the distance between ideation and having a completed application, thereby offering an uncommon level of satisfaction that raises engagement for learners.

We can include at least one or two comparative examples, showing a simple exercise like adding two numbers, in both LiveCode and JavaScript, perhaps also Python. I can provide those examples (the LC part is of course super-simple: "put field 1 + field 2 into field 3" <g>).

We'll also discuss the licensing for the Community Edition, reinforcing the benefits for both cost and shared materials available throughout the LiveCode educator community.

Hitting the key points of curriculum standards for beginning CS, I think a compelling case can be made for using LiveCode.

Getting Started: Rather than replicate the excellent existing materials like the User Guide, Dictionary, Lessons and others, this will provide only a very high-level introduction to how LiveCode works and how to get around the IDE.

We'll also show them where to find the User Guide, Dictionary, and Lessons, and discuss the role of each.

We can also provide a standards-based suggested outline of existing Lessons and tutorials that a teacher can dive into to get started immediately, without having to create a scope and sequence from scratch on their own.

This section will of course need to truly resonate with teachers and must make a compelling case for adherence to common K-12 CS EDU standards. So the more eyeballs we have on this the better.

Who wants to help with this project?
Richard Gaskin
LiveCode development, training, and consulting services: Fourth World Systems
LiveCode Group on Facebook
LiveCode Group on LinkedIn

FourthWorld
VIP Livecode Opensource Backer
VIP Livecode Opensource Backer
Posts: 9801
Joined: Sat Apr 08, 2006 7:05 am
Location: Los Angeles
Contact:

Re: PROJECT:EDU Guide, "Teaching Computer Science with LiveC

Post by FourthWorld » Sat Jul 23, 2016 9:57 pm

Project update: My friend Dr. Sam Coleman has begun work on an outline of the US federal Common Core standards that apply to the CS curriculum for grades K-12. He sent me a sample draft recently and it was super-great. This listing will play a very useful role in this project, providing the CC ID numbers with descriptions of the learning objects, with space provided in his spreadsheet for us to fill in with links to relevant LiveCode stacks.

He's working on that now as his time permits, and I hope to have the full listing within a few weeks.

Once we have that, I'll begin working with community members who have existing materials which may fit those learning objectives to see which ones are currently licensed under GPL, and for those that aren't which ones might be able to have a GPL option made available.

Given the GPL's freedom to modify and share, I suspect that once we start getting even just a few good foundational tutorials, we'll be able to use some of them as templates to build out the rest, so the collection gets ever easier to complete as we go along.

I'll keep you posted as I learn more, and will create a Github repo with Dr. Colemans' Common Core spreadsheet (in LibreOffice format so everyone can use it) once I get the final draft from him.
Richard Gaskin
LiveCode development, training, and consulting services: Fourth World Systems
LiveCode Group on Facebook
LiveCode Group on LinkedIn

DocDomino
Posts: 1
Joined: Tue Aug 16, 2016 1:23 am

Need help with Aligning LiveCode with Common Core

Post by DocDomino » Tue Aug 16, 2016 1:29 am

Greetings,

I need help from anyone as I work to align LiveCode tutorials/lessons with California Common Core Standards. Any takers???

capellan
Posts: 654
Joined: Wed Aug 15, 2007 11:09 pm

Re: Need help with Aligning LiveCode with Common Core

Post by capellan » Sat Aug 20, 2016 6:39 am

Hi DocDomino,

Check if these stacks could help:
http://www.canelasoftware.com/mc/metacard25/mtp.mc
http://www.canelasoftware.com/mc/metacard25/mtpguide.mc

Many, many years ago, Scott Raney wrote both stacks: Metatalk Programmer and Metatalk Programmer Teacher Guide using Florida's Sunshine State Standards and Benchmarks as guideline to correlate it's content with student's needs:

Mathematics Sunshine State Standards Grades 6 - 8
Strand A - Number Sense, Concepts, and Operations
Standard 3 - The student understands the effects of operations on numbers and the relationships among these operations, and computes for problem solving.
MA.A.3.3.2 - selects the appropriate operation to solve problems involving addition, subtraction, multiplication, and division of rational numbers, ratios, proportions, and percents, including the appropriate application of the algebraic order of operations.

Strand D - Algebraic Thinking
Standard 1 - The student describes, analyzes, and generalizes a wide variety of patterns, relations, and functions.
MA.D.1.3.1 - Describes a wide variety of patterns, relationships, and functions through models, such as manipulatives, tables, grphs, expressions, equations, and inequalities.


Strand E - Data Analysis and Probability
Standard 2 - The student identifies patterns and makes predictions from an orderly display of data using concepts of probability and statistics.
MA.E.2.3.2 - determines odds for and odds against a given situation.

Have a nice weekend!

Al

FourthWorld
VIP Livecode Opensource Backer
VIP Livecode Opensource Backer
Posts: 9801
Joined: Sat Apr 08, 2006 7:05 am
Location: Los Angeles
Contact:

Re: PROJECT:EDU Guide, "Teaching Computer Science with LiveC

Post by FourthWorld » Tue Aug 23, 2016 7:56 pm

Welcome aboard, DocDomino.

Word of your good work precedes you: I'd started this thread on a teaching guide, and early on identified the need for someone with EDU experience to help with mapping things to Common Core.

So I've taken the liberty of merging your thread with this one so we can keep the conversation moving forward in one place.

I'll drop a note to some of the educators I know to point them here, and see if we can rustle up the support you need.

Thanks so much for helping with this project. Your experience will be an invaluable contribution to helping students learn CS powerfully with LiveCode.
Richard Gaskin
LiveCode development, training, and consulting services: Fourth World Systems
LiveCode Group on Facebook
LiveCode Group on LinkedIn

Newbie4
VIP Livecode Opensource Backer
VIP Livecode Opensource Backer
Posts: 327
Joined: Sun Apr 15, 2012 1:17 am
Location: USA
Contact:

Re: PROJECT:EDU Guide, "Teaching Computer Science with LiveC

Post by Newbie4 » Wed Sep 14, 2016 4:52 am

Why LiveCode - From an Educator's Viewpoint

When I mention LiveCode I often get blank stares. They are thinking that it is a cutesy language like Scratch, Karel or Turtle Graphics. Sometimes they say "That's not a real language, is it?" or "We use Python/Java, a real language."

LiveCode, a descendent of HyperCard, has been around for over a decade and may well be the ideal language to teach introductory programming and computational thinking (algorithms, logic, problem solving, etc). It is an established language with a corporate, educational and public following. It has the excitement of newer academic languages but with the rigor and power of Python/Java. It is free, open source and actively being extended and enhanced.

Efforts are underway to prescribe what and how to teach Computer Science. They are creating new languages to make it easier for all grades. They are repackaging older languages (Java, Python, Javascript) with newer lessons. Unfortunately, they are ignoring solid education research that exists, especially in the choice of the languages.

Here are five educational reasons why LiveCode may be the best language to introduce students to programming, teach computational thinking and to get them interested in computer science.
  • 1. Connect to what learners know
    2. Keep cognitive load low
    3. Be honest
    4. Be creative and productive
    5. Test, don’t trust

#1. Connect to what learners know

“The first step when learning is to connect to what students already know. Nobody comes to class as a blank slate. Learning is a process of making sense of the world. We "make sense" of new concepts in terms of what we already know.

“Bruner and decades of cognitive psychology researchers have said that a teacher should relate new material to previously learned materials. The first step is to figure out what the learners already know and care about.”

Students know apps and games. Teach them programming using what they are familiar with. You will have their attention, interest and they will work hard at creating their own. LiveCode makes this easy without succumbing to the drag-n-drop programming schools like Scratch. LiveCode is GUI based and object oriented but the heart of it is still line by line coding and debugging.

Students also know English. LiveCode commands are very much English-like. With LiveCode, programming is simply a matter of describing what you are going to do in common terms. Think pseudo-code.

#2. Keep cognitive load low

“Human working memory is notoriously small and short-lived. We can only handle seven digits or five words, and even fewer items for children and young adults. We underestimate how much cognitive load our modern programming languages require, because as experts in programming, much of our programming knowledge is tacit -- we do it automatically without attending to the details, and without even being aware that we're doing it.

Programming is overwhelming in terms of cognitive loading. Most languages require learning a new vocabulary, basic algebra, logic and strange, new concepts.
Some Examples:

1. Variable types:
In most languages, types (byte, int, double, float, char, string, etc) are important and you either get errors mixing them or you quietly get incorrect answers in calculations. You need to know when to use each and how. You have to declare the types upfront and never, ever try to change them or mix them.

In LiveCode type is not a worry. Students do not have to deal with types and worry about mixing them. The simple command is “put b+1 into a” and the necessary conversions will take place. No muss, no fuss.

2. Comparisons:
In Python, you need to know the difference between x=y+1, x==y+1, x===y+1. The number of equal signs matter. Assignment statements are different from comparison statements. Java is much the same where x=1 is an assignment statement and x==1 is a compare statement. Students easily confuse them and get frustrated.

In LiveCode, if you want a compare the you say "is x equal to y+1”. That is it. There is no confusion between "put 1 into x" and "is x equal to 1".

3. Loops, Lists and Counting:
In most languages (Python,, Java, etc), you start counting with zero and you stop at the total minus one. That is so confusing. Students rarely get past that concept. They get confused with what numbers to use in loops, lists and other calculations. They run into "off by one" errors and mistakingly use the wrong limits. They have trouble indexing - e.g. "January" is month[0] not month[1].

In LiveCode, counting always starts with 1. Lists, arrays and indexes start with 1. There are no problems.

4. Logic
They have to learn a whole new set of symbols, vocabulary and basic algebra. They have &, &&, |, ||, ! (not) and other symbols to learn (depending on the language). They have to deal with complex logic statements (e.g. "not (a or b) or not a and not b") and ( x=x+1: x<0 || x>1, for (i=0 ; i<10 ; i++) ) These are necessary to learn but not at the beginning when you are just getting started.

LiveCode accomplishes the same goals but with English ("add 1 to x, if x is less than 0 or more than 1, repeat 10 times"). With LiveCode, the students are ready to start coding. They write what they would say. They do not have to translate it into strange forms or learn a new way of thinking.
With a low cognitive load language like LiveCode, you do not lose half your class after a few months. You have more time to spend on real computer science topics such as logic, problem solving, and on creativity, debugging, etc.

#3. Be honest.

Teach them to program using a real language, one that is used professionally and in the real world. Languages like Scratch, Karel and others are not used in the real world. They have too many limitations. They have a "low ceiling" and many things can not be programmed using them.
"In other words, just as a kid playing Guitar Hero wouldn’t be considered a musician, someone playing with coding apps isn’t exactly a coder or computer scientist.” (1)

(1) -a quote from American Schools Are Teaching Our Kids How To Code All Wrong http://qz.com/691614/american-schools-a ... all-wrong/ (a good read)
“Today, learning scientists speak of authenticity. Learners want to learn things that are authentic, that are worthwhile. There are different senses of authenticity. Are you making things like those that professionals make? Are you using the same tools and working in the same way? Are students being assessed on concepts and skills that they need to know to be successful outside the classroom? Do students find the activities personally meaningful(see #1 above)?

Students don't have to use Java and C to be doing something honest and authentic. They should be able to make real things, to explore important ideas in computer science, and to go as deep as they want. In contrast, a "programming" tool that only allows students to move a robot or avatar is not authentic in any sense of the word. It doesn't depict a real notion of computer science.”

LiveCode is a real-world programming language that is used by corporations (NASA, etc), taught in Universities, and the language behind many top selling educational games and apps in the mobile phone stores. It is object oriented and they learn about properties and messages. It is text-based, line by line coding, just like Python or Java. It is no less an actual language than Java or Python. In many ways, it is more powerful, more flexible and more realistic to use than those languages. It is much easier to write real-life, "authentic" programs in.

#4. Be creative and productive

“Computer programs are a medium that allows us to express and communicate ideas that we can't in any other medium. Computer programming for children should be taught as a literacy that expands their ability to explore complex ideas. Children must be able to use programming to generate new ideas and be productive in learning in new domains.

A tool in which students can build apps and games but doesn't give them programming as a tool to think with misses out on the greatest advantage of programming for learners. Programming language features which are about software development alone are likely not generative and productive, like typing "public static void main(String args[])" at the beginning of every program.

LiveCode is a GUI based and drag-n-drop programming environment making it more intuitive and relatable to the students. It is a logical extension from what they already know.

The commands are common English words and sentences that the students use every day. Think of it as the "pseudo-code" that we want the students to start programs with anyway.

Students are productive from day one. Within days, they can create actual programs to run on their own computers at home or give to their friends. They are quickly productive and successful. More so, than with any other language.

They can quickly advance to writing games, calculation programs, apps and much more. They can dabble with real-life issues and problems and tackle the ones that they use on their own devices. Programs that, in their wildest dreams, they never imagined that they would write. That is powerful on it's own

#5. Test, don't trust

The hardest part about choosing a programming language for children is realizing that we can't remember what it was like to be a child and we can't actually think like children anymore. As experts, we have blind spots due to our tacit knowledge. It is literally inaccessible to our memories to think the way we did before we learned programming. When an expert says, "Oh, that's easy -- any child can do that," don't trust them. Test, don't trust.

Since computer science teaching is still so new, few teachers have developed a rich sense of what's hard and easy for children. We need to try things, languages, to put them into classrooms, and to measure what happens over time.

"Low threshold" means that that programming languages for learners should be easy to get started with and "high ceiling" means that the language could be used to explore a wide range of ideas. We just don't know where the threshold and ceilings are until we try.

It's in our student's best interests that we try more experiments, keeping in mind that we need to connect with children where they are, and that we can too easily overwhelm them.

Yet, you can still challenge them. You just have to try new ways and not trust old beliefs and methods. It is a new and different world we now live in. We have to adapt and change to move forward. That means new and more innovative way to capture their interest, imagination and engagement.


Final Thoughts

The New World of Computing.
"In this new world, learning coding is about moving away from computer languages, syntax, and academic exercises towards real world connections: game design and building projects that tie into other subjects like science and social studies. This is a world of software as a form of self-expression. Computer science becomes a medium for storytelling, offering exciting pathways for kids to forge a personal identity and mastery of a powerful technology. This is the inverse of how computer science has been taught, as an impersonal, disconnected, abstracted, mathematical exercise." (2)

(2) - a quote from - Coding Snobs Are Not Helping Our Children Prepare For The Future) http://qz.com/703335/coding-snobs-are-n ... he-future/ (Another good read)
We want students to learn to use programming to solve actual problems, create what they can dream up and explore what the see in the news, They need to become creative, productive programmers with an interest in computer science and a love for programming in any language.

Industry-Standard Languages

Sometimes we hear the idea that the only real "coder" or "computer scientist" is one that programs in a language that is used in the Tech industry. Yet we know that more than half of all programmers today are not in the Tech industry. It's tempting to teach children the languages that are freely available, ubiquitous, and commonly used by professional programmers, but those professionals tools are likely not good programming languages for learners. Fortunately, we can invent languages that are just as free, run everywhere, and are designed well for learners. We just have to be careful to find a balance between ease of use and powerful.

Starting Simple

Just like teaching reading, you do not overwhelm the students with verb tenses, punctuation and many rules of grammar. You use phonetics and simple sentences to start them reading ("See Spot run"), and add more rules and constructs as you go along.

Students learn to drive using a car with an automatic transmission for the same reason. They need to concentrate on the road and driving a car. If you start with a standard transmission, you will overwhelm them with too much detail and cognitive load. Keep it simple and basic. Once they learn to drive, then they can learn about gears, shifting, using a clutch, etc.

With LiveCode you start them writing lines of code immediately and add more as you go along. You can even switch later to another language like Python or Java without much reteaching. Once they understand basic design, coding and debugging, they have the time, confidence and basic skills to then learn the complexities of more complicated programming languages.

----
Those are the justifications/observations that I have come up with to support LiveCode as a starter/standard language in the classroom. Perhaps this may be of some use to other teachers looking to adopt LiveCode and needing material to present to their administrators/curriculum people. Additional ideas and reasons are always welcome. We need to increase the acceptance and use of LiveCode in the academic world. It really is the best language to learn to program with and use.
Cyril Pruszko
https://sites.google.com/a/pgcps.org/livecode/
https://sites.google.com/a/setonhs.org/app-and-game-workshop/home
https://learntolivecode.com/

capellan
Posts: 654
Joined: Wed Aug 15, 2007 11:09 pm

Re: PROJECT:EDU Guide, "Teaching Computer Science with LiveC

Post by capellan » Sun Oct 02, 2016 9:59 pm

Hi Newbie4,

I visited your webpage. There are many interesting programming lessons that you are developing: Game Programming, App Programming, General Programming, Artificial Intelligence, Data/BigData, Cryptography, DigitalMagic, Facial Recognition, Chat Room and Computer Concepts.

Please visit this thread in the forums and download the stacks posted by Lagi Pittas, Andrew Ferguson and me: http://forums.livecode.com/viewtopic.php?f=5&t=26101
Among these stacks there are many interesting programming concepts that could be useful as inspiration for new lessons in your Programming Course.

The whole thread is about a Computer Science College Book: Analytical Engine - An Introduction to Computer Science. This Computer Science College Book have many different versions (all of them out of print) that use other programs and computer languages like: ToolBook, Java and Javascript. The HyperCard version of the book is out of print too, but you could find it easily in Amazon or AbeBooks.

Have a nice week!

Alejandro

Post Reply

Return to “Educational Outreach”