Learning Objectives -- Mat385
By the end of this course, students should be able to:
-   Basic logic
-  Apply formal methods of symbolic propositional and predicate logic.
 -  Describe how formal tools of symbolic logic are used to model algorithms and
	real-life situations.
 -  Use formal logic proofs and logical reasoning to solve problems such as puzzles.
 -  Describe the importance and limitations of predicate logic.
 
 -  Sets
	
	-  explain basic aspects of sets (elements, subsets, etc.)
	
 -  develop the link between logic  and set theory (abstracted in the
		notion of a Boolean algebra)
	
 
 -   Proof techniques
-  Outline the basic structure of and give examples of each proof technique described
in this unit.
 -  Discuss which type of proof is best for a given problem.
 -  Relate the ideas of mathematical induction to recursion and recursively defined
	structures.
 -  Identify the differences among weak and strong induction and give
	examples of the appropriate use of each.
 
 -  Basics of counting
-  Understand different classes of numbers, and transfinite numbers
	(infinities), as well as contexts for their usefulness
 -  Solve a variety of basic recurrence equations.
 -  Analyze a problem to create relevant recurrence equations or to identify important
counting questions.
 
 -  Graphs and trees
-  Illustrate by example the basic terminology of graph theory, and some of the
	properties and special cases of each.
 -  Demonstrate different traversal methods for trees and graphs.
 -  Model problems in computer science using graphs and trees.
 -  Relate graphs and trees to data structures, algorithms, and counting.
 
 -  Optimization
-  Understand the importance of optimization -- the cost of sub-optimal
	behavior, in different contexts (e.g. algorithms, graph traversal)
 -  Understand how an algorithm can be optimal in one context, whereas in
	others it becomes sub-optimal.
 -  Practice optimization in the realm of finite-state machines
 
 
Website maintained by Andy Long.
Comments appreciated.