I started coding seriously during high school. I went to ITIS Leonardo Da Vinci in Viterbo (https://www.ittvt.edu.it/), a professional school meant to teach you a job, and it does.
It taught us about physics, chemistry, system theory, advanced math, computer science, and electronics.
I remember playing with breadboards and 555 timers, learning to read the resistor capacity from the colors on them, and blowing up transistors to mess up with the teacher.
I remember calculating system stability, how mixing sodium and water will cause fun explosions, and playing with a Static Electricity Generator.
I went to that school because it was the only one having a computer programming class. We already had computer access during math hours in the first two years.
We would get to the lab, take three 5.25 inches floppy disks, insert the first two and use the first disk to start MS-DOS and the second to run turbo pascal; then we would remove the MS-DOS one and insert the third disk to load and save our software.
The class was about solving mathematical problems, calculating distances between two points and then perimeters and areas of different shapes; sometimes, we would plot functions.
It was fun, even if limited; it familiarized us with the tool and gave us another way to learn math.
From the third year, things got serious. We were still using turbo pascal, but we also introduced Borland Delphi and Visual Basic and went lower level with a Z80 suitcase.
Z80 and machine code
We used the Z80 suitcase to learn about registries and machine instructions. We would start with assembly, use books to translate it to binary, and then do the binary -> hex transformation by hand.
We would input the Hex instructions on the alphanumeric keyboard you see in the picture; we weren’t allowed to use the instructions buttons.
The light-emitting diodes in the breadboard we added to the breadboard provided the necessary feedback to ensure the software was working correctly.
Turbo pascal was there for algorithms. We learned the differences between, while, for, and repeat until loops. We learned all the sorting algorithms, how to manipulate matrix, and recursion with the infamous Tower of Hanoi exercise.
We would write code on paper during exams, and the teacher would also check and rate them on paper.
Delphi and Visual Basic
With Borland Delphi and Visual Basic we introduced OOP, and visual interface programming. Drag and drop together a quick interface to do basic things was straightforward.
We learned about databases and SQL, how to write an ER diagram, and model data.
I clearly remember building an abstraction on Delphi to link forms to tables and do the appropriate data transformation based on the table schema and some manually defined field tags.
There was another school that taught computers at the time, Liceo Scientifico, but it wouldn’t come even close to what we got in my school.
ITIS gave me a nice boost for my University career. I found myself knowing most of the things introduced during the first and second years of my CS classes.
Overall, ITIS was the right choice for me; practice and theory were mixed correctly and allowed me to get out of there with enough knowledge to write software by myself; more schools should do that imho.