I know the reasons for teaching Java...but I really wish that when a coding curriculum is decided upon, we go to something as close to the *nix-like shell as possible. I&#x27;m teaching Python to non-CS college students right now, and it never fails to amaze me how many times I have to remind them that we&#x27;re dealing with text and textfiles, whether it&#x27;s web scraping or counting words in Shakespeare or accessing an API. If they have any doubt what they just opened and read into memory, or wrote to disk, just switch over to the GUI (i.e. Finder on OS X) and inspect the file the &quot;old fashioned way&quot;. The students that get it are the ones who can use programming on a casual basis...I don&#x27;t attempt to teach the basics of comsci theory, but if someone can see that a task is repeatable and abstractable into a for-loop, and then apply that to something &quot;real-world&quot;, even if it&#x27;s just something like sending or collecting tweets, or managing photos...that to me is what students in a general curriculum should be learning: that the power of programming is the ability to control a computer at the granular level that you need to do exactly what you plan for. Not just learning how to push buttons on an interface designed for general consumption.<p>The other stuff...algorithmic efficiency, recursion, design...can come later, and are much easier to teach after you&#x27;ve appreciated the potential of computing and computational thinking.