Skip to main content

Teaching

My approach to teaching and education includes following backward design principles and using technology to support the practice of teaching and learning. Throughout core undergraduate computer science courses, I strive to help students connect computer science theory with software development practice.

Teaching Philosophy & Practices

I incorporate the use of existing technologies like Moodle course management, Google applications, TopHat, lightboard videos, and Gradescope to facilitate teaching tasks for both in-person and remote learning. I have also created tools like PDF feedback file generation scripts, scripts for automated evaluation of student work, and Jekyll static web templates to facilitate creation and presentation of course materials through the university’s GitHub Enterprise instance.

I begin by outlining the desired skills and abilities students should demonstrate after each topic in my course. By defining learning objectives to guide these skills and abilities, I can then ensure any assessments like homework or exams align with those learning objectives and assess student understanding of course materials. I also created a script to generate PDF reports of individual student performance against each of the topic-level learning objectives.

Instead of lengthy 75-minute lectures, I divide lectures into several smaller topics separated by short example problems. Students are immediately able to practice course materials and apply new knowledge, ask me questions as I roam around the room during the exercise time, and self-check their understanding as we walk through solutions after the exercise is completed.

As course coordinator for CSC316 Data Structures & Algorithms and CSC415 Software Security, I create assignments to help students integrate computer science theory with software development practice. With data structures and algorithms course projects, students are provided a software requirements specification and must design pseudocode algorithms, select appropriate data structures and sorting algorithms, analyze their algorithms for worst-case runtime, and propose an object-oriented software design. With software security, students practice common software exploits using a vulnerable web application to better understand how common vulnerabilities can be exploited in a real-world web application.

As instructor of multiple courses that require students to submit code, I have dealt with many cases of academic misconduct in my courses. To be more proactive about academic integrity, I created a beginning-of-semester lecture and introductory assignment about the North Carolina State University (NCSU) Code of Student Conduct, why academic integrity is important, and expectations for academic integrity in my course. I am also a member of NCSU’s Academic Integrity Council through the NCSU Office of Student Conduct.

Related Funding & Grants

News ArticleKing, Schmidt Awarded DELTA Grant for Course Redesign

Abstract: CSC316: Data Structures is a third semester, required course for Computer Science (CSC) majors and minors. The course serves 100-200 students every semester. Through the Critical Path Course Redesign Grant, Drs. King and Schmidt will work collaboratively with instructional designers and other DELTA personnel to provide the highest quality resources for students in CSC316. We aim to address four primary challenges: 1) smoothing the transition into the theory-based CSC316 course from the prerequisite CSC216 course, which focuses on practical object-oriented programming and basic software engineering; 2) emphasizing the connection between algorithm theory and the software development lifecycle; 3) improving students’ ability to incorporate algorithm analysis and selection of efficient data structures when engineering software that solves a real-world problem; and 4) improving students’ written and verbal communication skills when justifying why they select specific algorithms or data structures to solve a given problem.

News ArticleResearchers Creating a Cyber Security Education Curriculum

Abstract: NC State will develop, document, and deliver course materials for institutions wishing to educate and prepare Cybersecurity graduates to meet the workforce needs of the Federal government and industry, in support of the Cybersecurity National Action Plan. This curriculum addresses key elements of the identified knowledge, skill, and ability areas. Individual courses will be modularized and packaged for use by others, including syllabi, teaching materials, readings, and fully documented, hands-on student exercises. A course roadmap will be presented, along with a means for prospective students to self-assess their needs. An educator’s workshop will be organized to train teachers in the use of these materials.

Current Courses Taught

Previous Courses Taught