While teaching logic for the first time (I am teaching to graduate students, but I haven't taught any logic before), I've finally realized how much I like constructive proofs. I gave a completely constructive proof of weak propositional completeness, by giving a simple proof algorithm that underlies this perl prover program. Basically, you start by proving excluded middle for each atomic. Then you just do proof by cases on all possible combinations of truth values of atomics. This only works for a finite number of atomics, so it only gives weak completeness. But the proof method is entirely constructive, simple enough that one can use it oneself (e.g., I used it myself when proving one of the De Morgan directions in class). I am not claiming it's at all new—it's not—but I had fun rediscovering it.
Then, today or Thursday (depending on whether time allows), I'll give a semantic proof of propositional compactness in the case of countably many atomics. (I am sure this proof has a name attached to it, but it's easier to make up than to look up.) Again, it's going to be entirely constructive, and pretty simple. It just uses induction and the lemma that if A is f-satisfiable (i.e., every finite subset of A is satisfiable), and Q is an atomic, then either A plus Q is f-satisfiable, or A plus not-Q is f-satisfiable. As it stands, this only works for countably many atomics, but in fact it also works for any case where there is a well-ordering on the atomics (and hence by the Axiom of Choice, it extends to the general case; but it is kind of nice to note that once one fixes the well-ordering on the atomics, it's entirely constructive). I'm not a logician. None of this is at all new. But I'm having lots of fun, hopefully of an innocent variety.
But I have also made an interesting sociological discovery: Students find set theory harder than first order logic. They seem to think of set theory as more abstract and strange. This was really weird to me at first, but that's just because I've been using sets for the larger part of my life, and only got to rigorous first order logic recently. Next time I teach the material, I will have to move more slowly through the beginning of set theory to make it clear that "member of" is not transitive but "subset of" is, that {{1,2,3}} has only one member, and so on. (Why, oh why, don't they teach computer programming starting with Grade 2 in all schools, so one could suppose familiarity with various kinds of abstract data structures by the time of college, which would allow for a nice stock of common concepts? It's a more useful intellectual and practical skill than, say, cursive handwriting.)