Some of the simpler parts of CS entail:
- factoring code into functions
- composition of functions into larger pieces of functionality
- if / then / else logic
I learned the basics of all of these in high school, mostly dealing with AppleSoft Basic.
Let me explain how my high-school level CS skills benefited me, long before pursuing a degree in same.
Before starting college classes toward a degree, I worked for a temp agency. They quickly discovered they could send me to any client struggling with Lotus 1-2-3 (ok, so I'm revealing my age :-) and I'd knock it out of the park.
I was pretty adept at algebra so spreadsheets were more like toys than tools. I quickly learned how to record macros. Because I knew about factoring and composition, I was able to create small macros which would do certain functions, then test those macros, confirming that they worked the way I expected. I could then create other macros which could compose one or more smaller macros into larger pieces of functionality. Macros could also do loops ....
Lotus had functions which did if / then / else logic. Once you got the hang of them, you could do some pretty advanced stuff.
With macros, and my skills at that point, I could make Lotus get up and dance. It was programming, after all, but nothing which needed college-level CS training.
A couple contracts I did as a temp:
The client had a bunch of data entry into a spreadsheet (rows in a spreadsheet can be queried as a simple database). I quickly discovered which columns were unique and which were repeated. I'd:
- key in the unique stuff
- key in the repeated stuff just once
- create macros to copy / paste as needed
It blew the client away just how fast I could get data into a spreadsheet.
The client had put together a spreadsheet to calculate depreciation on a large number of items. They needed someone to sit there and (manually) run hundreds of iterations of:
- calculating the sheet
- copying data around
- calculating totals
- stashing those somewhere
I automated the process (macros, loops, if / then / else). I sat there for over 3 hours while the machine did all the work. They didn't gripe; they were expecting to have to pay someone a full day to get that done. I got it done after lunch.
I've had multiple occasions in my life where companies brought me in as a temp, decided they REALLY liked my skills, and hired me. Why did they like my skills? I could type fast, I'm reasonably personable and, if something could be programmed / automated, I could usually figure out how to do so.
These constitute basic CS skills; I hadn't made it to college yet. I was able to do some pretty advanced things with the typical office software of the time. Even if I hadn't pursued a degree in CS, these skills gave me a leg up in just about any career / field of endeavor which used computers. How many careers / fields do NOT use computers, these days? How many of us, seeking employment, would NOT like a leg up on other candidates?
I did, eventually, pursue a CS degree. While I was in college, I was acquainted with a young woman who was studying to become an actuary. She was taking programming courses in C++ because the actuarial groups she'd talked to said they wrote their own analysis software in C++. Of course, actuarial is VERY heavy in Mathematics, which @Peter Taylor has mentioned.
If you're trying to motivate teenagers to develop these skills, showing them how even basic-level skills can improve their desirability to employers should get them thinking.