Personal Advice on High School Computer Science
Yesterday, I spent two hours with my daughter – a junior in high school – trying to help her process string input in a reasonably complex Java program. Mind you, this is only week two in her computer science studies and while she eventually got the program to execute, I suspect that she understands maybe 25% of the subtle syntactic and semantic issues involved. The truth is that her class should be going much more slowly through the basics.
This rush to complex coding is concerning because it trains young programmers to partially understand what is going on – and to be delighted when the program seems to execute – sort of. One previous program I watched my daughter write, for example, involves the familiar decimal to binary – and it worked just fine. But the reverse program converting binary to decimal had a fatal (unnoticed) bug: It did not check whether the input was binary. This trains insecure coding.
I had a similar experience a few years ago when my son was in the same course – and the result was a book he and I wrote called “From Gates to Apps: An Introduction to Computer Science.” My daughter’s present experience has prompted me to revise that book into eBook form – and I hope you will consider buying one for your own child. You can easily download it for $9.99 on Amazon.com and it can make a substantive difference.
The philosophy in that book, which was developed over a lifetime of teaching computer science, is this: Computing is based on the power of abstraction. By building a solid foundation embedded in logic gates and hardware design, it becomes easy to explain simple coding and how translators then create the possibility for high level languages. Only then should you start programming. If you skip the early steps, you cripple young minds forever.
By the way, I fully recognize that advanced high school courses in computer science are designed to prepare students for the AP exam. It's been my experience that slowing down up front and focusing on the basics is the best way to do this. At minimum, teachers and parents should ensure that students are developing a more concrete understanding in parallel with all this crazy coding preparation for the exam.
One more thing: Parents love to say that their Liam or Ava (it was Mary or Billy when I was in school) is a super advanced programmer and needs to be challenged. Well to them, I would offer the following: Forward their last complex homework assignment to a truly professional programmer for analysis: Prepare for a response that shows dozens of errors in the code.
I wish I could say that this does not matter, but the reality is that studies in computer science at the high school and undergraduate level are as critical to the United States as perhaps any issue I can imagine. We seem to only address what’s urgent, at the risk of ignoring what’s important. My favorite cartoon is the one showing a man sitting on a rocking chair reading to his child under the caption: “The real seat of power.”
Please consider having your child download the eBook onto their mobile, and perhaps you might read it together. Go through one chapter a day, and you'll be done in thirty days. This might be the most important thing you can do today for your child - and for your country! And as a favor to all of us, please forward this short note to the computer science teacher in your school.
Lawyer, Trusted Introducer, Former US Senate Staff Counsel (early 80’s for Senator Bob Dole), Former State Assistant Attorney General, Judge and Retired Senior Legal Division Instructor at FLETC.GOV "IP On Everything"
7 年“And as a favor to all of us, please forward this short note to the computer science teacher in your school.” Gladly, Ed ! I’ll also see to it that parents, sponsors and schools represented in our CyberSpace Camps are given the great benefit of your sage wisdom injected into their STEM/Computer Science curricula.
Lawyer, Trusted Introducer, Former US Senate Staff Counsel (early 80’s for Senator Bob Dole), Former State Assistant Attorney General, Judge and Retired Senior Legal Division Instructor at FLETC.GOV "IP On Everything"
7 年After a presentation I gave several years ago to the INFRAGARD National Congress about CyberCamps which was followed up by four successful CyberCamps conducted by the Charlotte INFRAGARD Chapter, a group of my colleagues have been invited by the President/CEO of The Global Institute for Cybersecurity + Research Global Situational Awareness Center at the NASA/Kennedy Space Center for Space Education to conduct CyberSpace Camps at the Kennedy Center. One and two day CyberSpace Camps will be conducted at the Kennedy Space Center throughout the year, not just during the Summers. We’ll be focusing on STEM(+) topics such as online safety and good CyberCitizendhip as well as projects such as designing micro satellites :-) I’ll be pleased to discuss our plans with any interested organizations.
Space Systems Security Engineer
7 年I tell my kids, "Computers so exactly what you tell them to do, not what you want them to do". I also tell them it is important to slow down in the beginning when learning to code, so they learn how computers think and interpret those commands. I guess I have another book to add to my kids' reading list.
Skilled cybersecurity / IT / organizational leader. I help firms protect and build the operating revenue streams required to achieve strategic objectives.
7 年Interesting article Edward Amoroso. I am working with my elementary aged kids on Python before dropping to lower level languages and on to hardware. A core message has been "computers are stupid and do exactly what you (or someone else) tells them, so be sure you are asking what you think you are." Hadn't thought about starting with hardware to explain how the software is working though.