Jonathan Misurda

Teaching Portfolio

Teaching Portfolio

Teaching Philosophy

Computer Science as a discipline has a dichotomy in its focus. Half of the material is theoretical while the other half is practical application. Because this dichotomy can exist within even a single course, one of the most important jobs for any teacher of Computer Science is to bridge this gap. It is much too easy to lose a practically-oriented student while investigating the technical or mathematical background of a topic. Despite the seemingly huge disparity in the types of learning that these two aspects require, neither the theoretical nor the practical exist in a vacuum. They each drive the other, and it is most satisfying when as a teacher I can help students see the mutual influence, and thus gain a fuller understanding than just knowing either aspect alone.
As an instructor, I see my main purpose as being a resource to help solve problems and emphasize the application of the theoretical, while not losing sight of the higher-level concepts. Problem solving, both in the pedagogical sense, and in the sense of fixing the inevitable bugs associated with computer programming, is a skill that can benefit anyone. I see it as imperative that I not only show where problems may arise and how to prevent them, but also to teach students how to solve them on their own. There is no shortage of problems in Computer Science or in real life. Problem solving when applied to why a car will not start is no different than when applied to why a program will not run correctly. There is a logical process to investigate problems, and the students who internalize this process should succeed better in Computer Science and hopefully in life as well. It is my job to make this process evident and to instill its value and utility.
To ground and unite concepts, my lectures often start with a theoretical description of the new topic or problem to solve, followed by guided class participation attempting to construct a solution. With several solutions proposed, we then examine the tradeoffs that may make a certain approach better than another. These new concepts are put into practice through weekly labs, usually done in recitations. Quizzes, tests, and take-home projects review the learning progress made and serve to tie larger concepts together.
One of the main benefits of being a teacher while still a student is that I remember those aspects of teaching that have been most successful for me. My teaching reflects those teachers who have had the most influence upon my own education, and there seems no better way to reach my own students than to emulate their strengths and combine them with my own personal style.
As a teacher, I represent more than an opportunity to get a good grade. I strive to help all students gain a passion for Computer Science and learning in general, one that I myself have and attempt to demonstrate in both my teaching and my outside projects. There is a wealth of knowledge and understanding to be gained both about computers and life, much of which is to be gained outside of school. If I succeed in inspiring my students, they will learn on their own how to be better Computer Scientists.

Teaching Experience

Teaching Appointments

Instructor, Computer Science Department, University of Pittsburgh:
Teaching Assistant, Computer Science Department, University of Pittsburgh:

Other Teaching

Guest Lecturer:

Reflections on Teaching

During my experience as a graduate student, I have taught four different courses over eight semesters, and have also been a teaching assistant covering a recitation for two more semesters. Most of my experience as an instructor has been for service courses where I am introducing programming to students with little or no Computer Science background.
The majority of my teaching experience comes from two classes: CS 0007 - Introduction to Java Programming (4 sections) and CS 0132 - Programming in C and a Guide to UNIX (2 sections.) CS 0007 is geared towards freshmen who did not take any programming courses in high school. The class begins with a description of computers and how to write algorithms to solve problems. Take-home projects are usually casino games since they are interesting to write and test, and have very definite rules that are easy to express in a programming language. CS 0132 is taken by a variety of students who have had some programming experience before, but need to learn C. They are often adults or graduate students from other departments that need to learn C to do their work and research.
CS 0004 - Introduction to Computer Programming in Visual Basic was a very challenging course to teach. The majority of the students were either taking it to fulfill a graduation requirement for a Quantitative Reasoning class, or were in a technology-related but non-programming field such as Medical Information Management. Those students using it to fulfill a graduation requirement were taking the course in place of algebra, and were generally uncomfortable using math. The course greatly challenged these students, and I often provided extra time in office hours for those students who felt they needed additional help. I am proud of all of my students for successfully rising to the challenge of the final project, writing the game of Minesweeper. Programming Minesweeper required them to demonstrate the same abstract reasoning that they were trying to avoid by not taking algebra.
CS 1590 - Social Implications of Computing Technology was a wonderfully different experience to teach. The class consisted of majors who were generally upperclassmen, and the course's focus was on writing and thinking critically about the ethical issues of computers and the internet. Both the students and I had an interesting and insightful time learning and discussing controversial but important issues like net neutrality and copyrights.

Pedagogical Training and Contributions



New TA Orientation Presentations, University of Pittsburgh Arts & Sciences:
Computer Science Department TA Orientation Presentations, University of Pittsburgh:
Other Contributions, University of Pittsburgh:



Student Opinion of Teaching Survey

