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!
Since most of the students will be totally new to programming, I strongly suggest to start with Scratch. It's a great, playful way to get familiar with some programming concepts thru scripting.
After that, I would suggest something that offers students opportunities for immediate results in visible ways. Javascript seems especially good for this. Python is another option (which is also becoming more popular as first language in college level courses).
Make it interesting with immediate results. You don't have to buy the keychains. They have learning labs here where they can immediately see their design. If you're a Title I school though, I'm sure you can totally get funding for the charms.
Some ideas:
Start classes with some typing practice. Find some games. There are some online typing racing games, but they may load too slowly (in my experience).
Scratch is a fun way to get them familiar with some basic programming concepts.
Integrate it with your history or English classes, and teach them how to find good information and illustrative pictures for a report / project. Skills with Word or PowerPoint will tie into this.
Have you possibly thought of using an Amazon echo dot to possibly teach some interesting CS ideas? Outside of the educational apps to teach CS that it has, you can also discuss things like the cloud, natural language processing, AI, databases, ect. I'm currently using it with my own group of kids to teach CS ideas and have been getting pretty creative with it!
splicing things together, effects (fadein-out), I'll probably have a part of the screen with the professor and the rest of the screen taken up by written examples, worked out problems/formulas, what have you. So any sort of animations or effects related to having a video of the professor talking/teaching/explaining, while also having written content or images student can see in the video.
http://www.khanacademy.org/finance-economics/core-finance/v/interest--part-2
something kind of like this, except imagine a small window in the top corner of the screen with the professors face, and instead of only a virtual blackboard, i want to also be able to handle inputting images or other animations as well.
Wiggins and McTighe is pretty dense, and I wouldn't approach it for a single course. If you want a somewhat easier read of the same material, I recommend Harriet Isecke's Backwards Planning.
Amazon link: https://www.amazon.com/Backwards-Planning-Professional-Resources-Harriet/dp/1425806333
I am a Computer Science educator. I teach classes 6th to 12th grade as well as run specialized classes for higher level, non-age specific groups.
I would recommend Grant Wiggens' and Jay McTighe's Understanding by Design as a book for curriculum development. It is a great starting point for creating curriculum that can be evaluated and iterated upon.
Amazon link: https://www.amazon.com/Understanding-Design-Grant-Wiggins/dp/1416600353/
Best of luck!
Try my book. Aimed at teaching middle school CS, but I know this project-based approach worked in high school too!
my mistake. the textbook version has "game programming" in the name. the retail version (1/4 cover price) is Python Programming for the Absolute Beginner.
https://www.amazon.com/Python-Programming-Absolute-Beginner-3rd/dp/1435455002
You could do a repl.it on your account, when the students edit the code, a copy is made and saved into their account - this happens automatically.
Then you could do:
def calculate_tax(value):
tax = 0# do something here
return tax
tax = calculate_tax(100)print("Tax on £100 at 20% is:", tax)
I post lessons in the Repl.it classroom, along with comments in the code section outlining how students should write the program. I tell them to create a new Multiplayer and invite me to collaborate on it, and that they should copy and paste the code to Multiplayer. Then, when they're done, they copy and paste it back into the assignment and submit! Works like a charm, especially since I can cycle through what the students are working on. I use my notifications as a list of Multiplayer projects to look through.
Thank you for the response. I had a look at the website and it looks great. Will definitely give it a try. I use mostly python as well to introduce basic programming concepts to the students, so this seems like a great fit.
​
In class, I usually use repl.it which is kind of similar to trinket.io actually, because you can build classes and invite students in if you create a teacher account. It supports a lot more programming languages, in case you want your students to move on to other languages in the future.
​
There are a lot of good replies here, will maybe see which fits my needs the most, and update here again. Thank you again.
I highly recommend using Processing as an introductory language. It makes it easy to get interactive graphical programs going, make interesting-looking images, etc.
You can also have a culminating project of creating a program of their own design, as long as you curate the goals a little bit to make sure they're reasonable.
If you want, I can send you the curriculum I've used for an intro class in processing, which I think was pretty successful. It was a one semester class that met every day, so it would probably be appropriate to use roughly the first half of it for your semester (depending on how much work they're expected to do outside of class...most of the class time in my class was spent working on programming assignments).
FreeCodeCamp has a lot of projects listed all throughout their curriculum. There's a whole section under "Coding Interview Prep" called "Take Home Projects," but there's more sprinkled around specific languages and frameworks, like the section for React. There's no ASP.NET projects, but you could look at the projects in the Node/Express or APIs sections and convert them.
Are you sure the email address needed is for age verification? This post on the scratch forum suggests it’s just for account recovery, so you could make one email for the whole class.
In Denmark, we have something called "Coding Pirates", which basically is an after-school activity to teach kids coding, run by volunteers.
It's been a while since I volunteered, but when I did, Scratch was probably the most widely used language. It's great for kids without prior coding experience:
Other languages we used were Arduino (for the older teens), LEGO Mindstorms. I also heard about some Blender and Unity.
But we started everyone on Scratch, and it works super well. :)
Can you use other tutorials? There's a set of resources called the Creative Computing Curriculum Guide that also uses Scratch. The activities in the guide are designed to provide a balance between structure and student agency. I have used them with teachers, not students, but the teachers seem to enjoy the flexibility of the projects and have said that they have used the activities with their classes.
The Guide also has a bunch of Debug-It activities, like this one, where you have to figure out why a Scratch program isn't doing what it is supposed to. If you are unsure whether the student understands the concepts, you could ask them to try and complete the Debug-It activities. If they are able to solve the problems in those, they probably have a good understanding of Scratch.
Are you just thinking of static (front-end only) pages? It'd be easy to set up Github Pages and ideally set it up with an active GitHub account that shows off students' projects they've contributed to.
You could try out Redmine. It's open source and you could even build plugins for it, which may be a topic for your class to improve the project management software that they're using.
To be honest I did not quite get whether you are interested in some specific "search and sort" algorithms.
I have an example which, probably, may suit your purposes: take the list of IP-ranges by countries. Then generate several thousands random IPs and ask people to determine countries by them.
If the list is initially sorted, then it is a practical task for binary search. If it is not sorted, then you also have a task for sorting :)
Here is an example of this problem:
http://www.codeabbey.com/index/task_view/binary-search-in-array
Though you'd better get input file without preprocessed IPs (from here: https://db-ip.com/db/) - it is 9Mb long and has about 200000 ranges. So if you will give 10000 IPs to process, it will make obvious that simple iteration through the list is a poor approach.
Hope this helps!
An online compiler might make up for a lack of your less tech savvy viewers. I guess it just depends on your lesson goals. If you're going for a young and not so savvy audience I might suggest Scratch. It's meant for kids and obscures the coding part so they can focus on concepts. The intro course at my university uses it.
What's the context of the class? Is it an introductory programming course? Software Engineering? Something else?
For introductory programmers, I've used two different approaches:
Have everyone install GitKraken and teach them how to: fork and clone (from GitHub), stage and commit, and push (back onto GitHub). Students picked this up very quickly and I rarely had any problems.
In another introductory class (on C++ that used predominantly nix command line), I taught them the same processes (fork and clone, add and commit, push). Literally every assignment began with them forking my repo, then cloning it into their *nix workstation. Even the students who struggle mightily with programming learned those steps pretty quickly because of the repetition. The only problem I run into fairly regularly is when students forget to fork before cloning (and therefore clone *my repo rather than their fork of it) so when it comes time to push, they get an error message since they don't have write permission to my repo. In those cases, I posted a FAQ that has step-by-step solutions to those kinds of problems (in this case, removing the remote origin then forking and setting a new remote origin to the fork).
Both approaches work fine and I'll continue using either, depending on whether the class predominantly uses GUI (#1) or CLI (#2).
For learning Git myself, I essentially started with command-line git and just picked up new commands as I needed them. I also try to keep version control of all my educational materials and even stuff like my research scripts and papers.
If you want to teach your students more in-depth features of Git, such as branching, merging, rebasing, etc. it is easiest to do so in the context of a collaborative programming project. You may also consider involving students in actual FOSS projects.
Algorithmic Puzzles by Levitin is an excellent resource to teach fundamental algorithm concepts most other books don't bother explaining. It has a short chapter on algorithm fundamentals (explained in an approachable way) followed by over 100 puzzles to solve along with solutions and explanations. You can probably find the PDF version online on some university website or straight from the author.
There is a book called <em>The CS Detective</em> that may have some ideas in this direction.