The effective integration of software engineering principles throughout the undergraduate computer science curriculum (abstract) | Synapse