Saturday, February 27, 2016

Traffic Light Project in Several Acts

Dawn DuPriest posted an interesting project on her blog - Teaching event-based programming – a traffic light. I like it a lot. It’s a good way to introduce state programming. Dawn did her project in Processing which meant a few limitations. That’s not a bad thing. Working around limitations can be great for learning.

image With .NET languages (I use Visual Basic with my freshmen and C# with my sophomores) I have a timer object to work with. That opens a few more options for me and I have been thinking about using the project in a couple of ways. I have created a light class which is used by a traffic signal class. Maybe more complicated then I need but I needed to try some stuff.

I have the timer control call Signal.NextState where Signal is an object of type Traffic Light. The Traffic Light class has a NextState method which checks the current state and changes the light and returns a new timer interval.

I'm thinking I can use the traffic light class more or less as I have it now with my freshmen so they can learn about the timer. I may have my sophomores create the Traffic Light class. The classes I created are written in C#. That means I can use them as the basis for my examples for the sophomores.

Since it is all .NET I can use the C# objects in Visual Basic programs. That means I can hide the complicated stuff from the beginners who are not ready for it. We can stick with just using the timer. Or I can create a version that doesn’t do the state work inside the traffic light control. That way I can talk about state programming and still hide a lot of things.

If I take the later path I can show my students who take the second course how we can encapsulate this sort of thing.  We’ll see. I have a lot more thinking to do about this whole thing. But having some code to play with helps me work things out.

Edit: Dan Schellenberg has his own riff on this project and blogged about it at Traffic Light Remix


dan said...

Thanks for passing along the idea, Alfred. I used a version of this with my class today, to reinforce state variables. I wrote a bit about it here:
Though I haven't gotten to OOP with these students yet, it might be an interesting thing to covert to OOP once we get there...

Alfred C Thompson II said...

Great post Dan. This is exactly to sort of thing I always hope to see from sharing ideas. Each person makes it their own and adds something new. Thanks for sharing.