In elementary school in the late 1980's, our school librarian of all people -- a nice, fun older lady -- taught us LOGO programming. The class went relatively deep given that the students were all eight or nine years old. Our last assignment was to write a function that would draw a regular n-gon (taking n as a parameter), then incorporate that into a recursive function that would draw arbitrarily deep spirograph-type shapes using a callback function. Pretty much everyone figured it out on his or her own, as I recall. Our "computer lab" at the time consisted of someone going and setting up folding tables in a hallway or the cafeteria and then lugging a bunch of Apple //e machines out of a closet, then tearing the whole setup down after a couple of hours.
In middle school, we had a short unit on BASIC programming, by now on the Apple IIGS. By this time it was the late 1990's, and I'd started teaching myself QBASIC on our home PC; the computers we were using in school were around seven years old by this point.
In high school, I took a semester of computer science as a freshman and a year of "AP Computer Science" as a sophomore. This was largely just indoctrination into OOP. The entire course consisted of writing completely trivial C++ programs which would consist of several objects, none of whose member functions exceeded one or two lines. Nobody really enjoyed the course or learned much of anything, but we were pretty much bound to the AP curriculum so there wasn't much that could be done.
Had I my druthers, I'd design a computer science program for schoolkids by focusing more on the sort of stuff I did as a little kid, which was really conceptually much deeper and certainly a lot more fun.