Intro to Computer Programming at your local community college.
IIRC it should tend to only assume high school algebra knowledge, nothing crazy.
UC Berkeley has a super cool intro course that uses Snap!.
I believe Berkeley's SNAP (previously BYOB) supports a functional approach (info.
Scratch was what got me into programming originally. But I didn't really understand other languages until I started playing with a scratch mod snap which originally started out adding procedures and functions (before they were included in vanilla scratch) but became essentially a graphical LISP.
Very nice. You can build strings in Snap with the 'join' blocks in the operators tab, fwiw -- you could get your output to a list of strings which might not look as busy.
Or, grab some of the histogram drawing code from http://snap.berkeley.edu/snapsource/snap.html#present:Username=nate&ProjectName=grapher%20w%20custom%20blocks , which would let you show things graphically!
Don't be disheartened! I worked through Eloquent JavaScript when I was a year into my CS degree and I still found it challenging.
With that said, your struggles sound like programming fundamentals (which Eloquent JavaScript assumes you are a little bit familiar with already). That means things like the intuition for when you want to use a for-loop, when to use recursion etc.
I can only recommend what I used - UC Berkeley's intro CS course, CS10, has very accessible step-by-step labs with gradually harder programming exercises while still being fun and intuitive. That could be a good place to start.
Here's the link to all the labs: https://beautyjoy.github.io/bjc-r/course/cs10_fa16.html
The exercises are done in a visual wrapper for JavaScript called Snap!:http://snap.berkeley.edu/snapsource/snap.html
About Snap! - it looks like it's a game but it literally does have all the functionality of JavaScript. The big difference is that rather than trying to guess what functions exist in JavaScript, you have a sidebar with every possible function. Not only that, but data types (e.g. variables vs. control flow) are in different colors. It's amazing for building a conceptual foundation for problems like FizzBuzz.
If you then want to "graduate" to a more advanced function oriented approach after Scratch, UC Berkeley modified Scratch to make Snap!. It's actually pretty powerful once you get the basics. A lot of intro programming classes use it because it "uses pictures to represent (abstract) ideas such as loops, Booleans, and threads".
Scratch ([http://scratch.mit.edu]) is a great starting language for kids. There's a reimplementation of Scratch aimed at highschoolers and adults ([http://snap.berkeley.edu/]) but I haven't looked into it.
> Pourquoi pas plutôt du logo, comme il y a trente ans?
Parce que le monde a évolué quand même en 30 ans. Scratch ou Snap par exemple, ça me semble un peu plus mignon pour commencer. Il y a même un énième fork qui se branche avec de l'arduino, pour ceux qui veulent faire des trucs un peu plus violents.
Dans un autre registre, il y a des plateformes plus sexy et interactives genre Kodu ou même Small Basic, avant effectivement de leur apprendre le combo vi+perl, ou pire: le box-model de html5 et les sélecteurs jquery...
「ハラムになったら罰ゲームだぞー!」
福笑いの絵柄は12/8~12/25にGoogle+で募集し (→詳細) 、描いていただきました。ありがとうございました!
・アメリカ合衆国:Alpha2198さん
・ベトナム&日本:Ti_Riさん
・韓国&パプアニューギニア:Izumirさん
Snap!版:http://snap.berkeley.edu/snapsource/snap.html#present:Username=wairan&ProjectName=hukuwarai_6
いろいろ詰め込みすぎて重かったり、不安定だったりするかもしれません。不具合報告歓迎です。
Snap!版で画面が真っ白になる場合は、Flash対応のwebブラウザ (Puffinなど) でScratchを開くという手も…?
余談:Scratchのほうで"fukuwarai"というタイトルに変えようとしたら、"fuku"がNGワードにひっかかりました。kurwa!
Should've been more specific -- AoPS sells these books https://artofproblemsolving.com/store/list/all-products, some of which might be worthwhile to buy if you expect to have enough students in a similar situation.
Oh yeah, definitely. There's also a more "grown-up" version of Scratch called "Snap!" which incorporates a lot more concepts from other programming languages: http://snap.berkeley.edu/ Although, unfortunately, the last time I used it, it didn't have the same social aspect as Scratch, and seems to be more of a niche thing.
Click the flag in the corner. Result may need tweaking
C/C++ is a great place to start and is what is used in the Arduino software. Many of the languages used are related to C, so whatever you learn will be useful down the road, no matter where you end up. The one drawback is figuring out when to put a semi-colon, when to use curly braces, and when to use brackets. It can be a bit frustrating getting caught up in syntax. When you're trying to work on the subtleties of a language you miss out on the fun stuff like problem solving. As a basic intro to programming we (IT teachers) like http://snap.berkeley.edu/ It lets you program by drag/drop, and you can do quite a bit with the tools they provide. It lets you get into the idea of flow control, again, without getting into syntax too much.
Agree with code.org. They've got some good lessons for younger students. I started my 6yo daughter on some of their stuff a few months ago and she really liked it, especially the one where she got to program Elsa and Anna to skate in patterns.
Scratch from MIT - http://scratch.mit.edu - is also a good starting spot for students new to programming. And they've got tons of resources for you to go through. There's also Snap from Berkeley - http://snap.berkeley.edu - that's built from Scratch. Most of the stuff they've added though is probably better aimed at high school and early college though.
CS Unplugged - http://csunplugged.org - is a good site for CS topics that you can do without a computer. I have a couple of them as backups when our network goes down or as emergency sub plans.
Lego NXT robots are fun if you can get some money together. They're not cheap though.
Android app inventor. It's a drag and drop environment to build mobile apps. MIT built it originally, but I think it was taken over by Google when MIT dropped it.
If you can find some old beater computers, or even just some parts, letting the kids see what's inside a computer is almost always a crowd pleaser.
If it were me, I'd try to keep each grade level as close to the same topic as possible. Ex, when you're teaching programming try to have them all doing some sort of programming lessons. Have the young kids make Elsa dance, up through Scratch, Legos, and maybe something like Python with the older ones. Should make planning easier and you won't have to have your mind jumping around quite so much. And if you're planning on being there for more than a couple years it might be worth trying to figure out topics arcs that could extend as the kids go grade to grade.
I am in a comp sci class, and I would recommend starting out with Codecademy and/or SNAP. After doing a few lessons, try to make a game or program using them. Also, Hour of Code can help to start things off. I would also recommend talking to science/engineering teachers for help with running the club.
Scratch might be clunky, but it's much easier for a 12 year old to manage those blocks than it is to actually write code.
In addition they can mess around with real graphical stuff and see everything they do in a fun and engaging environment. As much as a traditional language might be less clunky, staring at text and numbers is not very fun when you're 12. On the other hand making a cat spin around and creating simple little games with scratch is much more engaging.
If you don't like scratch I'd still really recommend visual block based languages. Other alternatives could be BYOB or Design Blocks. If you really want text base alternatives then something like LOGO, python or Ruby might be good.
Snap! was inspired by Scratch but has expanded features. So it’s good for novices and more experienced programmers.
I’ve actually written a few (simple and color-coded) tutorials on it and plan to write more while I’m on break. If he decides to use Snap, feel free to PM me and I’ll link you:)
Implying my university doesn't require us to learn snap
Implying I'm not prepared for this
Similar to Scratch, but maybe a little more involved. Here is the link.
MIT App Inventor is another one you might like. You can create Android apps with it, and the programming is drag and drop. If you learn Scratch first, the concept of how App Inventor works will make a lot more sense, although you'll want to find tutorials on YouTube.
You have the gift of time on your side, and that means you can learn programming concepts such as loops and variables using the drag and drop block programming. Later, when you're taking a Java class, the content will be easier for you to grasp because it won't be so abstract -- you'll be able to visualize what's happening.
Reddit has many good subreddits relating to computer science. Try r/learnprogramming as a starting point.
Came here to say this. Similarly Great Permutator. Recently I have become more and more impressed with what programming concepts can be taught with Scratch (or Snap!) - rather than playing games I have my daughter making them and learning a number of basic concepts.
ITT: Basic shit we should all know
Programming. All of our useless kids should learn some form of programming and not that stupid block shit either. Teach them some JS or Java or C# or Python. Not PHP though, Fuck PHP. It teaches a lot of the skills younger kids need to learn too like critical thinking and logic. And it's a lot more interesting than fucking Applied Statistics. I know some high schools have programming and some Elementary schools here in Canada use Khan Academy which uses ProcessingJS. But that is hardly enough, there should be indepth Programming courses as electives that get you extra credits towards something.
I found out not to long ago actually. I'm 16 years old and up until when i figured out I was actually stupid I wanted to be a programmer. We were doing a unit in AP CompSci that involved using the list function. We used a program called snap and long story short. I was struggling hard. I couldn't figure out how to make tell whether the first letter was a vowel or a consonant. I later figured out i had to use unicode and I hated myself for not realizing that. I'm currently in the process of finding a new area to major in in college (If any).
In a game about assembling functional blocks, it would be interesting if the programming could be also abstracted in such a way, think Blockly or SNAP.
Just think about that for a second, you drop out of 'meatspace' and into VR Space (the size of your 'space' is a representation of actual storage/execution space, i.e. your construct/program needs to fit in the available space), where your block options are, instead of physical blocks, programming blocks (I think minecraft does this with redstone?)
That's not to say remove or neglect the direct programming method which people who are familiar with actual programing will use, but it would provide a thematically similar experience.