Languages and Machines
**Major Requirement (for B.S.)**
There is a beautiful theoretical underpinning to computer science and this course explores it in depth. It looks at theoretical models underlying machines, languages, and algorithms, and amazingly, discovers that all of the models are essentially the same.
This course addresses the fundamental question of what is computable and discovers that some well-defined problems cannot be solved by any programmer, on any machine, in any language. It also investigates some problems that, although they can be solved, can never be solved efficiently. In addition, the class learns how to identify such problems. It is handy before you spend time trying to come up with an efficient solution to know that no such solution exists.
Offered each spring semester.
This course is taught by all computer science faculty.
Comments from Previous Students:
- "This course made clearer concepts from other computer science courses."
- "Great course. It was really neat to see how everything came together amazingly."
- "I loved this course! I especially appreciated it after I took the subject test because my good knowledge of context-free grammars etc. is what saved me on the test."
- "This class was simply amazing! I carefully cherish my textbook as a bible of computer science. I feel nostalgic every time I pick it up from the shelf."
- "Important subject matter for any CS major."
- "By far my favorite class in CS. But of course, what would one expect from a math major?"
- "Definitely the most difficult class, but also the most interesting."
- "This was my absolute favorite class. The logical problem solving structure of languages and machines was right up my ally. Lots of fun."
This course examines the theoretical foundations of Computer Science. It studies the relationship between finite-state machines and various language models. Computability theory is also studied. Prerequisite: Computer Science 112 or 114, and 250.
Two Credits Staff Spring Semester