I am passionate about computer science education and CSEd research. I believe that we, as educators, should prepare our students to face the challenges of the future. This means not only an educations on the practices and tools they will need, but critical thinking, reflecting, and the ability to self teach.


Teaching Portfolio

This purpose of this teaching portfolio is to communicate my teaching teaching philosophy, how that philosophy has borne out in my teaching experiences, and how my professional development and research experiences have shaped my teaching philosophy.  My primary source of teaching experience has been as a teaching assistant and lab instructor for the undergraduate software engineering course at North Carolina State University.  Since my time as a teaching assistant, I have attended numerous professional development activities, including workshops for the Certificate of Accomplishment in Teaching Program at NCSU, and conducted research on computer science education.

Courses and Evaluations

SemesterInstructor# students*Evaluation
Spring 2012Lucas Layman and Madeline Diep20PDF
Spring 2011Lucas Layman and Madeline Diep16N/A
Spring 2010Lucas Layman and Madeline Diep11N/A

Description: This course focuses on the theoretical and practical aspects of the requirements engineering process. Students will be introduced to the fundamental concepts related to requirements. This includes understanding various requirements types, risks and impact in the requirements process, how requirements evolve, and techniques for eliciting, analyzing, evaluating, managing, and writing requirements.
Class setting: One 160-minute lecture in a distance learning classroom with students present in class and at remote locations. Lectures were recorded.
Required or elective? Elective

Personal responsibilities

  • Along with course co-instructor, developed course syllabus, all lecture materials, homework assignments, midterm and final exam, and semester project.
  • Responsible for online student support, grading, and dispute.
  • Taught half of the lecture sessions and administered exams.
SemesterInstructor# students*# lab sections coveredEvaluations
Spring 2006Dr. Matthias Stallmann652TA #1
Spring 2005Dr. Purush Iyer631TA #2
Fall 2004Dr. Laurie Williams701TA #2
Fall 2003Dr. Laurie Williams1101N/A

Description: Application of product engineering methods to software: quality assurance, project management, requirements analysis, specifications, design, development, testing, production and maintenance.
Class setting: Two 50-minute lectures in a large lecture hall, one 2-hour closed lab each week.
Required or elective? Required

Personal responsibilities

  • Conducted two-hour lab sessions with 20-30 students each week. Lab sessions included reviewing lecture material, clarifying student questions regarding general course material and assisting students with hands-on programming activities. Also assisted in the creation of lab materials.
  • Created requirements and oversaw the administration of the four-week end-of-semester group project. Responsibilities included clarifying requirements, responding to student inquiries, creating a grading rubric, and grading the project. Served as a project manager that interfaced with an external customer hen the group project had an external sponsor (such as a when the project would ultimately be used by another department at NCSU).
  • Along with the other teaching assistants, create and grade four programming assignments (of 2-3 weeks in duration) to be started in the lab and completed outside as homework.
  • Assisted in creating, proofing, and grading midterm and final exams.
  • Taught one or more lecture sessions each semester.

Level of faculty supervision: During the Fall 2003 and 2004 semesters, the TAs worked closely with the instructor to create lab assignments and the course project. During the Spring 2005 and Spring 2006 semester, the other TA and myself worked almost entirely unsupervised to create the homework assignments, group project and lab instruction as the instructors had never before taught the software engineering course.

Artifacts of Teaching

This section includes several artifacts from my teaching experiences. The artifacts are accompanied by reflections on whether these artifacts met my teaching goals in the course.

Context: This is the course syllabus for the Spring 2011 semester of ENPM 612 that I co-taught at the University of Maryland, College Park. The course involved 17, 2.5 hour sessions, a midterm and final exam, and several homework assignments that contributed to the semester-long course project. The course was taught in a distance-learning classroom to a mixture of primarily in-person students and students at remote locations. Lectures were recorded. The course was attended by 16 full- and part-time master’s students.

Artifact: Course syllabus

Reflection: In general, I believe that the course syllabus served its purpose. My co-instructor and I refined this syllabus from the previous semester. Our main lessons learned were to be clear and concise with respect to what is allowed and not allowed, and what the course expectations were. This latter point was particularly important for our part-time students, all of whom had full-time jobs and thus could not attend every lecture in person (instead they viewed the course recordings) but were expected to deliver assignments on the same schedule as other students. I believe that allowing collaboration was important for this class, and helped the part-time students to stay engaged and not fall behind when they could not attend class for reasons beyond their control.

