Teaching Interests and Approach

One of my interests is to teach a course on Artificial Intelligence (and, in particular, Knowledge Representation), or even two courses on Artificial Intelligence (AI): one course centered on "Knowledge Representation and Sharing" (the focus of my research), and a more general AI course where various domains, inferencing techniques and AI languages are introduced (or one particular language - such as Lisp, Scheme, Prolog, RDF+OWL or another description logic based language - is more fully taught). In both cases, in order to permit the students to have a synthetic overview of the various possible notations and inferencing mechanisms used in AI (that is, to permit the students to really relate them in their minds), I believe that the course should first introduce the unifying framework of an expressive logic-based semantic network such as Conceptual Graphs, with the various possible notations and inferencing mechanisms usable within such a framework.

My education (a Master degree Software Engineering and Artificial Intelligence, and then a PhD degree in Knowledge Acquisition, Conceptual Graphs and Structured Documents) and my research in Knowledge Representation, Sharing and Retrieval have prepared me well to teach an AI course. More generally, they have prepared me to provide an interesting spin on many knowledge management related courses, for example, courses on information retrieval, document management, database management, collaboration systems, or courses on the application of advanced techniques of knowledge management to certain domains (e.g., biology and e-learning). I am familiar with the content of Griffith Uni's Knowledge Representation course (3116CIT/NA; its course outline is accessible at http://www.griffith.edu.au/courseoutlines/OLD/ict/2006/s2/3116CIT_3065_CO.pdf). I'd not have any problem in extending it with (i) Web accessible public-domain course materials on knowledge representation, and (ii) results from my own research.

As part of my teaching of a course and as a test bed for my research, I'd like to continue my work of building and providing a semantically structured representation of the course (using conceptual relations) in order to (i) support conceptual querying/navigation and feedback by the students, and (ii) provide additional ways to evaluate students and ways to compare or generate various courses. This approach can be applied for on-line courses as well as face-to-face courses. It is especially relevant for courses that teach formal notations (for example, I applied this approach to a course on Workflow Management that I taught).

In addition to these different kinds of courses, I can also teach programming languages. I have already taught various procedural programming languages (Java, Javascript, PHP, Perl, VBscript, Cobol), especially in relation to their application to the Web (I have taught an advanced Internet Programming course for 2 years). I am particularly interested in teaching functional or declarative languages (e.g., LISP, Scheme, SML, Prolog or Java Expert System Shell) or the theory and use of parser/compiler generators (e.g., Lex&Yacc, JAVACC, ANTLR, ELEGANT).


Demonstrated commitment to effective teaching

The subject of my Griffith E-Learning (GEL) grant in 2006 was the application and extension of my knowledge server WebKB-2 to support a semantically structured representation of a course and thus allow (i) conceptual querying/navigation and feedback by the students, and (ii) provide teachers additional ways to evaluate students as well as ways to compare or generate various courses. I represented three courses as part of my GEL project. This work illustrates my commitment to an effective teaching.

Even though this was optional, I always asked the students of my courses to fill the "student evaluation form" regarding the content, teaching and assessment of my courses (as a example, see the student evaluations of my last IP2 course at http://www.phmartin.info/teaching/evaluations/2006/semester1/IP2/). I took those evaluations into account to improve my course (for example, I accepted the suggestion of my Internet Programming students to teach them PHP and assess all their exercises).

Here are some points of my teaching approach which proved valuable to my students.
- For each module of a programming course, I provided at least one example program that combined all the key commands or functions presented in the module: this saved the students a lot of time since (i) this eased their understanding of how the commands or functions worked and could be combined, and (ii) this permitted them to re-use the program as a template to create more complex programs.
- For each module of a theoretical course, I provided a structured synthesis of the key elements that had been presented in the module (for example, I gave a subtask hierarchy of all the tasks advised by a methodology) and/or a generic procedure to solve a problem in the presented domain. .
- I showed them where and how to search for more information in the studied domains; when possible, I also showed them which sources (or kinds of sources) to trust or not to trust.
- I emphasized the need to follow "good design principles" and I ensured their following.
- I gave regular assessments.
- I encouraged and rewarded hard work as well as critical thinking.