In this section of the application I discuss my passion for teaching and my responsibilities. I discuss my course load over the years and my philosophy on various topics related to teaching and curriculum. I close with a description of an interactive course evaluation tool that I created, links to my course evaluations, and an analysis of the evaluations.
I accepted the offer to work at Bridgewater College because my occupational passion is teaching. Over the past 5.5 years that passion has grown. When I wake each day I look forward to my students and my work.
One of my primary responsibilities as a professor is to facilitate student learning. This includes designing effective learning strategies, learning current techniques and tools, motivating students, and assessing student knowledge and work ethic. I strive to find new ways to make the knowledge that I want to deliver more accessible to every student in the class. Ideally, I hope to teach each student to learn how to learn - that is, to be curious and persistent, to use their resources, and to experiment.
I also help guide my students toward a career. I speak to them about their goals and dreams, and help them plan and execute a course of action which will make their goals and dreams a reality.
To aid my student's personal growth, I teach them how to respect one another and to value each other's differences and contributions. I contemplate how I can encourage more students to collaborate with their peers and build something that serves someone else. Through these experiences they learn empathy, how to compromise, and countless other skills only learned through teamwork.
I'm also responsible for being a good role model on and off campus. I show respect to everyone around me and I condemn bigotry when it arises. I exhibit enthusiasm for my field and for life. I demonstrate humility when I'm unsure, and I act fairly when assessing others.
Each department initiative, course decision and classroom policy impacts our students and the college. Therefore, each must be deliberate, sound, and just. Below are my thoughts on various issues related to curriculum development, course development, and teaching.
I believe that change is good and is essential for maintaining a relevant program that is valued by students, graduate programs, and employers. Therefore, in 2014 I led a curriculum review of the Computer Science program at Bridgewater College with the goal of creating a curriculum that is nearly 100% compliant with an outside standard, namely the Computer Science curriculum described in the report written by the Association for Computing Machinery (ACM) and Institute for Electrical and Electronics Engineers (IEEE) Joint Task Force on Computing Curricula and titled Computer Science Curricula 2013 -Curriculum Guidelines for Undergraduate Degree Programs in Computer Science (CSC13). As a result of our review, 17 changes to the Computer Science curriculum were recommended in a proposal made to the faculty, and on May 5, 2015 the proposal was approved.
On May 11, 2017, Dr. Verne Leininger, Dr. Daniel Graham, and myself began a review of the computer science program. It has taken us longer than expected, and personnel have changed, but we've recently finished our analysis and have submitted a report to an outside reviewer. In that report we propose a significant change to the Computer Science major. Following in the footsteps of many of our peer institutions, we are planning on offering a computer science major with 3 emphases: Cyber Security, Full Stack Software Development, and Computational Methods. These emphases match the areas of expertise of Dr. Sreekanth Malladi, myself, and Dr. Verne Leininger, respectively and will provide students with instruction specific to 3 distinct career paths. The Cyber Security emphasis will prepare students for work in system and network administration, the Full Stack Software Development emphasis will prepare students for software engineering and development careers, and the Computational Methods emphasis will prepare students for graduate school and research oriented jobs.
At first glance it may seem infeasible to create this program without significant additional resources, but it is not. What we're fundamentally recommending is to eliminate the electives in the major (6 cr. were required) and replace them with courses that are aligned with the emphases. We're recommending removing the courses that are not relevant to any of the emphases with courses that are and that will provide students with relevant skills that employers and graduate programs look for.
I believe it is our responsibility to provide students with training using the tools, languages and techniques that are most used by employers and in graduate programs. This isn't easy. In order to do so we must continuously research what is being used, learn how to use the new technology, decide how to integrate them in the curriculum, and create lesson plans that teach students how to use them. This philosophy isn't held by everyone teaching computer science. For example, when working on our program review Dr. Verne Leininger found a peer institution that is currently teaching COBOL, a programming language developed in 1959. Granted, there are many mainframes in data centers around the world that are running legacy COBOL programs, but there aren't many jobs requiring it. A quick search on Indeed.com for jobs requiring COBOL withing 100 miles of DC yielded 156 jobs. A similar search using Java, the language we teach in our introductory courses, yielded 10,640 jobs.
The field of Computer Science is ever-changing and requires a significant amount of time by instructors to stay current. Without exception, in every class that I have taught, I have learned and presented something new that I had not known the semester before. A few, and only a few (there are so much more), of the technologies that I've learned over the last few years and that I teach to my students include:
One of the primary ways that I teach students how to use language features, tools, techniques, libraries and other technologies is by demonstrating their use. I don't tell them how they theoretically work, I show them how they actually work. I do this for a number of reasons. First, by creating demonstrations I cement my own knowledge and understanding of the technology. Second, I know that my students are going to ask me a plethora of questions, and only by actually having practiced using the technology will I be able to (hopefully) answer them.
When I provide a code demonstration, I make my code available to my students on the internet so that they can view the code and download it if they want. Most of my demonstrations are on my personal website: n0code.net or on my GitHub page. Some of my favorite demonstrations are linked below.
I also share my course notes with my students. They can be found on a private WordPress server that I set up. The notes for each course can also be accessed via each course's web page on n0code.net. These course notes include most of the content, including code examples I've written and tested, that I present in class.
Some of the class notes I've structured the best are linked below:
Some of the course web pages that are most useful to students are linked below:
I understand the pedagogical and philosophical arguments for maintaining a distance between one's self and one's students. The article by Molly Worthen titled U Can't Talk to Ur Professor Like This lays out the case for professors requiring students to display a traditional etiquette. Surely, she has a point when she suggests that we should all require our students to write grammatically correct emails and to be polite. But where I disagree with her and others is how I view my students and how I interact with them.
I hold an egalitarian point of view. I don't create an artificial barrier between my students and myself. It's very important to me to let my students know that I'm just like them, but with a little more experience, knowledge, and possibly wisdom. It's important that they know that the key to being a great computer scientist is to be curious - to want to know why things work as they do, and to be persistent.
I want them to know that I'm in the same boat as them; I'm a computer science student. Even with my degrees, I'm still learning. I want them to know that I know a lot about computing, which I want to share, but I can't possibly know everything. I want them to know that they will stump me and that, when they do, I'll find out the answer or I'll show them how to find the answer.
In Spring 2018, I had an incredible teaching experience. One of my sections of Intermediate Programming had a dozen kids that were incredibly attentive and who had incredibly inquisitive minds. During every lecture throughout the semester, students would ask question after question. It was tiring, yet exhilarating at the same time. I recall one lecture, when 30 minutes into it, I had to insist (to a resounding laughter) that they had to stop asking me questions so I could get through the lesson I intended on presenting that day.
Was I ever stumped? Yes, a lot. A search of my emails with the recipient firstname.lastname@example.org for that class showed I sent 9 emails to the class with answers to the questions that I couldn't answer in class. The subject lines included the following:
I want my students to also have fun and I can facilitate that best when I'm myself - acting a little bit goofy. I want students to view learning as an adventure, to be able to laugh at our mistakes, and to have fun building interesting websites, apps, etc. A quote from a student found in my Fall 2018 course evaluations sums it up best:
This was a wonderful course filled with more information than I could have previously imagined, yet it breezed by without me realizing how much I had learned because of the fun I was having while learning.
While I would characterize my relationship with most of my students as friendly, collegial, and cooperative, I still maintain authority and control over the class. I've been given the responsibility to teach and to assess their performance, and therefore, they must respect the decisions that I make and respect my authority to make them. In the 5.5 years that I have taught at Bridgewater College, I have had only one student openly question my authority. At the climax of our struggle, I respectfully asked the student to accompany me to my Department Chair's office where the Chair politely explained to him my authority. I didn't have a issue with the student from that day on.
My relationship with my students extends outside of lecture as well. They know that I care, that I want to help, and that if they have a problem with their code, even well into the night, I will try to help.
I have created an efficient system to help students and me pass source code back and forth to one another. I wrote a set of programs that when run establishes a set of repositories, one for each student, on GitHub.com. Students and I use these repositories to exchange code. If a student has a bug that they can't find, they push their code to our shared repository and email me. I then pull the code onto my laptop, find the bug and either annotate it so they can fix it, or I fix it myself. I then push the code back to GitHub and email the student. The student then pulls the modified code back onto their computer where they can continue working.
One of my roles as professor is coach, and as a coach, I teach, motivate, critique, correct and complement. I try to help students reach their peak performance. For some students, that means helping them over some of the hurdles.
I encourage students to ask me for help, especially if they've run into a bug and can't find it after 20 minutes, or so, of searching. I honestly love to help students debug. To me, debugging is a puzzle-solving exercise and I love puzzles.
I have spoken to some faculty who refuse to help students debug code. I believe that philosophy is detrimental to student success. Here's why. Consider the following simplistic scenario. Suppose a homework assignment, for an average student, is expected to take 4 hours to complete. And suppose during those 4 hours the student is expected to encounter 4 different challenges that require the student to use 4 different techniques to overcome them. Now suppose a student runs into a bug after attempting to overcome the first challenge and they're not given any assistance from faculty. What are their choices?
If the student works independently, they may spend hours trying to find the bug. This experience, regardless if they eventually find the bug or not, will discourage them. More importantly, they may not have time to finish the assignment - that is, they may not encounter and resolve some of the other challenges inherent to the problem. If a student finds a peer to help them, then they're likely to view the peer's source code giving them an entire solution to the problem, thus again, limiting the value of the entire endeavour. If I help a student, I can limit the assistance that I give the student, I can identify technical and conceptual misunderstandings that the student may have and scaffold instruction to correct them, and I can demonstrate proper debugging techniques.
I believe it's important for students to learn the value of being persistent, but I also understand human nature. And if we want students to gain knowledge from an experience that can be lengthy and contain multiple hurdles, we should help them over the hurdles after a reasonable amount of time so they can continue in the race and ultimately finish, experiencing the rush of "crossing the finish line."
I often use assignments, quizzes and exams as assessment tools to determine each student's knowledge and understanding of a particular topic and their ability to solve problems independently. If multiple students work together on these assessment tools, then a grade for that work says nothing about the abilities of the individuals, but rather what the group can accomplish (in the best case) or what the more able students can accomplish (in the worst case). It is therefore my policy that if an assessment tool is to be used to determine an individual student's knowledge of a particular topic and/or their ability to solve problems independently, then the students being assessed are not allowed to get help from other students when working on the assignment, quiz or exam.
Student collaboration when studying and when working on projects is, however, strongly encouraged. A large portion of a student's life is spent outside of class and it is there that students should deliberately engage and learn from each other.
I regularly encourage students to create or join study groups. Recently, however, I found that more than just encouragement is needed. In Spring 2018, I taught 2 sections of CSCI-200 Intermediate Programming. After grading the first exam, I found the students in the first section performed significantly worse than the students in the second section. Believing study groups would help their performance, during the next few classes I reiterated the benefits of joining study groups and encouraged them to do so. About a month later, before the next exam, I asked to see a show of hand of those in a study group. Not one student raised their hand. I then asked to see the hands of those who were interested in joining a study group. About 75% of the students raised their hands. I was amazed. Our students want to succeed and know how to succeed, but many are just shy, have low confidence, or are intimidated. I now actively help students form and join study groups by acting as a match-maker.
I also believe that students who have experiences working in groups on meaningful projects are better prepared for graduate school and the workforce. With this in mind, I often use group projects with active learning components in my courses to encourage peer-to-peer learning and to help students develop interpersonal skills. With these same goals in mind, as mentioned elsewhere in this application, I also encourage students to collaborate with their peers on meaningful projects. They can include these on their resumes, which will help to set them apart from other students with similar degrees.
Attendance is required in all of my courses and I record attendance on paper at the beginning of (nearly) every class. My policy is simple: a student may miss 100 minutes of class time per course without the possibility of a grade reduction and students are excused for emergencies and college events. A student has perfect attendance if they have no unexcused absences and are never late to class.
This policy, coupled with my final grade policy as outlined in my discussions on supporting the college mission, help me maintain nearly 100% attendance in my classes.
I believe that one of the easiest things that we can do as an institution to increase the retention rate of our undergraduate students is to universally require faculty who teach 100 and 200 level courses to encourage our extrinsically motivated students to come to class by establishing an attendance policy that rewards students who come to class regularly and penalizes those that do not.
I understand that I have students who are independent learners and who have a passion for learning that is equal to mine. They love to experiment and are skilled at finding out answers using the resources available to them and therefore do not need an attendance policy. But, I must be consistent - and some of my students need an an attendance policy to motivate them to come to class on a regular basis.
To view a matrix showing the courses that I have taught in each semester, please visit my teaching load web page.
Over the past 5.5 years, during the fall and spring semesters, I've taught 21 distinct courses, a total of 138 credit hours, averaging to about 25 credit hours per academic year. In addition, I've taught 9 summer courses, 23 Independent Study courses, and 1 Research course.
Syllabi for my courses can be found here.
A course evaluation visualization tool (shown above) is accessible from the Table of Contents and by clicking on the image above. I created the tool so that I could visualize my course evaluation scores. With the tool we can see the statistical means, trends, my strengths, and areas in which I can grow.
Here are some tips for using the tool.
Over the past 5 years I have been very attentive to the information that students provide in my course evaluations. Below I provide links to annual reports that I wrote which include reflections on my course evaluations. I also discuss 2 learning opportunities that are mentioned in those reports.
Each year I've taken the time to analyze the scores and comments, summarize them, and develop improvement plans for each course. The improvement plans address things such as teaching style, content, and assignments. I submitted these reports as part of my Faculty Activity Reports and (below) provided links to them for your review.
As you can see from the image above, during my first semester here there was a severe disconnect between my students and me. I think the major challenge that both my students and I had was that our expectations were not aligned.
This disconnect was most evident in CSCI-320 Algorithm Analysis. When preparing my lectures and assignments, I recall thinking about how my professor, Tino Tamon at Clarkson University, taught me. He has an incredible mind and would walk us through proofs showing the correctness and the completeness of this and that algorithm. What I had forgotten is that most of the students in his class were graduate students.
Compounding this problem was the fact that the students were ill-prepared for an undergraduate course on algorithms. Unfortunately, the professor whom I replaced had shirked his responsibilities when teaching the prerequisite course on discrete mathematics, leaving the students with no foundation on which to build.
As you can imagine, the scores on the first exam were not good and the students were unhappy. Spokespeople for the class protested to the chair of the department and I had a sit-down with him too. He reminded me that if the students were not prepared then it was my job to assess their current knowledge, fill in the gaps, and build from there. Thank you Lee.
For the remainder of the semester I'd ask questions to check for background knowledge and if necessary cover the discrete math concepts before moving on to the actual algorithm content.
Students were also not used to the amount of homework that I assigned. I never lessened my expectations in this area. They need to practice and experiment to learn how to program. It just took my students a little time to get acclimated to these expectations.
You'll notice that my evaluation scores didn't gradually increase, they skyrocketed the next semester. I knew my students a little better and they knew my expectations. They knew that I cared and I knew that they needed a little more support.
Another sequence of events from which I learned a valuable lesson involved a student who repeatedly showed himself to be dishonest. The revelation began in the Fall of 2016.
These incidences have given me pause. If I had reported C to the Honor Council when I found out that he had copied A's work in the library, perhaps none of the other events would have happened. It's impossible to say, of course, but one thing is certain; he would have gotten away with cheating one less time.
Following these events, I've established a policy in my syllabus that states that if I suspect a student of cheating I will report them to the Honor Council. Since then I have reported five students to the Honor Council; two were found guilty, and I see a lot less code that appears like someone else's.
When using the course evaluation visualization tool with the lowest granularity you can see that 14 of the 21 statements have a 5 year mean of 4.0 or higher, 6 statements have a 5 year mean of 3.8 or 3.9, and 1 has a 5 year mean of 3.7.
The 6 statements that averaged 3.8 or 3.9 are given below. If you click on one of the statements below a page will load showing you the individual class scores for that statement.
I don't have difficulty grading exams in a timely manner. It is usually the programming assignments that I have trouble grading quickly. In mathematics courses which require a similar amount of practice, the instructor usually selects a few problems from the problem set to grade. With programs, you have to grade the entire program, which requires testing the code on multiple sets of data and inspecting the code as if you were grading an essay.
I found a great online solution for automating the grading of programming assignments called Kattis.com. Kattis is a web site that is used for the Association for Computing Machinery (ACM) annual student programming contest to judge contestant's code. Faculty can also use the system for programming courses. I used it when I taught CSCI-105 Introduction to Programming. It was a tremendous help for both me and my students and was reflected in the course evaluations; the statement that reads The instructor returned assignments within a reasonable time frame. had a mean score of 4.6. The website allows faculty members to publish sets of problems and solutions. Students use the website to view the problems. Then on their computers, they write software to solve the problems. When they think they have a correct solution they submit their code to Kattis which checks the solutions for correctness. The check is done immediately and students get feedback within seconds. Next summer I intend on creating a set of Kattis compatible problems for my CSCI-200 course.
In a few courses, like CSCI-300 Mobile Application Development, I have created forms that I print when grading student work. This gives me something to write feedback on and hand back to the student when the deliverable is digital. I intend on creating similar forms for other classes in which students submit their work digitally on a website or via gitHub.
I've addressed the issue of pacing by reducing the content that is covered in some of my courses, but I need to continue doing this in other courses. I've pared down the content in CSCI-200 Intermediate Programming to cover only the most important aspects of the Java language and intend on reducing the content a bit more this semester to allow more time for the last topic: streams.
You can see from the tool that the scores were lowest in the spring semesters, and in particular, in the following classes:
I've been told that I have more written comments than on average. This is because before administering a course evaluation I tell my students something like the following:
The course evaluations that you're about to fill out are primarily for me. Others, like my department chair, will review them, but they're primarily for me. And though the scores for the statements do inform me, the written comments that you make are what I use to change my syllabus, course content, and teaching style.
They respond with wonderful comments. Some are rants, but most are honest constructive comments. As a whole, the comments back up the conclusions reached in the quantitative analysis. Namely, I need to be mindful of the time that it takes to return assignments, I need to provide better feedback for work that is submitted digitally, and I need to keep the pace at which I introduce new material in mind.
Some of the other comments include how to better structure the course, and what content they would have appreciated seeing. For example, one student wrote:
Please, please please don't make the next class learn Blender in two weeks. Switching to an entirely different system and then having to figure out how to export and import took a toll on my sanity this semester. Maybe do a basic Blender scene early on in the term to expose the students to it before launching into donuts. It felt like we had to play catch-up just to get it to work.
and another student wrote:
Finally, the best comments of all are those that remind me that what I do makes a difference.
Lectures and office hours tutoring. You are the best CS professor I have ever had here at BC. No professor has ever helped me outside of class or took the time to help me.
This is the first course where I have felt engaged in EVERY lecture given.
I went from struggling in intro to programming to feeling great about the material and loving to learn new things everyday I came to class.
I really appreciate the instructors respect for students. He treats us as colleagues which is refreshing while in college. He understands that students have a lot on their plates and will adjust due dates as needed.
Best professor I have had yet, he truly cared if you got it and would put in endless effort to help if you showed effort too, cares about you and wants you to achieve great things, this class made me fall in love with my major and made me feel better about my future after college.
I'm embarrassed to admit it, but back when I started at Bridgewater College I didn't know what the word pedagogy meant. I hadn't ever heard of the terms active learning, scaffolding, and assessment validity. Over the years I've learned the importance of these things and have tried to develop my pedagogy by soliciting advice from my peers, sitting in on their classes, attending seminars and workshops, and reflecting on my teaching style and practices.
Some of the faculty whose classes I've sat in on are Dr. Nan Covert, Dr. Melissa Hoover, and Dr. Robyn Puffenbarger and I've had the honor of having Dr. Philip Spickler, Dr. Melissa Hoover, Dr. Robyn Puffenbarger, Dr. Deva O'Neil, and Dr. Verne Leininger sit in on mine. After each of their visits, we sat and talked about our approaches to teaching and shared with each other what we thought worked well.
In the summer of 2014, I attended a summer pedagogy workshop here at Bridgewater College on the topic of "Flipped Classrooms." The workshop was educational and helped me design components of the CIS-325 Data Communications course that I taught in the spring of 2016. My initial approach of requiring reading before class and administering an entry quiz worked for the first few weeks, but then stopped working - partly because I was inconsistent in administering the entry quizzes. If there was a possibility that there wasn't going to be a quiz, the students were willing to take a chance and not read. Midway through the semester I stopped asking them to read before class and began creating guided reading worksheets that they began working on during class and continued to work on as homework. This approach was much more successful.
As discussed in the Helping to Motivate Students section of this report, out of concern for a few of my students that I've observed sitting disengaged in the back of the room, I attended the recent Working Lunch Lecture titled "Developing Student Metacognition." The speakers were very insightful and helped me understand that one of the students that I'm concerned about is probably experiencing a lack of confidence and a sense of being defeated, and the other may simply not care about the subject matter. These feelings are being addressed in the design of assignments, by providing encouragement, and by describing the connections between the learning objectives and their career goals.
Last, I've recently accepted a position on the ACM Special Interest Group on Computer Science Education (SIGCSE) 2019 Program Committee as a reviewer. The conference is the largest computing education conference worldwide and serves to
provide a global forum for educators to discuss research and practice related to the learning, and teaching of computing, the development, implementation, and evaluation of computing programs, curricula, and courses
I'm looking forward to attending the conference in February 2019 to learn alternative techniques to teaching computer science material and see how other institutions are developing curriculum to meet the needs of their students.