The start of Fall means cooler climates, pumpkin spice everywhere, and the start of school. This year I find myself volunteering with the TEALS (Technology Education and Literacy in Schools) program. TEALS is a program dedicated to “preparing the world’s future innovators” by immersing students in computer science at a young age.
The students are incredibly bright and motivated—they have to be in order to wake up in time for a 7am class, before school even starts. I can’t think of a better way to starting my day by jumping on the motorcycle and evading Maryland drivers to enrich these students’ learning experience in their AP Computer Science Principles class.
The computer applications we develop to enrich our lives are built upon dozens of layers of abstractions. These abstractions make it possible to render graphics, compute terabytes of data, and communicate with people around the world all within a dozen lines of code. We stand on the shoulder of giants.
However, those abstractions aren’t always perfect and nor are they 100% reliable. In one situation, a student was having trouble getting his client code to connect to the server in his multi-user dungeon (MUD) game. His code worked just fine on his home network but didn’t work on the school’s network. This served as an excellent opportunity to develop problem-solving skills. What assumptions does the code make and how can those assumptions be verified?
As the student and I worked through his assumptions and verifying them, he learned the various system utilities to diagnose the problem. We peeled back each layer of abstraction, revealing that computing and network environments are not always as clean as our development environments. The operating system is messy, the DNS resolution isn’t reliable, the network may be filtered.
While the end result may be a (Read more...)
This is a Security Bloggers Network syndicated blog post authored by Jeffrey Tang. Read the original post at: Cylance Blog