447 karma · joined April 29, 2008
I work on hardware and concurrency is a constant problem even at that low level. We use model checking tools which can help.
Here is a course taught at UT with some slides from guest lecturers from industry that looks like a decent overview:
https://www.cerc.utexas.edu/~jaa/verification/
Also, the main conference in the area is FMCAD, you can find a lot of related work there. More recently the conference has moved more towards software, but if you look at some of the older proceedings you can find a lot of hardware related stuff.
There is decent amount of overlap between formal for hardware and software, so if you study one you will likely have enough background to get started in the other.
"So you're saying the best way of figuring out what's inside someone else's mind is to ask them?"
"That's right."
My kids have done some basic programming in scratch, which I think is a good place to start. I also once set up godot with a simple open source game that they could edit (change sprites and adjust parameters like speed/size etc). They enjoyed that. I think once they want to start doing something more advanced, something like roblox or minecraft modding might be a good place to get their interest. Shadertoy/GLSL might be another fun thing to start with at more a high school level.