Yu-Shan Sun
Yu-Shan is currently an Assistant Teaching Professor in the Department of Computer Science at Worcester Polytechnic Institute (WPI). Before joining WPI, he was a Lecturer at Clemson University’s School of Computing (2019-2023) and an Adjunct Instructor of CS at the University of South Carolina Upstate (2018). He received a BS in Computer Science from Denison University and a PhD in Computer Science from Clemson University. His research interests are computer science education, software engineering, and formal methods & verification. Recently, he was a co-PI on an NSF Research Grant that studied student impediments in understanding and reasoning about code through a novel online reasoning system (BeginToReason).
Outside of his research interests, he is passionate about teaching programming and software engineering courses. His novice students focus on problem-solving techniques prior to programming their solutions. On the other hand, the emphasis in his software development courses has been on requiring and enforcing careful analysis, design, and documentation in assignments before students write an implementation in the specified language. These courses expose students to object-oriented (OO) programming using Java. Students learn to apply software design principles and patterns, design unit tests for programs they write, as well as to write formal program specifications, and use reasoning principles.
Yu-Shan Sun
Yu-Shan is currently an Assistant Teaching Professor in the Department of Computer Science at Worcester Polytechnic Institute (WPI). Before joining WPI, he was a Lecturer at Clemson University’s School of Computing (2019-2023) and an Adjunct Instructor of CS at the University of South Carolina Upstate (2018). He received a BS in Computer Science from Denison University and a PhD in Computer Science from Clemson University. His research interests are computer science education, software engineering, and formal methods & verification. Recently, he was a co-PI on an NSF Research Grant that studied student impediments in understanding and reasoning about code through a novel online reasoning system (BeginToReason).
Outside of his research interests, he is passionate about teaching programming and software engineering courses. His novice students focus on problem-solving techniques prior to programming their solutions. On the other hand, the emphasis in his software development courses has been on requiring and enforcing careful analysis, design, and documentation in assignments before students write an implementation in the specified language. These courses expose students to object-oriented (OO) programming using Java. Students learn to apply software design principles and patterns, design unit tests for programs they write, as well as to write formal program specifications, and use reasoning principles.