I really enjoy teaching. The moment of perplexity followed by the flash of insight, when a student "gets it," is always thrilling to me. Answering questions and thinking how to explain the ideas always deepens my understanding, regardless of the type of material. I also enjoy mentoring and advising students. The one-on-one interactions give a fuller picture of each person's aspirations, difficulties, and strengths, enabling me to better guide students, fine-tune the instruction, and correct my inevitable errors.
I have a wide range of experience teaching Computer Science. At University of Buenos Aires, I designed and taught a graduate-level seminar based on my graduation thesis in concurrency in object-oriented programming languages. At University of Massachusetts, I was a teaching assistant in various CS courses (earlier versions of Computers and Society 102, Intro Programming 121 and 187, Programming Languages 530). For several semesters I ran the introductory programming course for majors (187): I had full responsibility for the course, including designing the syllabus, choosing the textbook, preparing and delivering lectures, making and grading assignments and exams, and supervising TAs and graders. I have also tutored, in Spanish, disadvantaged students in Math and CS. As an assistant professor att University of New Mexico, I have taught the algorithms and data structures course (251), as well as Social and Ethical Issues in Computing (293). The very diverse student population at UNM has been a source of both challenges and satisfactions. I have also enjoyed mentoring and advising both undergraduate and graduate students, and participating in the undergraduate curriculum committee. Finally, my experience working in a project to use the Web for instruction (MANIC) has exposed me to some of the benefits and difficulties of such remote teaching tools.
I am very interested in the issues of teaching the fundamentals of Computer Science, which I think is an area often neglected. Aside from the challenge of framing the basic concepts soundly for undergraduate majors, I believe CS has much to offer as an intellectual pursuit in itself. For example, I would like to develop a course and a textbook on the foundations and artifacts of computing that presents concepts and some paradigmatic real-world systems. This would not be a beginner's programming course, or an applications skills course, but rather a course on abstraction and rigorous thinking, a pursuit usually reserved for higher mathematics. The language of graph theory, learning that there can be finite descriptions of infinite entities, and using abstraction to manage complexity, all enrich a student's intellect. To the extent that computer and information systems become more central to society, fundamental concepts of AI, databases, etc., and their artifacts (e.g. the qualitative differences that arise out of the quantitative changes in the gathering of information about individuals), can further a student's understanding of the real world, empowering the student to deal with the every day, growing complexity of systems that surround us.
Modified 2002.12.10 by Cris Pedregal Martin