Figure 1: Overall Teaching Effectiveness evaluation scores over time.
Overall Teaching Effectiveness (Figure 1) is the student's chance to give a single overarching grade on an instructor's teaching that term. For the most part, my evaluated scores have been consistently improving and above the average. The slight dip that occurs in Spring 2006 is when I taught CS 0004 to a heavily non-major class for the first time. I still feel this was a good example of my teaching ability due to the general apprehension of the class toward anything resembling math. I look forward to being able to take what I learned from this course and apply it to similar ones in the future to see how I improve.
The right graph in Figure 1 shows how I compare statistically to a random sample of other University teachers. Decile breaks the scores into ten equally sized chunks based on score. The median would then be the end of the fifth decile. The stanine breaks the distribution of evaluations for the University into nine unequal chunks based upon a normal distribution. The frequency of high values for each of these measures indicates that I have consistently done better than the average teacher.
Figure 2: (Left) Improvement in CS 0007 over time. (Right) Personal averages for other student-evaluated criteria
Not only do my evaluations generally increase as I have gained more experience, but my evaluations for several sections of the same course also show consistent improvement (Figure 2(Left).)
In addition to overall teaching effectiveness, students are also asked to respond to several other specific aspects of teaching. Figure 2(Right) shows these additional questions and my personal averages. I consistently rank in the upper deciles for these values. One particular standout is my accessibility, which reflects my willingness to meet students in office hours, and respond to their questions via email in a timely fashion.

Student Comments

Sample responses to "What were the instructor's major strengths?"

Example Teaching Materials

The actual documents referred to here can be found in the indicated Appendix at the end of this teaching portfolio.

Syllabus - Appendix A

In all of the pedagogical training I have received, there has been a significant emphasis on the importance of a well-made syllabus. It serves not only to inform the student about what requirements and scheduled topics an instructor forsees for the term but also forms an agreement that protects students and teachers alike should a dispute arise.
The first time teaching a course is often the most difficult time to create a good syllabus. The one I selected here represents the first and only time I taught this particular course, and the overly optimistic schedule of topics would certainly be altered if I have the opportunity to teach this course again. I would also further elaborate on what sort of time expectations the associated out-of-class work carries. This was a point that many students felt anxious about, and something I will commit to paper in the future.
I did, however, emphasize the technological requirements of taking this course. Doing these programs at home required a significant software installation, even though the program itself was available for free to the students. Also, due to the data storage requirements, a USB drive was required, as opposed to something cheaper but much more fragile such as floppy disks. Since this was a small but unexpected cost to the students, I wanted to make sure that this was emphasized early.

Project - Appendix B

Take-home projects represent the bulk of the experience in a programming course. Keeping these projects interesting is a challenge for any teacher of Computer Science. I have learned one good way to encourage students enrolled in a second or later programming course to practice their programming skills is by competing in games. The project that I show here is the game of Mastermind, where one player creates a solution that the opponent must guess given only imprecise feedback.
This type of project emphasizes functions and good software design, because each student will be providing their solution as an encapsulated part of the program rather than having control over the entire project. This results in a need to define a consistent interface, and teaches conditional compilation and Makefiles.
Students enjoy the project immensely, and I am always excited to see the creative solutions that they come up with. One example of a great solution was by a student who realized that the solution was stored in a stack allocated variable, and thus was able to "cheat" by direct manipulation of pointers. This made me as an instructor realize the success that I had in explaining how local variables' lifetime and scope worked.

Final Exam - Appendix C

This represents my first attempt to create a final exam. I drew upon two separate but complimentary sets of guidelines to govern question content and types. The first was Bloom's Taxonomy 1 which attempts to classify the different levels of learning and understanding to allow educators to strive for a more complete treatment of the topic. The other source of guidance was the experiences my friends and I had taking tests throughout our schooling. One of the major points of agreement was that I should vary the question type and not focus on any one style of question more than another. This helps cover different levels of learning as well as to not penalize any student who has difficulty with a particular type of question. The five major types of questions (multiple choice, short answer, code tracing, code writing, and short essay) that I use here have become a framework for subsequent tests that I truly feel works well and provides feedback on student learning that is a good indicator of their understanding.
This test was the third of three exams in the semester, a number that I felt allowed no one test to be too significantly weighted in the class. I found, however, that the first test did not cover enough material for me to find it particularly useful. From this point on in my teaching, I switched to two tests per term, but increased the value of the take-home projects to avoid having tests be worth too much and cause test anxiety.

Appendix A: Syllabus, CS 0004 - Spring 2006

Appendix B: Take-home project, CS 0132 - Fall 2006

Appendix C: Final Exam, CS 0007 - Summer 2004


1 Taxonomy of Educational Objectives: The Classification of Educational Goals; pp. 201-207; B. S. Bloom (Ed.); Susan Fauer Company, Inc. 1956

File translated from TEX by TTH, version 3.77.
On 05 Mar 2007, 13:54.