1998-now, Faculty of Computer Science, Dalhousie University
CSCI 6901.03 Visual Text Analytics
This is a directed reading course aiming to introduce students to the current literature in visual text analytics. Students will be exposed to systems and techniques for combining text visualization, text analytics and human-computer interaction to support human sense making of large document collections and document streams. Students will present critical reviews of research papers, and they complete a course project aiming for a publishable research result.
HINF 6220.03 Networks and the Web for Health Informatics
The purpose of this course is to introduce two key technologies that play a critical role in the management of health care, computer networks and the World Wide Web, and how they are used to perform key functions in health care, health record management and access to medical knowledge. Specific objectives of the course are to give students an appreciation of some of the details of related computer technology, including web programming, databases, medical image management, and computer security. The course includes 3 hours of lecture and 3 hours of tutorials per week, which complement each other, in that lectures focus on conceptual issues, while tutorials focus on technology details. Students are expected to participate actively in the lectures and tutorials and contribute their own work experience to enrich the course content with case studies.
CSCI 6505.03 Machine Learning
A graduate level course on fundamental techniques of machine learning, with emphasis on applications to Natural Language Processing, and Information Retrieval and Extraction for the World Wide Web and large document corpora.
ECMM 6016.03 Networking for Electronic Commerce
A stream elective for the newly established Master's for Electronic Commerce program, aiming to introduce the basics of computer networks with a focus on electronic commerce. The difficulty with this course was the diversity of the student body (equally split between graduate students in computer science and MBA students), plus the lack of guidelines of what constitutes a reasonable body of graduate level material for the subject. The topics covered in the course were the foundations of computer networks (with focus on the higher layers, TCP/IP protocols and internetworks), computer security, virtual private networks and firewalls, and software agents for electronic commerce. The format of the course was lecturing for the first third, and seminar for the last two thirds of the course, where current literature was reviewed and presented by students and critically discussed in class. The course project was the design and implementation of an agent-based electronic marketplace.
CSCI 6504.03 Advanced Topics in Software Agents
A new graduate seminar course surveying current research literature in software agents. Topics covered included: internet search engines, collaborative information filtering, link-based approaches (automatic citation indexing, inferring web communities from link topology), information integration and wrapper generation, case-based reasoning, theoretical foundations of software agents (agent communication languages, knowledge representation), multiagent negotiation, computational market models, mobile agents. Evaluation consisted of short weekly reports on the readings, presentations, and a course project (a design or implementation project).
CSCI 3171.03 Network Computing
This core course gives students a foundation in computer networks. It presents a top-down view of the layered architectural elements of communication systems, focusing on the Internet and TCP/IP. Topics include client/server systems, packet switching, protocol stacks, queuing theory, application protocols, socket programming, remote service calls, reliable transport, UDP, TCP, and security.
CSCI 4150.03 Introduction to Artificial Intelligence
Introductory Artificial Intelligence course at the 4th year level (more sophisticated mathematically than the course it replaced in the program, CSCI 3150). Emphasis on modern probabilistic techniques, such as the representation of uncertainty, Hidden Markov Models and Bayesian Networks, Constraint Satisfaction, statistical and reinforcement learning, natural language processing, machine perception and robotics.
CSCI 2140.03 Data and Knowledge Fundamentals, part II
A core undergraduate course introducing data and knowledge bases. I taught part II, Knowledge Fundamentals, covering exhaustive search, heuristic search, and automated inference in propositional and predicate (first-order) logic.
CSCI 3136.03 Programming Languages
A third year course on the comparative study of advanced programming language features. Topics include statement types, data types, variable binding and parameter passing mechanisms. Formal methods for syntactic and semantic description of programming languages are examined, and compiler design is introduced.
CSCI 4171.03 Computer Communication Networks
A fourth year course introducing computer communication networks. The challenge in this course is to provide sufficient foundational and mathematical content while giving students an appreciation for the state of the art in this rapidly evolving field. The student body is extremely diverse, because a percentage of the class already has work experience (through coop) with the practice of computer networks. Another issue is that the material is not yet standardised, and therefore choosing a suitable textbook is difficult. As instructor, I had to supplement the textbook chosen with additional material (mostly of foundational nature), and reference to web resources.
CSCI 3150.03 Artificial Intelligence
A third year course introducing the field of Artificial Intelligence. The challenge in this course is to offer a balanced view of the field, which includes robotics, computer vision, knowledge representation, and a variety of fairly advanced underlying mathematics (feedback control, signal processing, optimization theory, first order logic, probabilistic networks). The teaching objective is to convey to the students the basic intuitions without getting into mathematics that is beyond their background. The course evaluation consisted of assignments, two term exams and a course project. The last day of class was devoted to project presentations and demonstrations.
1991-1998, Department of Computer Science, York University
4th year courses, cross-listed as graduate
COSC 4422.03 Computer Vision (crosslisted as a graduate course)
A senior/first-year graduate course on Computer Vision. Topics covered include: The physics and geometry of image formation, camera calibration, depth from stereo, depth from focus, depth from motion. Edge detection and region segentation. Mathematical morphology. Object recognition as search, object recognition using the Hough transform, object recognition using eigenspace representations. Assignments are a mix of theoretical problems and programming using a signal/image processing software package.
COSC 4331.03 Introduction to Computer Graphics (crosslisted as a graduate course)
A senior/first-year graduate course on the theory and practice of computer graphics. Assignments include the implementation of elementary 2D and 3D graphics packages, and the use of existing 3D graphics packages, such as PHIGS and OpenGL.
COSC 4401.03 Topics in Artificial Intelligence: Neural Networks (crosslisted as a graduate course)
A senior/first-year graduate course designed to cover two branches of evolutionary computation, learning in neural networks and optimization with genetic algorithms. The course started with a brief review of statistical pattern recognition, which formed the foundation for a more disciplined treatment of neural network learning. The emphasis of the course was on neural network learning algorithms that have gained practical acceptance, especially in the areas of robotics control and computer vision, with less time devoted to those that are of more theoretical significance. Before covering genetic algorithms, a thorough introduction to the topic of random number generation was offered. This proved to be a good idea, as it gave students a practical grasp of basic probability theory. In terms of laboratory experience, the students used a neural network simulator for the Macintosh, to enhance their basic understanding of the concepts, and Xerion, an advanced neural network construction tool for UNIX, which offers a choice of advanced learning regimes for addressing more realistic problems. A genetic algorithm implementation in Turing for numerical optimization problems was also used.
COSC 4422.03. Signals and Systems (crosslisted as a graduate course)
This was a new senior/first-year graduate course. The objective of the course is to complement the computer vision, graphics and robotics courses in our department, by aiming at an understanding of the basic concepts in discrete signals, filtering, and linear system theory. A basic problem in teaching this course is the nonuniform mathematical background of the students, as well as the fact that it is addressed to both undergraduate and graduate students. The course consisted of 3 assignments, 3 tests, and one course project. Graduate students were required to solve additional problems as part of their assignments, and to carry out the project by themselves, whereas the undergraduates worked in groups. The project involved the design of programs operating on real speech or image data, using an existing library of signal and image processing programs, available along with a textbook. This course can be taught in several different ways, depending on the mix of rigorous mathematics, physical intuition, and computer programming. My approach has been to cultivate physical intuition together with some basic mathematical skills, so that students can understand and use existing software packages. Programming assignments are coordinated with theoretical assignments, so that the former enhance the understanding required by the latter. The course has 17 students and no other assistants.
Undergraduate courses (1st - 3rd year and not cross-listed 4th year)
COSC 2021.03 Computer Organization
A second year course introducing computer organization. Topics covered include assembly language for a RISC processor, elementary digital logic (gates, flip-flops and programmable gate arrays), representation of numbers and the arithmetic and logic unit, processor design (memory and control). The challenge of this course is to bridge the gap between high level languages and digital hardware. Assembly language is introduced to a sufficient degree to allow students an understanding of the issues in processor design.
COSC 1020.03. Introduction to Computer Science I
Course director. The course had three sections and a total enrollment of
about 250. I coordinated the three sections, and the work of 6 tutors and 4
markers (a total of 7 different individuals).
The course has 3 weeks of supervised laboratory sessions, 5 assignments, 2
tests and a final exam.
Innovations introduced to the course:
- Coverage of subprograms (procedures and functions) before control structures (and the use of a textbook following this philosophy). In this way students are introduced very early to the concept of modular design as a tool for managing program complexity.
- Introduction of graphics in the laboratory part of the course (3 weeks). Lab 3 was redesigned to include turtle graphics, allowing students to construct sophisticated graphical patterns with only 3 weeks of Pascal instruction.
- Tutorials run by graduate students. I undertook the task of managing the tutors, providing them with guidelines as to how to run the tutorials, and monitoring their progress throughout the term through regular staff meetings. Following the suggestion of Prof. Pat Rogers, I prepared and offered a two-hour orientation session for tutors as part of the orientation week activities, dealing specifically with teaching computer programming, and demonstrated three different lecturing styles (lecturing, interactive, and small-group work) in that context.
This course was initially taught in Pascal, then in Object-oriented Turing. In the summer of 1998 I completely redesigned the course in Java and taught it for the first time in the Department of Computer Science at York University.
COSC 1030.03. Introduction to Computer Science II
The course covers data abstraction and introductory data structures. The language used is currently Object-oriented Turing.
COSC/SCS 4001.06. Space and Communication Sciences Workshop
Year-long project course equivalent to a Bachelor's thesis. As course director I proposed and implemented (through milestones introduced to spread the work evenly throughout the academic year) the structure of this course, in which the student works on a specific design-oriented project under the supervision of a faculty member. Achievement of each milestone requires the submission of a progress report, and a short presentation by the student to the whole class. Grades are assigned by Prof. Prince (Chair, Physics Department) and myself, in consultation with project supervisors.
COSC 4341.03. Interactive Systems Design
The course covered the basics of Interactive Systems Design, with equal
emphasis on cognitive engineering (predictive models of user behaviour and
performance), on interaction styles and techniques, and on software for
Interactive systems (X windows, Motif, PC Windows, Hypercard). The course
projects involved the design and implementation of an interactive system useful
in a practical setting.
COSC 2021.03. Computer Organization
An introductory course in modern computer architecture. Course includes an introduction to performance evaluation, machine instructions, addressing modes, computer arithmetic, processor datapaths and clocking, assembly level programming and microprogramming, memory hierarchy, pipelining (summer of 1997).
Robot sensing, planning and control
This course was designed with funding by a York Senate Teaching-Learning grant. It has not been offered yet. The design involved a selection of topics from the broad area of robotics suitable for a "hands-on" senior-level robot building course covering sensing, planning and control. Students are assumed to have programming skills in C and assembly language, and have taken courses in analog electronics and digital systems design. Control boards based on the MC68HC11 microprocessor with serial communication to a UNIX workstation are used. LEGO Dacta parts are used for building robotic mechanisms. The theoretical part of the course covers the physics of sensors and motors, feedback control theory, and mechanism design.
1988 - 1991, Department of Computer Science, University of Toronto
CSC 484. Applied Artificial Intelligence
The course was designed and taught jointly by Dr. R. Greiner and myself four times (spring term of 1988, 1989, 1990 and 1991). Course evaluation consisted of 4 assignments (10%, 15%, 10%, and 15% of the total mark respectively), and two tests (25% of the total mark each). I taught half of this course (Search, Production Systems, Computer Vision, Robotics), and made up half of the assignment and test questions.
The course was also offered as an intensive 3-day course for industry, sponsored by the ITRC (Information Technology Research Centre), a Centre of Excellence funded by the Government of Ontario.