Context: The grading rubric is for a homework assignment in the undergraduate software engineering course. The assignment was done in pairs over the course of three weeks, and was the second homework assignment completed by the students. The students were to create the user interface (UI) and logic layers for a web application where a user could create different types of accounts for a knowledge managements system. The purpose of the assignment was to give students hands-on experience with software design and software design patterns – topics that had been covered in both lecture and lab. The assignment had two deadlines. The first was to deliver a UML class diagram of their proposed solution as well as a test plan. The second involved delivery of the program code and passing test cases. The correct implementation of the assignment required students to use the Factory pattern.

Artifact: Grading rubric document

Reflection: Grading rubric reflection paper

Context: The Hoffman Forest Project was the final group project in the undergraduate software engineering course in Spring 2006. The students were grouped into teams of 4-5 and had six weeks to complete the project. The project was the final deliverable at the end of the semester. Students worked on the project during the two-hour lab sessions each week and met outside of class. Deliverables for the project were broken up into four iterations, during which the students had to demonstrate their progress to the TA during lab sessions and received a grade based on their progress. The total project grade was a combination of the individual iteration scores and the functionality of the final deliverable. Additionally, each of the homework assignments completed earlier in the semester was directly integrated into the final project, thus, the students had some prior experience with the domain and the application itself before undertaking the group project.

The project itself was a web application to assist in managing data collected from the Hoffman Forest, a state forest overseen by the Department of Forestry at NCSU. The project was sponsored by the Department of Forestry and the requirements (the desired functionality for the project) came directly from department faculty. The purpose of the application was to enable forestry staff to record scientific data from samples taken in the Hoffman forest through a web interface, and then allow visitors to the website (students, faculty, staff from other institutions) to search through this data. The best project from among the the student projects was then used by the Department of Forestry for collecting and dispersing the data. Our primary goal in selecting this project was to increase student interest in the project and in the discipline as a whole by concretely demonstrating that software could be used for socially-responsible purposes, and to give the students a chance to participate in this type of project firsthand. Additionally, this project exposed students to salient challenges common in the software industry, such as web application development, security and changing customer requirements.

Artifact: Project website snapshot, including project description, requirements and test cases (note: website snapshot contains broken links and ancient HTML/CSS)

Reflection: Project reflection paper

Context: The following are summaries of the teaching evaluations submitted by students at the end of the Fall 2004, Spring 2005, and Spring 2006 semesters where I was a teaching assistant for the undergraduate software engineering course at NCSU. An example of the evaluation form is also provided. Much of my reflection on these evaluations is based on the comments left by students in the optional free-form response questions. The evaluations were returned anonymously by the students.


Reflection: Teaching evaluations reflection paper

Professional Development Activities

This section summarizes the teaching and education professional development activities in which I have participated.

In 2009, I completed N.C. State’s Certificate of Accomplishment in Teaching program, which “offers graduate students a chance to demonstrate their commitment to teaching excellence through training, evaluation, and recognition.” This section lists the workshops I attended under the CoAT program and provides the accompanying workshop reflections.

  • Did you teach your dog, Spot, how to whistle? A brief exploration of teaching and learning styles. This workshop provided an introduction to the Felder-Silverman learning styles (Active-Reflective, Sensing-Intuitive, Visual-Verbal and Sequential-Global) and described how these styles represent the different means by which people acquire, process, and relate information. (Reflection paper)
  • Accommodating non-traditional students in the classroom. A non-traditional student is one who is over 25, supports a family, or has a full-time job and is attending school part time. The workshop highlighted statistics regarding the rise in the number of non-traditional students, specific challenges these students face, needs they have, and strategies for accommodating those needs. (Reflection paper)
  • Engaging students with effective questioning. This workshop focused on the different types of questions that can be asked (e.g. open-ended vs. closed-ended) and the different scenarios in which they can be used to improve the effectiveness of student-teacher dialogue. (Reflection paper)
  • Using active learning strategies in teaching large classes. This workshop discussed strategies for overcoming the limitations of using active learning strategies in large classroom with a high number of students, an immovable classroom setup, and/or persons distributed about the classroom. (Reflection paper)
  • Advising as teaching. This workshop provided insights and concrete takeaways on effective organizational and pedagogical strategies for advising students outside the classroom. (Reflection paper)
  • Classroom assessment techniques.  Introduced classroom assessment techniques to help instructors understand what material the students have learned, but more importantly to help the students measure their own progress and encourage them to think critically on whether they are learning or not. (Reflection paper)

I have been fortunate enough to attend several academic conferences focused on education in computer science and software engineering, including the SIGCSE Technical Symposium, FIE, CSEE&T and the educator’s track at ICSE and the Agile Development Conferece.  I have presented research at many of these conferences, assisted in organizing the 2006 Conference on Software Engineering Education and Training, and served as a SIGCSE reviewer for many years.