Teaching
Teaching Awards
- Alumni Distinguished Undergraduate Professor, 2018
- Alumni Association Outstanding Teacher Award, 2015
- Outstanding Teacher Award, 2015, with membership in the Academy of Outstanding Teachers
- The Carol Miller Undergraduate Lecturer Award, 2013-2014
- Most Receptive Undergraduate Professor Outside the Classroom Award, 2012-2013
- Most Receptive Professor Outside the Classroom Award, 2010-2011
Teaching Statement
Courses
Undergraduate Courses
I regularly teach five of the ten core undergraduate courses in the areas of Programming Languages and Software Engineering. The syllabi for the courses are linked in below.
- CSC116: Introduction to Programming - Java
- CSC216: Programming Concepts - Java
- CSC230: C and Software Tools
- CSC326: Software Engineering
- CSC492: Senior Design
CSC116 | CSC216 | CSC230 | CSC326 | CSC492 | |
---|---|---|---|---|---|
Spring 2018 | Section 001 Section 002 |
Section 002 | |||
Fall 2017 | Section 001 | Section 001 | Section 002 | ||
Spring 2017 | Section 001 | Section 002 | |||
Fall 2016 | Section 001 Section 002 |
Section 002 | |||
Spring 2016 | Section 001 | Section 002 | Section 001 | ||
Fall 2015 | Section 001 | Section 001 | Section 002 | ||
Spring 2015 | Section 005 | Section 002 Section 601 |
Section 001 | ||
Fall 2014 | Section 001 Section 002 |
Section 601 | Section 001 | ||
Summer 2014 | Section 651 | ||||
Spring 2014 | Section 001 Section 002 [Peddycord] Section 601 |
Section 001 | |||
Fall 2013 | Section 001 | Section 001 Section 601 |
Section 001 | ||
Spring 2013 | Section 001 | Section 002 | Section 001 Section 002 [Fiala] Section 601 |
||
Fall 2012 | Section 001 Section 002 |
Section 001 Section 601 |
|||
Summer 2012 | Section 051 Section 651 |
||||
Spring 2012 | Section 004 | Section 001 | Section 001 | ||
Fall 2011 | Section 003 | Section 001 | Section 001 | ||
Spring 2011 | Section 004 | Section 001 | Section 001 | ||
Summer 2010 | Section 051 | ||||
Spring 2010 | Section 005 Section 006 |
Section 001 | |||
Fall 2009 | Section 002 Section 003 |
||||
Spring 2005 | Section 002 |
Undergraduate TA Training Course
- CSC295-002: TA Training - Fall 2016 [co-taught with Ms. ToniAnn Marini]
- CSC295-002: TA Training - Fall 2017 [co-taught with Ms. ToniAnn Marini]
Graduate Courses
- CSC801-006: Seminar on Teaching and Learning in Computer Science with Dr. Tiffany Barnes - Fall 2014
- CSC801-004: Seminar with Dr. Rudra Dutta - Spring 2012
- CSC885: Doctoral Supervised Teaching - Fall 2012 & Fall 2013
Summer Camps
- 2011 CSC High School Summer Camp
- 2012 CSC High School Summer Camp
- 2014 CSC High School Summer Camp
- 2015 CSC High School Summer Camp
Course Materials
CPATHII: Communication across the Curriculum Assignments
I developed several assignments that incorporate communication learning outcomes.
Testing Materials for CSC116 and CSC216
The testing packet provides an introduction to black box acceptance testing and white box unit testing in Java. The white box testing setup emulates JUnit, but does not require that students work with the JUnit libraries for unit testing.
Reading
Presentations
Sample Code
CSC216 Course Materials (Fall 2016 and later)
In Fall 2016, a new lab component was added to CSC216. A suite of materials are under development to supplement the existing course materials and to provide guided projects and lab activities. [Note: Currently requires NCSU id to access.]
CSC216 Tutorials (Spring 2016 and earlier)
Students are introduced to several software engineering tools during CSC216. The tutorials provide an introduction to using Eclipse, the Eclipse debugger, and unit testing with JUnit.
Tutorial Title | Tutorial Authors | Tutorial Overview |
---|---|---|
CSC216 Eclipse Development Environment Setup (Last Updated: 7/8/2013) |
Sarah Heckman Jo Perry |
Instructions for downloading and installing Eclipse and plug-ins required for CSC216. |
Getting Started with Eclipse for Beginning Programmers (Last Updated: 1/7/2013) |
Sarah Heckman Ed Gehringer Andy Meneely |
Introduces the Eclipse Integrated Development Environment and incorporates an exercise that reviews basic object-oriented programming concepts. |
Using the Eclipse Debugger for Beginning Programmers (Last Updated: 1/8/2013) |
Sarah Heckman Ed Gehringer Andy Meneely |
Introduces the Eclipse Debugger and incorporates an exercises where students find bugs seeded in a small object-oriented programming project. |
Unit Testing in Eclipse Using JUnit for Beginners (Last Updated: 1/9/2013) |
Sarah Heckman Jo Perry Ed Gehringer |
Introduces the JUnit unit testing library and incorporates an exercise where students must unit test a small object-oriented programming project with seeded bugs. Students learn how to use Web-CAT for automated grading. |
Getting Started with Eclipse for Beginning OO Programmers |
Sarah Heckman Jo Perry Jason King Ed Gehringer Andy Meneely |
Introduces the Eclipse Integrated Development Environment with an exercise that reviews advanced object-oriented programming concepts including abstract classes and interfaces. |
Unit Testing in Eclipse Using JUnit for Beginner OO Programmers (Last Updated: 9/1/2015) |
Sarah Heckman Jo Perry Jason King Ed Gehringer |
Introduces the JUnit unit testing library and incorporates an exercise where students must unit test a new module of a small advanced OO project. |
CSC216 Basics of Jenkins Guide (Last Updated: 8/11/2014) |
Jason King Sarah Heckman |
Introduces Jenkins and how to interpret the Jenkins results. |
CSC326 Tutorials
I helped develop many tutorials as reference for software engineering tools used in CSC326.
Tutorial Title | Tutorial Overview |
---|---|
Getting Started with Eclipse 3.1 Getting Started with Eclipse 3.5 |
In this tutorial, you will learn the basic concepts of using Eclipse v3.1. You will know how to:
|
Installing Plug-ins in the Eclipse 3.1 Environment Installing Plug-ins in the Eclipse 3.5 Environment |
Learn how to install plug-ins in Eclipse. |
Javadoc Updated: 2011/08/13 |
In this tutorial, you will learn how to use Eclipse's built in Javadoc assistant to generate Javadoc HTML files. |
Acceptance Testing Using FIT Updated: 2011/08/13 |
In this tutorial, you will use FitRunner, an Eclipse plug-in, to create acceptance testing using the FIT framework. |
HttpUnit for Black Box Testing Updated: 2013/08/27 |
HttpUnit is a Java-based API for interacting with websites. Acting like a browser, HttpUnit can automate complex test cases as if a user was clicking through your website. |
jUnit for Eclipse 3.5 Updated: 2011/08/13 |
jUnit runs white-box unit test cases in Eclipse |
Test Coverage with EclEmma Updated: 2011/08/13 |
This tutorial shows you how to gather line coverage for your unit tests with EclEmma, an Eclipse plugin. |
Test Coverage with djUnit Updated: 2011/08/13 |
This tutorial shows you how to gather line coverage for your JUnit tests with djUnit, an Eclipse plugin. |
Using Subclipse for Configuration Management Updated: 2011/08/13 |
This tutorial shows you how to use the configuration management Eclipse plug-in, Subclipse. |
Using Subversive for Configuration Management Updated: 2011/08/13 |
This tutorial shows you how to use the configuration management Eclipse plug-in, Subversive. |
FindBugs Static Analyzer Updated: 2012/02/24 |
FindBugs is a static analysis tool that runs in the background when developing code. FindBugs uses bug patterns to find potential vulnerabilities in your source code. |
JDBC: Java Database Connectivity Updated: 2013/08/27 |
Learn how to interact with databases using Java. |
JSP: JavaServer Pages Updated: 2013/08/27 |
JSP is the Java technology used to create dynamic web sites. |
Object-Oriented Metrics Updated: 2011/08/13 |
In this tutorial, you will use metrics, an Eclipse plugin, to calculate metrics on your code. |
Writing Web-based Applications in Eclipse Updated: 2011/08/13 |
Learn how to setup your home machine for use with a webapp using Eclipse, Tomcat, Sysdeo, and mySQL. |
GERT Updated: 2011/08/13 |
GERT is an Eclipse plug-in that is used to provide reliability estimations and feedback on the quality of test coverage in an application. |