Home Teaching Teaching Statement

Teaching Statement

Teaching Experience and Methodology

I have been a teaching assistant in a project-based undergraduate course on Software Engineering, a senior capstone undergraduate course on Software Engineering and a graduate course on Teaching and Research Methods. My teaching experience spans over a period of 4 years. In all three courses, my responsibilities generally involved lab and class lectures, project and student mentoring, preparation of lecture material and assignments and marking among others.

The more basic undergraduate course on Software Engineering focuses on the fundamentals of the discipline, including design, implementation, documentation and collaboration. The basic component of the course is the term project, whose topic is common for all the students. Students are divided in teams of 4 and each team is assigned a TA, who acts as a mentor and a client. I was a TA for this course for 5 terms and my responsibilities included mentoring 3-4 teams and giving lectures in the lab sections of the course. As a mentor, it was my preference to meet with my teams at least once a week, where we discussed their progress, their problems and questions and often times we would brainstorm over the project. My dedication provided an extra motive to my students and engaged them even more to the project. Eventually, most of my teams, if not all, performed exceptionally well and were among the top teams in each term of the course. An example of such a performance occurred in the term of Winter 2010. The course project for that term was commissioned by the City Edmonton, who asked the students to build a travel guide and scheduling application. The students were promised a monetary award for the best application. Eventually, one of the four teams I mentored received the award and two more received honorable mentions.

The more advanced version of the undergraduate course focuses on requirements engineering, release planning and communication with the client. For this course my responsibilities were to mentor and guide the teams as a project manager. Similar to the previous course, the main component here is the term project. However, in this case, the term project is different for each team and comes as a request from an actual external client, academic or industrial. Our students have developed projects for various faculty members from different departments at the University of Alberta, the City of Edmonton and the Edmonton Public Libraries among others. The students are encouraged to use any technologies they prefer as agreed between them, the TA and the clients. In numerous occasions, the performance of the students would be so exceptional that the client would ask the team or certain members to continue working with them on the project or on other projects as it happened with the Edmonton Public Libraries.

The graduate course is a mandatory course to all new graduate students in the Department of Computing Science at the University of Alberta and introduces techniques and methods on teaching and research. As a TA, my responsibilities included assisting in the creation of the lecture material and the assignments, marking the assignments and giving feedback to students. Occasionally, I would deliver a lecture, either replacing the main instructor or because I had extended experience on the subject, for example on “Preparing and Delivering Presentations”. For the excellence of my teaching in this course, I received an award from the Faculty of Science in 2012. For this award, the Dean asks the Departments to nominate graduate students that have proved their competence, responsibility and efficiency in teaching and mentoring students. The Faculty then consults the instructors and student evaluations to evaluate the candidates. For that year, the award was given to 15 graduate students from seven Departments within the Faculty. Furthermore, in the context of this course, the department hosts a TA workshop for new TAs. More than once I have been asked to participate in this workshop as a mentor and share with new graduate students my experience and discuss challenging situations when teaching.

As a lecturer, my philosophy is to rely on examples and practice. Therefore, for courses with a lab section, I would always show a simple example to the students on the concept I am teaching and then give them a more complex scenario as an exercise in the lab. Since I have been responsible for organizing the labs I have often taken the initiative of creating my own material especially for the subjects closely related to my research like refactoring and software design. An example of such initiative is the Design Pattern lecture I devised for the Software Engineering course. The lecture employs a game-show-like attitude to teach students about object-oriented design patterns. I would give the students a set of design challenges and ask them to come up with design solutions in the form of UML class diagrams without actually telling them that the solution should contain any specific design patterns.  The students would come up with solutions as teams and write them on the board. Later, we would all discuss the solutions and try to come up with the name for the pattern if they recognized one. This exercise showed them that a design pattern can in most times come naturally as a solution and that in many occasions a design problem can be solved correctly with more than one design patterns. The students recognized the merit of the exercise, which helped them understand the concept. More specifically, since this particular lecture happens to fall just before midterms, they claimed it helped them considerably to study for their exams.

My teaching and presentation skills were always recognized and appreciated by the various instructors in the aforementioned courses. For this reason, I was asked in more than one occasion to replace them in delivering a lecture when they were incapable. The students were always appreciative of my teaching and they would tell so to the instructors. Apart from my official appointments, I also acted as an unofficial TA for the graduate courses of my PhD supervisor, Dr Eleni Stroulia. The courses’ subjects were mostly around web services and web technologies, which is the topic of my research. Therefore, I was asked to deliver certain lectures on topics like service evolution and software engineering economics, on which I have gained expertise through my research. I have also given tutorials on tools and technologies for developing web service systems.

