This post is fairly late but at least it's better than nothing.
So far I've found this course interesting. This is mainly due to the fact that I have never learned how to express statements precisely using symbolic logic. Now, of course, this isn't meant to replace or nullify the usefulness of expressing yourself in English but rather help you remove ambiguity from that which you wish to convey. The ability to do this is especially pertinent use for computer scientists, probably why the course is a CSC course. I say this mainly because when
programming, any misunderstanding, however small, about your task may have certain consequences. Perhaps these consequences are mistakes easily
reversible, or not even an issue in the overall scheme of a project,
but they may also be extremely detrimental as well. Hence this is why being able to
communicate using symbolic logic statements, or far more practically
being able to recognize and remove ambiguity from an English sentence, will help programmers decrease the possibility of wasting time writing useless code.
Now onto the discussion of course content so far.
Easy
to learn, hard to master is how I'd describe the course content. This is because we've only had to learn a handful of simple symbols that have been basis of all our course work. The difficulty of the course comes from how we use those symbols. This is
actually the reason that I like the course; it's also why I like computer science. In a given programming language, for example, it
isn't, generally, too difficult to learn and understand the basic 'tools' (i.e. methods calls, if's, loops, etc.) it has to offer. The challenge arises from creating and understanding complex structures from those 'tools'. So far the only 'tools' of this class are the following:
Implies
⇒ ⇔
Not
¬
And
∧
Or
∨
For
All ∀
There
Exists ∃
Union
∪
Intersection
∩
Subset
⊂
Member
of ∈
Fairly
simple right? One month in and we have a test with nothing more than this? That's because the difficultly of the course does not come from the 'tools' themselves but rather the
things we build with them. And as we've progressed through the first month the things we've been building and interpreting have become more and more complex. Maybe some examples of this will make things more interesting and clear.
One of the first statements using symbols we learned is probably this:
∀
x ∈ X, P(x)
This is quite simple, it's stating that all x in the set X are true for P(x). But we've moved far beyond this simple structure and have implemented the 'tools' available to us to create complex statements such as the following:
∀x
∈ X, (P(x) ∧ ∃y ∈ X, (W(y, x) ∧ (∀w ∈ X, W(w, x) ⇒
E(w, y)))) ⇒
E(x, MegaMoth)
The
meaning of the statement isn't all that relevant (for those curious
though it is the statement from Assignment 1, Question 3, Part c) but
rather the complexity of the structures we're creating is what I want to convey. I find it fascinating that with only a few symbols to work with we can convey complex statements so elegantly and precisely. Things get even more complex when you learn that you can phrase, so to speak, the symbols in different ways while retaining the same meaning. For
example the fact that the following two are equivalent statements:
∀
x ∈ X, P(x) ⇒ Q(x)
∀
x ∈ X, ¬P(x) ∨ Q(x)
Being able to phrase symbolic statements differently becomes useful when building statements that have certain meanings relative to another. That is a statements contrapositive, negation, converse, etc. Even nuances in the positioning of
symbols in a given statements can add another level of complexity to the what we can state. For example, the next two statements mean two completely different things:
∀
x ∈ X, ∃y ∈ Y, E(x, y)
This
is saying that for every x there is at least one y, where no y has to be the same, such that...
∃y
∈ Y, ∀ x ∈ X, E(x, y)
On
the other hand this is saying there exists at least one y, the same y, for every x
such that...
So
to sum up, my point is that though the basic 'tools' we have at our disposal may be easy to grasp the challenge in
the material arises what they can create. We must understand the nuance of certain structures, the
equivalence and relative meaning of different statements and the translation of more detailed English sentences into complex symbolic logic statements.
On
that note I think this is a good spot to end my first post. I don't
see much relevance in discussing the material we've learned up to
this point more specifically since the class has just wrote test one
so I wouldn't say it's all that relevant at the moment. Besides that's what the
lecture notes are for, right? I'd rather make these posts more than just recaps of what we've done.