Teaching
Courses I teach or have taught or will teach soon as well as some links to other teaching-related resources.
Design and Analysis of algorithms (CSE361)
Computer algorithms, their design and analysis. Strategies constructing algorithmic solutions, including divide-and- conquer, dynamic programming and greedy algorithms. Development of algorithms for parallel and distributed architectures. Computational complexity as it pertains to time and space is used to evaluate the algorithms. A general overview of complexity classes is given.
Numbers; What? When? and Why? (MTE405)
A topics course for seniors in elementary education specializing in the teaching of mathematics. We review numbers seen in the elementary curriculum from a unified perspective.
Numerical structures (MTE210)
Elementary set and number theory. Components of the real number system. History of numeration. Algorithms of arithmetic. Other general algebraic structures. Problem solving. This is a course for elementary education majors with an emphasis on problem solving.
Introduction to Artificial Intelligence
We will be reading Norvig's Paradigms of Artificial Intelligence Programming. Case Studies in Common Lisp. (This is an Independent Study course with a very small number of students.)
Intro to Computer Science (CSC280)
This is the ACM CS1 course. A course I love to teach, introducing student to Computer Science via programming. By now, I have delivered this course at three different universities and using three different languages, Pascal, Java and Python. My favourite language of the three: Python, by a wide margin. (Pascal is a straight-jacket and Java is verbal logorrhoea.) I hope to have the chance to do it in Scheme, one day.
Web Programming (CSC535)
A practical introduction to User Interface Design, Client-Server architecture, Event-Driven Programming and the trinity of Web 2.0: HTML, CSS and Javascript.
http://sgkruk.webfactional.com/media/csc535/lectures.html
Discrete Mathematics for Computer Scientists (CSC350)
An introduction to the essential mathematical tools of every computer scientists: logic, combinatorics, graph theory and discrete probabilities. I wish students came out of high school with less Calculus and more discrete mathematics. As it is, they (or their parents) think higher mathematics means Calculus and nothing else matters. How wrong they are! The bias towards Calculus is a 19-century vestige. Nowadays, discrete mathematics is considerably more useful, interesting and intellectually satisfying.
Intro to Computer Science
MTH141 Precalculus
APM568 Mathematical Modelling in Industry: Discrete Models
We will cover the basic of discrete models then move on to reading nice papers on specific subjects. I assume we will cover 6 to 8 papers during the semester, one per two weeks or so. The protocol is that everybody reads the paper, then someone presents the gist of it to the rest of the class, then we discuss and clarify the paper. I will fill in gaps that we may discover along the way. Then we look for the open problems in the field. I want this class to be an introduction to both the theory and the applications of discrete models as well as a seminar on reading research papers, and maybe, we will hit on some problem that some of the students in class want to pursue. (In my dream world, every student in this class will find a at least one problem supremely attractive and will want to research with me about it :-) )
Subjects we will certainly cover:
MOR242 Intro to Operational Research Models (ONLINE)
Why?
Ever wondered how we schedule classes? How inventory control is implemented at a large manufacturing plant? How nurses are assigned to shifts in a hospital? Which routes will be covered by each of the planes of Northwest? All of these interesting problems are studied by Operations Research and we are offering a new introductory course in the subject.
What?
This course covers a number of problems that can be modeled as Linear Programs, Combinatorial Programs and Nonlinear Programs. The point is not for the students to understand all the mathematical subtleties of these models but rather to be able to see that a large number of problems in real life can be modeled and solved easily.The emphasis of the course is modeling and solving using the available software, not theorems and proofs. The students will be encouraged to use a number of tools, from simple spreadsheets to sophisticated optimization software (AMPL, GAMS, CPLEX, NEOS, ...).
Online
The course is entirely online. Evaluation will consist of a number of problems that students, sometimes in group, sometimes alone, will formulate using a proper mathematical model, solve using one or another of the available tools, and describe in a report where they explain the solution, its value and limitations. Think of these reports as management reports, used to decide on a course of action. There will be a short final exam, in class. It is meant as a simple verification that students did the work during the semester.
MOR555 Nonlinear Optimization
The theory of unconstrained and constrained optimization and an overview of the main algorithms. Theory: First and second order optimality conditions; Lagrange multipliers; saddle-point, duality. Convexity, Farkas Lemma, Separation, Projection, Reflection. Least squares (unconstrained and constrained). Algorithms: Steepest descent, Newton's Method, Quasi-Newton methods (BFGS, SR1), Conjugate gradient, Gauss-Newton's method, Kelly's gradient projection, SQP. If we have time, we will touch semidefinite programming.
The course requires students to understand the theory and implement simple versions of the algorithms covered. I firmly believe that to understand what optimization does, one has to get one's hands dirty with code. :-)
APM367 Design and Analysis of Algorithms
Computer algorithms, their design and analysis. Strategies for constructing algorithmic solutions, including divide-and-conquer dynamic programming and greedy algorithms. Development of algorithms for parallel and distributed architectures. Computational complexity as it pertains to time and space is used to evaluate the algorithms. A general overview of complexity classes is given. [Algorithms are as much a part of mathematics as they are of computer science. This course is now cross-listed between the two departments and can be taught by faculty from either department.]
MOR242 Intro to Operational Research Models (ONLINE)
Why?
Ever wondered how we schedule classes? How inventory control is implemented at a large manufacturing plant? How nurses are assigned to shifts in a hospital? Which routes will be covered by each of the planes of Northwest? All of these interesting problems are studied by Operations Research and we are offering a new introductory course in the subject.
What?
This course covers a number of problems that can be modeled as Linear Programs, Combinatorial Programs and Nonlinear Programs. The point is not for the students to understand all the mathematical subtleties of these models but rather to be able to see that a large number of problems in real life can be modeled and solved easily.The emphasis of the course is modeling and solving using the available software, not theorems and proofs. The students will be encouraged to use a number of tools, from simple spreadsheets to sophisticated optimization software (AMPL, GAMS, CPLEX, NEOS, ...).
Online
The course is entirely online. Evaluation will consist of a number of problems that students, sometimes in group, sometimes alone, will formulate using a proper mathematical model, solve using one or another of the available tools, and describe in a report where they explain the solution, its value and limitations. Think of these reports as management reports, used to decide on a course of action. There will be a short final exam, in class. It is meant as a simple verification that students did the work during the semester.
MTH405 Special Topics
Constraint Logic Programming
Constraint Programming represents one of the closest approaches computer science has yet made to the Holy Grail of programming: the user states the problem, the computer solves it.
(E. Freuder)
Description:
The objective of constraint-based programming is to solve problems by stating constraints in first-order predicate logic. Constraints which must be satisfied by all solutions of the problem; i.e. they describe properties of unknown objects and relationships between them. The unknown objects are modeled as variables.
In this course, we will look at the theoretical foundations of Constraint Logic programming as well as the graph theory and optimization tools needed to develop constraint solvers.
This is a hands-on course. Students will implement a number of constraint solvers in ECLiPSE, an open-source, constraint logic language based on Prolog. For example, calculus on polynomials, automatic differentiation, sudoku solvers, schedule and timetable construction. Most of the grade in the course will be based on these programming assignments.
Here is an example of a constraint program to solve the puzzle: find the digits represented by the letters in order to satisfy the equation
SEND+MORE=MONEY
sendmore(Digits) :-
Digits = [S,E,N,D,M,O,R,Y], % Create variables
Digits :: [0..9], % Associate domains to variables
S #\= 0, % Constraint: S must be different from 0
M #\= 0,
alldifferent(Digits), % all the elements must take different values
1000*S + 100*E + 10*N + D % Other constraints
+ 1000*M + 100*O + 10*R + E
#= 10000*M + 1000*O + 100*N + 10*E + Y,
labeling(Digits). % Start the search
This is the whole program. Note that we do not state how to solve the puzzle, but only the puzzle itself (not the how, just the what). This is the key objective of constraint programming.
Prerequisite: Knowledge of some high-level programming language The course will use Prolog but I do not assume students will know Prolog at the beginning; I will give an introduction to the language and expect students to be able to read a reference manual. I will show plenty of examples in class. Some knowledge of graph theory is assumed but nothing above an undergraduate course in discrete mathematics.
MTH141 Pre-Calculus
Functions, roots of polynomials, rational, exponential and logarithmic functions, trigonometric functions (including graphs, identities, inverse functions, equations and applications), complex numbers, analytic geometry and conic sections. Mondays, Wednesdays, Fridays at 0920h and at 1040h in ODH203
All these courses are available on Moodle (But only to my students)