However what's often missing is a class which teaches basic computing concepts. Files and directories are just some of them. The basic von Neumann architecture (a CPU changing ram), what a program is, how the internet protocol and the domain name system work, different parts of a URL, how a frame buffer determines what is shown on the screen, how colors are encoded with RGB values, etc. These are all very interesting concepts that could be taught at the high school level. There's a lot to be learned even without going into the technical details and I am confident that these students would then find (desktop) computers much more accessible. Smartphones and their touch interfaces have been a runaway success and I think this is in part because most people never got comfortable with traditional desktop computers (and their GUIs) due to decades of misguided computer classes.
Now, in Win7, I bring up file explorer. Click on "Documents". It says at the top it is located in "Libraries -> Documents". But that isn't where it is. It's in c:\users\name\documents".
I never understood why there are two separate file systems mapping to the same files. It's madness.
The result you're after as an ordinary user is a container holding a group of files, not a "directory" that lets you look up a filename and be told where to go find it. As an implementation, of course, the latter is closer to what a file system "directory" really does, but that's not the most useful metaphor to present to the ordinary user.
And does a phone directory contain individual listings plus other phone directories? No, but that's what "directory" meant to most people back when the name was changed to "folder". And the name change happened when GUIs were first created and needed icons to represent a thing to drop files into. You don't drop files into directories, you drop them into folders or file drawers or something. (Of course, my father can't stop calling a folder a "file", because file folders were so often called "files" at the office way back when. Oh, well.)
I've called them "directories" since before the Mac existed, so the word was long ago defined in my head by the thing itself and could be called a watermelon for all the difference it would make to me, but if I look at it with a beginner's mind, "directory" doesn't seem like a very good name.
From an implementation perspective, you are correct. But that doesn't rebut what your parent comment is saying.
> On the web, any URI that ends with a "/" is specified to look first for an index file--such as index.html--which should contain a listing of links to files and other directories.
That is not my experience with most of the web. I've seen it, but not really that much in the past 6 years.
Which reminds me of iTunes, which I've used on Windows for years. It had an option to automatically consolidate files and store them in a sane location automatically when adding music. It was great.
Oh, and if you broke them it's not like Windows will fix them for you, no you need to head over to Super User and read some solutions.
I was just reading about that today. Alan Kay is to blame it seems, as for so much. :-)
"The desktop metaphor was first introduced by Alan Kay at Xerox PARC in 1970 and elaborated in a series of innovative software applications developed by PARC scientists throughout the ensuing decade. The first computer to use an early version of the desktop metaphor was the experimental Xerox Alto"
For the wider context about desktop/folders etc see 
I found this  story linked to a while ago on here fascinating, about all the user testing done for Windows 95. They did a lot of watching people use the file/folder system, change things around etc, repeat etc. It's kind of funny, the problems people had.
I think as time goes by we'll see which of the concepts of computing we grew up with end up being core to the usage of a computer and I'd be especially excited if we went in the direction of relational linkage of assets the computer has access to.
There is really no use to have all files and folders on your fs available for opening or saving in most apps. Often you just need the most recent modified file or only files of a certain type. And there are really not a lot of places it makes sense to save files to outside of your home folder and personal project layout.
Abstractions common to literally every home computer operating system from the last several decades.
But he didn't really offer an alternative (other than Xanadu). And a hierarchical system of storage is convenient for lots of people - once they understand what "hierarchy" means.
I think understanding hierarchy is one of those epiphanies that a new computer user can sometimes have. Others simply don't seem to be able to grok it.
I think that might be a bug. Windows 10 Photos app is surprisingly good about exposing your file system nicely, without the jank of a 'private proprietary hidden library' that other photo apps sometimes use.
Right click any photo to "Show in File Explorer" directly, or click Settings and it will show you a list of "Source Folders" it scans for pictures. Double click any "Source Folder" to jump straight into it.
At least, that's all present in the current version of Photos (2018 v18081.14710)
That's pretty much how I would expect an app like this to work on a Mac!
Really? What if you want to copy a group of images? If what you describe is correct, when you drag and drop a group of images, wouldn't you get copies of the thumbnails.
I'm pretty sure my GF did this. I asked her for full res copies of some images of us, and got resized low-res versions. She uses iPhoto said she just dragged them out of the app. I had to fuss around with it and finally got what I wanted by using an export feature.
Dragging and dropping each full-resolution images one by one sounds like a nightmare.
> That's pretty much how I would expect an app like this to work on a Mac!
If this is what's now expected from Macs, oh how Apple has fallen. I can think of zero use cases where you'd actually want to drag and drop the thumbnail out, but not the full resolution image.
That said the performance of the OS is pretty good. When I learned Powershell wasnt available at cmd things got a bit better.
Ended up with a Linux VM simply because I dont have time to figure out how to reproduce simple Linux CLI commands on windows.
A true "universal" application needs to flex its interface for people who understand files and folders, and those who don't. (Most applications don't need to be this flexible, though.)
I haven't used a file cabinet at work in over a decade. I still have a file drawer at my desk but there are no folders in it. So in that regard, familiarity with the concept is probably a lot lower than it used to be.
What probably makes more sense to users today would be tagging or labeling documents into categories. Could still be implemented as files, folders, and links, but the presentation might make more sense using other analogues.
I am not a programmer by any means and I know how important it is to create a filing system with directories. It is irritating how much time is lost while waiting for colleagues to locate a file hidden among the many on their desktop.
Edit: Sorry, I should have saved you the bother of clicking. It's a digital file management strategy loosely inspired (I assume) by library classification systems like Dewey's. I don't use it myself, but I admire the simplicity, clarity, and flexibility of the system.
I covered what I felt were basics:
* Basic communications tools (email)
* Word processing/Spreadsheets/Presentation software via g suite
* Basic command line usage including bash basics, paths, file creation and edition, sshing
* Basic HTML and "how the internet works" (also with CLI editing of html files in user directories)
* touch typing (typingclub.com)
These girls as seventh graders are coding in Python and nailing it.
in so far as it makes them realize that computers are discrete entities that are networked and that this is what the internet actually IS... it's priceless.
The first time we connected to a remote machine in a different state it BLEW THEIR MINDS. One of them asked if it was EVEN LEGAL :)
It's a single command, yes, but it's also the pivot point for a whole unit on remote access, networking, IP addresses, etc.
So consider SSH shorthand for that whole subject.
Kind of a hacker experience, really.
(A few have moved on to Linux...)
Touch-typing in standard finger position is ABSOLUTELY NOT REQUIRED to be a successful computer technician unless you are doing office document processing. As long as you can type in a reasonable speed so it doesn't become a significant bottleneck of your human-machine interface, it is okay. It's good to have this skill to become a more efficient computer operator, but it is optional in many cases.
I can type at 50 WPM minimum by just pecking two fingers on the keyboard, and even faster when I use more fingers. I barely need to look down at the keyboard, I only do it to readjust my hand position, but most of the time, I can do this by using the text I just mistyped on the screen as my negative feedback. Many people I know who are not touch-typers, have also naturally acquired a similar "just works" way of typing - you don't need to actually study it, if you use computers day-by-day, you have probably obtained it.
In the same way, when the cool kids in the 2000s were using SMS to text all the days, they learned to type at an unbelievable speed on the 3x3 numpad phone keyboard.
On the other hand, if one is struggling to type words and commands on the keyboard to operate the commandline, it doesn't mean one is merely an inefficient typer, but often indicates a larger problem: A LACK OF GENERAL EXPERIENCE ON USING COMPUTERS, and this is the real problem, as general-purpose computers are becoming less and less common and many people of the young generation do not share your experience, which was how the older generation learned to type.
Sure, you can learn to type fast using another way, but what's the point? It's like learning to play the guitar stand-up. You can do it, but what's the point?
I type quickly enough and have developed good enough typing muscle memory over time that I've never quite gotten up the incentive to properly teach myself to touch type but I would almost certainly have benefited from both typing and shorthand classes at some point.
To me typing reliably is almost more important than typing very fast.
I don't believe this TBH. I've seen people who think they are fast hunt-and-peckers, and I'd be surprised if they're getting to 30 WPM.
Have a go at one of those online tests and you might be surprised. eg https://www.typingtest.com/
You sound like a super-advanced hunt and pecker. I've never seen someone who can type without looking but their hands not in the "correct" positions.
I once had the privilege of doing the converse, teaching an 80 year old woman the same concepts. I had exactly the same problems he described. These things are not simple nor intuitive, nor are they really needed for basic usage of a computer.
I taught them to her because that was what my formative years using computers was like, and because that is how you understand what's going on under the hood. But I had to quickly roll back my ambitions to non-CLI interfaces because she just didn't have the same kind of time I had when I was 13 to just spend hours and hours figuring it all out.
It's not necessary to learn how to touch type, and it's not necessary to learn the file system concepts used by the userland. You can do amazing work with a computer without that knowledge.
Pedagogy doesn't just involve knowing how to teach, but also in knowing what needs to be taught. You don't need to dive into the intimate details of radiocarbon dating to get kids excited about dinosaurs.
But the typing thing is disturbing to me. There's lots of hand-wringing over whether or not to make students learn cursive, but my daughter was expected to write timed essays on computers (in tiny web textareas, even!) without ever being given even basic typing instruction. She's a junior in high school now, but never once in all her years of being in classrooms with computers, doing computer labs, doing online standardized tests, and being required to submit papers in electronic format, has there been any opportunity, much less a requirement, to learn to type.
Somehow, miraculously, she's a prolific writer (of fan fiction, original fiction, and humor articles for her school newspaper--along with multiple completions of NaNoWriMo, which she's gearing up for again this year), but she still types half by sight and almost all with her first two or three fingers.
I realize this can work fine, but nothing helped my own computer usage more than being forced to muddle through a typing class in high school. I'm agog we don't invest in such a basic skill in our schools.
One argument for this is that, because these skills have plenty of publicly accessible resources and are relatively simple, students can be expected to learn them on their own. More complex subjects (ie, calculus, biology, etc) should be reserved for school, as students are unlikely to learn those on their own time, without a teacher / mentor.
I know typing used to be taught in typing classes at school, but, these days, is there really a need for that? Typing-tutors can be downloaded or used online (e.g. http://www.typing.com or, as mentioned by a commenter above, http://www.typingclub.com ) to develop typing skills on one's own time -- students just need to be encouraged/mandated to use them.
Perhaps students should spend a few minutes in class trying them out to get exposed to them and then told that they'll need to demonstrate a certain basic proficiency by the end of the week -- I think some sites can save results for entire classes, schools, etc., so a teacher could just login and check results that way with a few in-class spot-checks to make sure students don't outsource the work to a ringer.
The programs are already gamified, but you could add a bit more on top by doing competitions for a prize or certificate or something. And you could do things like this over the course of the year to make sure people are keeping their skills up.
(Of course, if students don't have access to computers, then perhaps there should be a lab in school to give kids access, but, again, the programs can be run by the kids themselves during their free time or after school, etc.).
Just like with sports, a typing "coach" can be very helpful to correct these errors, particularly with children who may need help choosing short term pain for long term gain.
It's not complicated if you use it for a while, but kids these days just aren't exposed much to real computers.
The reason for this is that very few of the people doing the teaching of computing concepts in high school understand themselves and all they can do is follow the script in the textbook. Teaching degrees focus more on the concept of teaching than the content of teaching. I have first hand seen teachers with years of experience "teaching Word" get lost and come to a full stop the second something doesn't line up exactly with the book.
Using a computer does not translate into understanding a computer. I know very intelligent teachers, some with advanced degrees (Master's and Doctorate's), that have trouble navigating to a website that doesn't start with www and are unable to distinguish between a url and an email address. All of the letters and symbols (real strange ones like :, /, ., or @) might as well be part of a magical incantation that teleports words, pictures, and videos to their screens.
I try to teach file management in context where it makes sense. Web dev is a good topic to focus on it. Creating a folder to hold a site, sub folders for css,js,imgs and then relative file paths in html and css. These concepts are a first for many middle schoolers.
On the other hand kids are great at using virtual desktops on mac, whereas only maybe 2% of win users have discovered/use virtual desktops.
I remember reading a design book (IIRC, "Don't make me think") that grouped people into two categories...navigators and searchers. When building a website, some people will automatically gravitate towards trying to click the right links to get them the information they care about. Others will look for the first search icon they can find and start typing. I'd imagine growing up in the age of Google has made the younger generation fall primarily into the searcher group, so it's totally unsurprising that people who have capable search tools at their disposal would have no concept of how to organize files in ways that are navigable.
I've asked this before and I've never received a list of grievances which led me to conclude that people are just not familiar with Finder.
Still using FAR in 2018 does tend to make me one of the odder ducks in a room. I very much prefer it to the *nix terminal.
I will say spotlight is ok, but the finder interface can still be quite painful.
If you click on the icon of your main drive, it will take you to the root folder.
You have to do the same in Windows, click on the C: drive.
How is this opaque?
The other thing I'm really missing in Fidner is persistent network drives. Connecting to a network share is often slow, inconsistent and error prone, but I guess macOS' SMB issues are worth a separate discussion.
I think it comes from some kind of pathological belief inside of Apple that people can't possible learn how the file system works and try to hide it even as it exists in reality.
Even in your example the students managed to figure out how the filesystem hierarchy works, but only through a saner interface so I believe it really is the software that's the problem here.
I can only imagine it being much worse for the general population, and this makes me wish I could teach in high schools, even if just a bit. Unfortunately, part-time teachers, or teachers that just come for the odd conference/course on a specific topic seem to mostly be a uni thing, at least where I live.
I was just thinking about this the other day: kids should probably get more exposure to cryptography, maybe even before high school, for the following reasons:
- kids love secret messages
- crypto math is quite basic algebra
- even without the maths, asymmetric crypto and hashes are quite easy to grasp
- maybe it will allow them to better understand security as adults
I would love to see a future where public/private keys can be used as a general authentication mean, without it needing to be too dumbed down, as we can expect people to know the basics. It would also likely lower phishing issues.
I agree that schools are to blame here, even when they try to broaden the scope of their teachings. But I would give teachers some slack, as they were likely not prepared at all on some topics.
So, maybe the solution here is indeed to ask parents to come and teach students some bits of their speciality? It could be done in multiple domains, and I feel like this would be a lot better for kids to be able to relate and project the content their are taught onto a person's job.
> So, maybe the solution here is indeed to ask parents to come and teach students some bits of their speciality?
My SO taught HS Math for 2 years in the US. One in a VERY low income school, one in a 100% college acceptance rate school. Via what we talked about over dinners at night, I learned that what kids need is food and guardians that aren't abusive/neglectful. Honestly, ~30% of her students, from either school, would not eat at all over the weekend. No, not that they would eat Cheetos or drink Coke. They plain-jane went hungry. Long weekends were not a source of excitement for them. Their folks either didn't have the money or just didn't care. The 100% college acceptance rate school fed the kids breakfast and lunch each day, for free. That was likely the largest single contributor to the success of the school (unproven, granted).
So, if you are US based and want to help out with these issues, PLEASE DO! A lot of kids really do need very simple things like food or pencils. It's amazing how smart kids are if you just give them a sandwich and a pen to work with. They just amaze you.
Boys and Girls clubs are a great starting place: https://www.bgca.org/
Google your local after school organizations and volunteer
Become engaged in your school boards and PTA. They need guidance and citizen participation.
Can you help me reconcile that with the data from the USDA as described here? https://blog.givewell.org/2009/11/26/hunger-here-vs-hunger-t...
They describe children in 0.3% of households as skipping a meal almost every month and the number of children that did not eat for at least one day in almost every month is too low to measure.
Reach out to a local school and set up a https://www.codeclub.org.uk/
I'll go out on a limb here and say that this isn't a new thing at all. It's just that, in the past, fewer students had access to computers, and those who did generally understood them better. Now, it's not that the average high school student doesn't have access, but that the vast majority don't have any interest in how the machine works. It's the same percentage of the total who are interested and good at computing but it's just that a much lower percentage of the computer users are good computer users, in my experience.
High school "computer science" classes in my area seem to teach "you always need to type public static void main(String args) for your program to work", as opposed to teaching students what that means. As with in the past, the students who are really good at computing do most of their learning outside of school.
Now "IT" is thought to be good, and lecture rooms are getting "digitalized". Where digitalization means something horrible, using tablets and slides (which will encourage shallow thinking and distraction). That's at least the trend now in some elite schools I attended more than a decade ago.
In contrast, when I went to a (pretty forward thinking) kindergarden in the late 80s, we were taught Logo. During early elementary school I vividly remember how recursion blew our minds.
From any possible point of view, the same school had a much more avant-garde education 25 years ago. Now try to convince policy makers.
Same applies to CS schools. I was lucky enough to be taught Prolog, Smalltalk and ML during freshman year. We emphasized concepts over technologies. Now it's the other way round.
I've always wondered how practical it is to truly teach that though. Programming is incredibly abstract, and the less abstract you make it the harder it is to learn. I feel like making that leap from "just write this to get it to work" and understanding what's really happening will always take individual initiative.
"where is your data?"
"uhhh, it's in the app, or in the cloud"
"yes, but specifically where?"
The comment here nails it: https://news.ycombinator.com/item?id=18350671
Children and teenagers these days spend a lot of time using passive media consumption devices. An iPad is great if you're watching youtube or netflix passively, not so great at all if you want to create your own content, edit it, manipulate it, back it up, transfer it places, etc. Touchscreen devices and phones are great for browsing web pages. It's a media portal with a walled garden app store, not a real computer, though its hardware may be capable of more than its operating system allows it to do.
This comment could easily devolve into a "get off my lawn" rant, but I seriously believe that people who learned how to use x86 type computers from a command line first are much more capable of understanding what's going on underneath a GUI. If you spent time mucking about with config.sys and autoexec.bat settings in MS-DOS 3.3 and 5.0, a long time before you saw a Windows GUI, you could immediately grok what was going on when you did install Windows.
I am not a big fan of Arch Linux, but in the modern era there's a lot of value to getting people to learn what is going on when they do a brand new Arch install on an empty disk. What's happening with fdisk, partitioning, formatting, grub2/bootloader, etc. And why it's happening. If you don't want to go that far in an educational environment, start people from a debian stretch barebones install with CLI only + sshd.
> "uhhh, it's in the app, or in the cloud"
> "yes, but specifically where?"
> "i dunno"
We can keep going:
“It’s in /home/walrus01/docs”
“But specifically where? What physical drive?”
“It’s on /dev/sda2”
At some point it stops mattering practically. The abstractions presented to users today are often such that it doesn’t matter if the user knows what path something is stored in.
From what I've seen, people who don't understand or aren't interested to learn about computers will only learn precisely one method to achieve exactly what they are trying to do.
Not knowing how it works is a very fragile way of doing things and could fall over at any minute, and that's bound to be the worst possible minute, and in the worst possible way.
It's one of the reasons I still use a Blackberry :)
Cars is a big one.
Going back farther, textiles. We don't spend a staggeringly large percentage of our time making and/or repairing our own clothes anymore. For the most part, clothes "just works", and the average person doesn't have to worry about it.
The point of abstraction is rarely (if ever) speed, either of coding or code execution. Abstraction is about managing complexity. It's not that one couldn't write a prime-finding algorithm just as quickly and easily either way, it's that you can't write Facebook in assembly, and if you did, you would have to reinvent a ton of features from higher-level languages. Are programmers using HLLs more productive overall? Probably: more abstract code uses fewer symbols to express the same concept. However, you lose precision. One can say, "make me a sandwich", and assuming that you have sufficient access privileges, you will likely get some kind of sandwich, but since that's a pretty high-level description, you may not get the kind of sandwich you were expecting. Most of the time, it's easier and faster to just say (e.g.) `let x = 5` than to get bogged down in the details of what that might actually mean. However, if what you really want is `mov eax, 5`, then all of the other things that your HLL might be doing may not be a net benefit.
Hopefully that thoroughly clarifimuddles the subject.
But! That isn't even the part I care about. Once you get into the world you'll find that maintenance and improvement, rather than greenfield development, is the majority of what you'll be doing and that's where this difference really pays off. Higher level languages and programming tools have let us comprehend, inspect and refactor logic with much greater ease, and that's where the improvement hits the most. Coincidentally, that's also what whoever pays you will actually care about.
This is really it. Kids grow up with Ipads as their computer and cloud storage. They dont see the need for local paths, desktops, memory, disk etc.
Soon, computer programmers who actually understand what a computer does will become as rare as a IC engine engineer.
Cars, be it 60 years ago or today, were and are things you buy and own. You may take them to specialists for maintenance, but you're generally responsible and in control of the overall operation of the machine. Computing today is ceding most of it to third-party services. Suddenly, your experience is dependent on multitude of companies (which fold as quickly as they pop up), and you don't own anything.
A beagle bone black with the XINU book is an amazing introduction to computers because you start from nothing and have a working system by the end of it.
I'm a high school teacher, and I've been in this world for a long time. I'm surprised no one has mentioned the issue of pay yet. The median pay for teachers in the US is around $50k. Starting salaries are under $40k. Max pay is around $70-$90k, but it takes 10-15 years to get there, and in many states the max pay isn't this high.
If you're a good high school CS teacher, you can basically walk out the door and get a job that will double your salary. How many of you have been in a field where your pay absolutely does not depend on the quality of your work? I am leaving the classroom after this year, to focus more on technical work. It feels entirely different to be heading into work where the better my performance is, the more I'll get paid.
I've been teaching for 24 years, so I'm not leaving just for pay reasons. But I don't think we can look at solutions to better HS CS education without addressing the issue of teacher pay. If I were graduating college today with the skills I had 20 years ago, I'm not sure I'd go into the classroom.
- Yes, 2-3 month breaks are pretty sweet.
- "Legendary job security." I believe this is going away. I have tenure, and my district still offers it. That's a good thing, I believe, because it allows good teachers to stand up for good educational practices. I am definitely able to support students and new teachers better because I am not in fear of losing my job. I know some states have moved away from tenure; I'm not sure how many.
Are these enough to keep good CS teachers in education? I don't think so. If you're a good software developer, I believe you can manage a career where you take some time between jobs. You can build toward a much earlier retirement than you can as a teacher. You can live a wealthier lifestyle along the way.
Neither career is a rosy field of happiness. But my point is that if you're a good high school CS teacher, you can probably find a much more appealing work situation outside of education. If we want good CS teachers available for high school students, we should probably look at this pretty carefully.
We even had actual keyboarding classes and Mavis Beacon and everything, and I wasn't able to consistently touch type until about a year and a half into my first job as a software engineer. This was coincidentally about when I started using IBM-layout mechanical keyboards almost exclusively; I'm still regularly thrown for a loop when I switch to keyboards with other layouts, so I probably am still not actually touch typing properly, I just have built up enough muscle memory that I get by on the particular hardware I spend 8-12 hours a day hammering.
As far as pathing goes, and specifically the use of the particular convention we have around . and .. meaning present directory and parent directory, I'm not sure I was even exposed to that until I took a C/Unix programming course in college and had to get used to navigating a Linux file system in a terminal. The first computer I ever had started out with some type of Curses-style DOS shell that abstracted most of the nitty gritty details, and from there went to Windows 95->98->XP->Vista->7. As a regular PC user on Windows, you don't deal with the command prompt, you deal with the file explorer and the save/open file dialogs. When I started programming in high school, it was QBasic, then VB6, then basic C++ with Visual C++ 6 and Bloodshed, then Java working out of an IDE (JCreator or Netbeans?), and again, pathing was not particularly emphasized. Building out student-level projects, I think I just dumped whatever files I needed in the cwd, or in paths under that tree, or popped open file picker GUIs.
You really have to live and breathe this stuff day in and day out for a while to internalize it, and I wouldn't say I was really comfortable until maybe a year or so into being a "professional" programmer.
Programming is a little different from typing prose, and intellisense helps if you're using an IDE that supports it, but even then, a few characters > tab > a few more characters > tab, it really helps to be able to hit those keys without looking.
If there was one skill I wish I'd learned as a young 'un it's how to use a proper text editor. I was 32 before I used Vim for the first time. I'm getting better at it, slowly, but I wish I'd been exposed when I was younger to give that skill a good decade of exercise.
You'll get there. I switched to CS as a second career in my late 20s and first learned the basics of vim a year later. I'm quite proficient with it now more than a decade later :)
As for typing, I'm a touch typer and have been since around 5th grade. When we started using computers at school (a new phenomenon, I know) everyone had to be able to type fast. In first grade we also had to learn how to type in the "computer lab" and for homework on our home computers, which I'm very grateful for now. I can type at around ~119 WPM now.
As I mentioned in another comment, I think the concept of hierarchy is somewhat difficult to understand initially. But it is a key abstraction for almost everything having to do with computers, and especially programming.
Programming is all about understanding abstraction, at some base level. I don't know how many junior programmers I've encountered that look at source code and see it as a linear set of instructions, and just never developed the skills to abstract the problem first.
Once you understand hierarchy, the world changes a little bit. The filesystem is a simple example, but often the first a person encounters.
I can understand that it's possible kids don't know about paths, since most modern operating systems abstract this from the users, but I wonder if it has as much or more to do with never having been exposed to Linux. That was certainly my situation.
One of the first pieces of advice I read when I started teaching myself to write code was "So you want to be a hacker? Ditch Windows and use Linux full time." I realize there are lots of good Windows programmers out there - not trying to bash anyone - but for the programmer on a budget I think this is the correct path. I will also admit that I haven't used a Linux GUI in many years and I suspect that one could get by without understanding paths using a recent version of Ubuntu. One of the reasons I suspect this is that I have had my parents using Ubuntu since 2011 or so.
Nevertheless, many basic linux concepts were foreign to me when I started using it. Ever since, I've definitely thought Linux computers in schools rather than Windows would be a good idea. Linux computers without a GUI at all might be even better (at least for teaching computer classes), but I guess you might have difficulty holding their attention.
Of course, and to use an analogy, not everyone has the time or motivation nor even reason to become an auto mechanic. But something like transportation has always been a means to an end. The difference with consumer technology now is that nearly everyone fancies themselves a "tech" enthusiast in one form or another thanks to proximity and thus familiarity. But at the same time, many (perhaps most) remain underexposed to the very technology they use as a lifeline. There's a pervasive "just works" mentality that has influenced everything, partially spearheaded by tech companies like Apple circa Steve Jobs. This wouldn't be so bad, if it weren't for people spending so many hours of their own spare time using technology, but simultaneously learning nothing. The equivalent time spend in a traditional computing environment would teach the fundamentals whether one is interested or not, simply through exposure. But there's little such exposure in modern personal computing.
Touch typing for coding felt awkward because there's a lot of special symbols that are kind of hard and unintuitive to make if you try to touch same keys all the time. Also I wiggle in my chair quite a bit and believe it's essential for healthy sitting. I feel like touch typing could interfere with my wiggling.
My style of typing is yet another factor why I get infuriated when I sit in front of a Macbook. For some reason Mac keyboard is about 3/4 of the key to the side of where I expect it to be (and literally every other keyboard is exactly where I expect).
It is never the typing that is my personal bottleneck. As a developer, I spend perhaps 99% of my time thinking of the problem, before actually writing the best and most concise solution. When writing reports or other academic papers, I first construct the sentences before writing them slowly while reading out loud.
I guess this is personal preference, but I think it is worth the time to type slowly, instead of letting the fingers do the thinking.
In fact, I have noticed that my default hand posistion has shifted to placing my left hand on the bottom left corner of the keyboard (thumb on logo-key, pinky on shift), because that is where I need it for shortcuts.
Sometimes I shift to a normal typing stance (such as making this comment), when I actually need to bang out a large amount of text, but that is the minority of what I need to do when programming.
Teach em how to copy, delete, move, rename stuff via CMD and they'll get it fast!
Make them use cmd exclusively for playing music, opening games, deleting stuff... And the concept of Path, directory and files will simply click. Besides they'll have something cool to show off to their friends
If I only use explorer, I don't need to know . and ..
However, if I do lots of file operations via CMD, then I'll get tired of using cd\ all the time when I only want to go up one level.
According to Jaron Lanier, the concept of a "file" is an accidental one in the history of computing, not an essential one. If we want computing to truly be available to the masses, maybe it's time we leave things like files and folders behind, and not allow the dead weight of the past to hold us back now.
High school students still talk to their friends via iMessage or Facebook Messenger so they have plenty of exposure to this interface.
I recently switched my phone's keyboard to Dvorak to learn the layout. Interestingly, my thumb typing speed has increased with no effect on my touch typing (using QWERTY).
It's as if touch typing and thumb typing use different parts of the brain.
The old cliche is searching for google is not only alive and well but now it is search for google, go to google, then search for youtube, then search for the video you want to show.
Even when they actually have the url for a video, in the last several years since I have started paying attention I don't think I have ever seen a student use the "paste and go" option in the right click menu. They ALWAY paste it in then hit enter. Paste and go is right under paste!
When I post a link to a survey or something I want them to go to I have stopped just copying and pasting the url. I now have to paste it in and make sure to delete http://www because nearly all of them will type it in and a large percentage will do it wrong.
showing them ctrl+f to find something on a page blows their mind.
I have started teaching some sections of public speaking online and I was driven crazy by the complete tech illiteracy of some of the "digital natives." (pro tip: emailing and saying "it doesn't work" is not useful.)
I try to keep the xkcd comic about being excited when I get to show someone something new but it is hard.
I usually go Ctrl-L to focus the location bar, then Ctrl-V to paste, then enter. Is there a keyboard shortcut for "Paste and go?"
I agree - I'm not sure these "digital natives" are all they're cracked up to be. Of course there are exceptions.
Maybe it was growing up on age of empires that improved my typing.
At age 8 I typed 32wpm
At age 12 I typed 120wpm
Typing speed never really improved beyond that, occasionally hit bursts of 140+wpm but eh. Regular qwerty non mechanical keyboard.
I'm definitely the fastest in the office at typing PEPPERONI PIZZA dozens of times in a row.
Most of the replacements for paths try to pretend that there is no hierarchy or force people to not use a hierarchy. Personally I find the hierarchy to be a very useful tool and paths on a file system to be a useful way of representing them.
Whether it's fundamental or a product of socialization, ISTR there is a substantial empirical difference to the degree to which heirarchy is used to model the world between men and women, so if that is true at all it may be true only for certain values of “our”.
No it doesn't; it forms directed acyclic graphs. (Consider the fact that all humans share a common ancestor). There are probably parts of biology where reproduction does form a tree, but given the existence of horizontal gene transfer, I am not confident in speculating what they are.
i have interest in changing the math curriculum as well, but for people who like the current math curriculum I think there are enormous benefits of teaching computer skills.. science.. through implementation
Knowing the difference between "file" and "directory" and being able to touch type won't get you a $200K engineering position at Google...
Furthermore, if the goal is to generate as many $200K-comp-caliber engineers as possible, parent's point is the right one. A kid who shows up at college with the ability to write well and a bit of mathematical maturity has a much brighter future than a kid who is "good with computers" but struggles with basic math.
learning the concept of variables, and learning basic language syntax is still obviously very important, but learning basic computer skills is a prerequisite for becoming interested in computers, the internet, and how digital technology works in the first place that can lead to the development of skills to land one of these jobs. focusing on math, maybe will get you there, focusing on english/history definitely will not, unless you go to an ivy league and transition into "data science". it's just the reality of the job market
Why to take derivatives is much more important.
Taking derivatives is easy.