Teaching
Teaching Statements
Teaching Awards
- 2021 UVA ACM Professor of the Year
- 2016 IEEE Computer Society Mary Kenneth Keller Computer Science & Engineering Undergraduate Teaching Award
- 2014 UVA All-University Teaching Award
- 2012 UVA ACM Professor of the Year
- 2011 Trigon Engineering Society Thomas E. Hutchinson Faculty Award Winner
- 2010 Hartfield-Jefferson Scholars Teaching Prize (first year ever awarded)
- 2010 UVA ACM Professor of the Year
- 2010 Trigon Engineering Society Thomas E. Hutchinson Faculty Award Finalist
Courses Taught
Courses ordered by most recently taught.
Course Website: http://f24.cs4730.org - Taught: 2013-2015, 2017, 2022-2024
This course will introduce students to the concepts and tools used in the development of modern 2-D and 3-D real-time interactive computer video games. Topics covered in this include graphics, parallel processing, human-computer interaction, networking, artificial intelligence, and software engineering.
Course Website: http://f24.cs3240.org - Taught: 2009-2010, 2018-2024
Analyzes modern software engineering practice for multi-person projects; methods for requirements specification, design, implementation, verification, and maintenance of large software systems; advanced software development techniques and large project management approaches; project planning, scheduling, resource management, accounting, configuration control, and documentation. (Former title: Advanced Software Development Techniques)
Taught: 2015, 2024
This course is an introductory course in video game design and creation. We will focus on both the design and technical aspects of creating a game, from concept inception and prototyping through coding and playtesting. There will be a heavy focus on playing games and evaluating them. Students will also create games in the course using game building tools, such as GB Studio.
Course Website: http://f22.cs4720.org - Taught: 2009-2018, 2022
Mobile computing devices have become ubiquitous in our communities. In this course, we focus on the creation of mobile solutions for various modern platforms, including major mobile operating systems. Topics include mobile device architecture, programming languages, software engineering, user interface design, and app distribution.
Taught: 2010-2016
A first course in programming, software development, and computer science. Introduces computing fundamentals and an appreciation for computational thinking. No previous programming experience required.
Taught: 2007-2008, 2011-2013
Introduces the fundamental concepts for design and development of database systems. Emphasizes relational data model and conceptual schema design using ER model, practical issues in commercial database systems, database design using functional dependencies, and other data models. Develops a working relational database for a realistic application.
Course Website: https://www.cs.virginia.edu/~sherriff/cs2110/ - Taught: 2007-2012
A second course in computing with an emphasis on modern software development and principles central to computer science. Topics include software requirements, testing, object-oriented design, abstraction, encapsulation, recursion, and time-complexity.
Other Teaching Experience
Teaching at NC State University (PhD Student)
- CSC 440 - Database Management Systems - Summer 2006
- CSC 440 - Database Management Systems - Summer 2005
- CSC 440 - Database Management Systems - Summer 2004
- CSC 440 - Database Management Systems - Summer 2003
- CSC 326 - Software Engineering - Teaching Assistant for Dr. Laurie Williams - Fall 2005
- CSC 326 - Software Engineering - Teaching Assistant for Dr. Purush Iyer - Spring 2005
- CSC 326 - Software Engineering - Teaching Assistant for Dr. Laurie Williams - Fall 2004
- CSC 326 - Software Engineering - Teaching Assistant for Dr. Laurie Williams - Fall 2002
- NC State Outstanding Teaching Assistant Award - Spring 2005
- Certificate of Accomplishment in Teaching Program Member
- Coursework in EAC 786 - Teaching for College