The first programming language experience for some people was moving turtles in the Logo language. I didn't have that experience, I was thrown to the void of C++ programming and I bearly survived the "about pointer" homeworks. However, what I could do with a computer, a text editor and a compiler, was enough to lead me to a computer science master's degree. It was there where I was introduced to the more powerful successor of Logo: NetLogo.
NetLogo is a framework to run several mobile agents in a configurable environment. NetLogo features turtles, patches and an observer. A turtle is just a mobile agent and a patch is a fixed location inside the world. The observer is an omnicient agent, can see, move, destroy, and create everything. Turtles and patches can interact between them, and they are programmed using rules from the observer perspective. Moreover, you can create a simple but powerful interface to see your agents run.
I used NetLogo in the Multi Agent System class. In that class, my team and I created a networked traffic lights environment. The objective was to minimize the average idle time of cars waiting in a red light. Our idea was for each traffic light to communicate how many cars it was waiting in the current time, to its immediate traffic lights, and it would receives this information from its previous traffic lights. With this information, each traffic light could decide if it needs to change to red or green.
It could work in an ideal world, but in the real world there are so much variables that I am not sure if it could work. But it gave an insight that networked autonomous cars (and other intelligents agents in the roads) could be a good idea. Given the last advancements in self driving cars, I think networked self driving cars could be the next step, and that is what I am researching in my PhD program.