We present an Online Teaching Environment (OTE) that supports "learning by doing" philosophy in teaching telecommunications software and routing. "Learning by doing" is achieved by giving students a programming assignment that introduces them to socket programming and gives them the opportunity to practice implementing simplified routing protocols. The OTE creates individual assignments for students, accepts solution submissions via the Internet, and, finally, checks the assignments automatically. The system also notifies the students of possible mistakes in their solutions, so they can learn from their mistakes, fix them and resubmit the corrected solutions. The teacher needs only to start the system when the course begins and verify the assignment results when students have finished their work. The OTE is compatible with modern learning management systems through its adherence to the SharableContent Object Reference Model (SCORM) specification. The OTE supports intricate and realistic programming assignments through representative topology generation and sophisticated network simulation.