Learning through Practice: Teaching Empirical Software Engineering for Undergraduate Students | Synapse