bridging the gap: how open source prepares cs students for real-world challenges