Course Design Teaching Plans

Given my experience, my presentation skills and my teaching methodologies, I feel confident to teach any computer science course at an undergraduate level. As a teaching assistant, I have more experience with project-based courses, where students learnt the theoretical concepts through a practical way and had to deal with all the opportunities and challenges that a software project and teamwork have to offer. I came to appreciate this way of learning and it has greatly influenced my teaching philosophy, which I will implement as an instructor.

At a graduate level, my intention is to create a series of advanced software engineering courses, which will focus on modern software development paradigms and architectures like service systems, mobile and cloud computing. Apart from the technical consideration of these settings, I want to imbue the courses with other perspectives, more specifically, software engineering economics, team software development and organization, project management and strategic decision-making. This may be large material to cover in one course, but I intend to offer different versions of the course, focusing on different aspects in each one of them. For example, in one rendition of the course, the students will be introduced to a specific software architectural style and they will be asked to develop an application based on this architecture in a small team. This way they will also be introduced to topics like team organization, collaborative software development, the social and human aspects of software development and the communication between software developers. In a different version, the students will be asked to further develop, maintain and change existing applications, for instance, past course projects. The students will be asked to take into consideration the economics of the project in terms of development and operational costs (developer salaries, evolution and adaptation costs, purchasing third-party software or investing in infrastructures). Finally, the students will be asked to make decisions around the development and maintenance of their software on how to best satisfy the software’s requirements at the lowest possible cost.

The first goal of the proposed courses is to show to students that software development is a complex task with far more challenges than just those of technical nature. The second goal is to expose students to variety of problems that will require them to employ different methods from multiple disciplines. This will help them acquire a diverse set of skills and broad knowledge that hopefully will be useful to them in many tasks other than software development and management. I intend to enhance the multi-disciplinary nature of the courses by inviting lecturers and mentors from other fields, like business and finance, to provide their perspective and give their expertise on problems around software development. Therefore, the courses will not be simply software engineering courses and ideally they will attract students, who have or would like to acquire a broader set of skills and knowledge. It is my intention and hope that I will be able to recruit students that will want to work with me on similar research problems.

Graduate Supervision and Student Mentoring

During my tenure at the University of Alberta, I have mentored 6 students in total, 3 graduate students in the context of my supervisor’s graduate course, 2 undergraduates as summer students and one visiting PhD student. Five of those students were involved with projects that were immediately related with my PhD research on software evolution in distributed systems. The last student was involved in a project on collaborative software development. These projects have already produced one publication and a number of submissions pending review. At York University as a postdoctoral fellow, I supervise a number of undergraduate and graduate students related to the project of self-adaptive cloud applications. In practice, I am mentoring 5 graduate students and 2 undergraduate students by providing guidance on their individual projects and assistance in producing publications on their topics.

My philosophy in mentoring students is to enable them and guide them in order to discover and express their own potential. I expect my students to take initiative, be able to independently deal with problems and come up with their own solutions. My role will be to pour my experience in the projects, provide my recommendations during brainstorming and evaluate their work according to the goals and expectations of the project. I firmly believe that students should be able to think about the problems their working on by themselves and be guided towards the solutions, rather than being provided with one. This will enable them to consider a problem from different perspectives in order to find a solution, broaden their way of thinking and enable them to work independently. Naturally, when a problem arises or a deadline is getting closer, I would step in, if I consider that my contribution is necessary, and only to shape the final work (tool or publication) towards the expected standards. This will ensure the final necessary quality of the project so that the students’ efforts are recognized and accepted by the community. I will closely monitor my students’ progress through frequent meetings, always be available and support them in their research.

Finally, I want to enable my students to develop their soft skills along with their technical qualifications. I would like them to take advantage of every opportunity to present and demonstrate their work, participate in events and promote their work and the lab. I would like to see them initiate their own collaborations and develop and work on their own projects along with their research project. This will make them more confident in communicating their work, it will help them build their network and eventually it will help them build their future, be that in academia or in industry.


Copyright © 2019 Marios Fokaefs's Home Page. All Rights Reserved.
Joomla! is Free Software released under the GNU/GPL License.