CS311 > FAQ

Frequently Asked Questions about CS 311

Why was Section 1 Cancelled?

It wasn't cancelled. There was never any intention to offer more than one section this quarter. Enrollments in the Computer Science major are such that multiple sections are unnecessary. So, if you want to take this class form another instructor, you will have to wait until next year.

Will the Class be Televised?

The PSU Course schedule says that the class will be televised. I don't know anything about this. The class will be video-recorded; the videos are for the use of a parallel class that is being taught in Shanghai. If you are forced to miss a class, you may be able to watch the video; I don't yet know anything about the availability of these videos, but if I find out how to view them, I will let you know.

Be warned: I use the whiteboard a fair bit in the class, and my experience has been that this is invisible on a video recording.

I work in Gresham. Can I take this course without actually coming to class?

I taught this class in the Fall, and one student did attempt to take it without ever attending lectures.  He did quite badly, and I don't advise anyone to try this.  CS 311 is essentially a theory class, and it involves understanding and applying formal definitions and theorems, and using them in proofs.  Most of the material is in the textbooks, but it is very hard for most students to grasp it without being able to interact with the lecturer.

So, the short answer is that if you want to take the class, you should plan an attending the lecture sessions.   However, if you can't come to class on a given day, you may be able to get hold of a tape from the distance learning folks. A better plan may be to have a colleage go over their notes with you.

Do I have to take the Prerequisites?

In general, yes. That's why we call them prerequisites.

Can I take the Prerequisites in Parallel with this Class?

In general, no. That's why we call them prerequisites.

What Prerequisites do I really need?

OK, suppose that you have transferred from another school. What do you really need to know to succeed in CS 311?

  1. Finite and infinite sets.  Proving that a set is finite, countably infinite, and uncountable.
  2. Algebras.  What is an algebra?   Operations: commutative and associative. Morphisms.
  3. What does it mean for a set to be closed under an operation?  Inductive definitions of sets.
  4. Phrase-structure grammars and how they work.
  5. Rigorous mathematical proofs and how to write them down.
  6. Propositional calculus.  De Morgan's laws
  7. Relations: reflexive, transitive, and symmetric. Equivalence relations. 

If you have a command of that material, you will be all set to take CS 311. If you know most of it, but are missing one or two points, then you should be able to catch up by doing the appropriate reading. All of this material is in the first 10 chapters of Hein's textbook.

I sweated blood to learn Prolog for CS 251. Why aren't you using Prolog in CS 311?

If you plan to become a computer scientist, you should get used to the idea that learning a new progarmming language is good. Each new language will typically introduce you to a new way of thinking; the more ways you have of thinking about a problem, the better.

But that deosn't answer the question. I'm uisng ML in this course because I think that it's a better "fit" for the material. The course starts with the idea of an algebra as an inductive definition of an infiite set. ML has a kind of datatype declaration that supports exactly this idea. The course goes on to define FSA as tuples with certaibn properties. Again, ML can represent this idea exactly.

This is not to say that the same programs that we write in ML could not also be written in, say, an object-oriented language. They can (and I have done so). However, they are much longer and more involved, because the language is not such a good match for the problem domain.

The big thing about learning another language is not to sweat the details. Even by the end of the quarter, there will be lots that you don't know about ML. Try not to care. That's right! Try not to care. If you want to become an ML master, that's great, and there are many books and Internet resources that you can use to help you. But it's not an intended outcome of this course. The point of programming somthing like the minimization of a FSA is to help you understand the minimization algorithm.


Most recently modified on Friday 28 March 2008 at 13.41


Andrew P. Black