Python


Python is probably the most popular language for learning, and I am learning to use it for my new computer science electives for grades 7 and 8.
Python is a text based language without the fussy semicolons and curly braces and variable declarations that can be so difficult to use for younger middle school students. Since Python is also widely used in industry, students are happy to be learning a 'real programming language' as they call it, and there are TONS of resources available online.

Many of the resources are for version 2.7 etc, and I am using version 3.5.. However here are few that I have found useful so far:

https://www.edx.org/course/cs-all-introduction-computer-science-harveymuddx-cs005x  CS For All: Introduction to Computer Science and Python Programming is an edX course from Harvey Mudd and like other edX classes from here, it has more background than just coding. It has a great textbook included

https://hourofpython.com/    Trinket lets you embed fragments of live coding windows into your own website, and they have some great beginner tutorials. This is their Python tutorials.

http://www.pyschools.com/   Older version, but lots of good practice problems to try.

http://codingbat.com/python  Another one with lots of problems to give you ideas for the classroom.

http://www.practicepython.org/ Another good resource for problems - many too advanced for my students but good to see how different solutions are explained.


What do I actually use in my classroom and Why?
I use IDLE and Python 3 in the computer labs at my schools. This is an offline editor and programming environment. This means students have to create files using the naming conventions I give them, make folders, back up files and submit their solutions to me on the school server (I use a simple script to grade them as a batch). In addition to teaching them some file management skills, they are also not distracted by other things online or trying to find solutions online. They tend to stay on task on the offline environment, often not opening the browser for the entire class.