91.304 - Foundations of Computer Science - Spring 2008
Dr. Haim Levkowitz
Associate Professor of Computer Science
University of Massachusetts Lowell, Lowell, MA

Catalog Description and Course Goals

Catalog description: A survey of the mathematical foundations of Computer Science.  Finite automata and regular languages.  Stack Acceptors (pushdown automata) and Context-Free Languages.  Turing Machines, recursive and recursively enumerable sets.  Decidability.  This course involves no computer programming.  Prerequisite: 92.322 (Discrete Structures II).

Course goals: There are two purposes to this course. One is to give you an understanding of fundamental concepts in computing, including common models for computation such as finite automata and Turing machines. There will be some effort to convince you that this technology is important for implementing a variety of the latest types of systems and software. The other goal is to give you a sense of how to reason formally about computing, how to prove theorems about computation, and how to tell a rigorous proof from wishful thinking.

Course Outcomes

To be successful in this course, you must be able to perform the following tasks:

Prerequisites

Discrete Math I (92.321) and Discrete Math II (92.322). You are expected to know how to use various basic proof techniques, including proof by contradiction, proof by cases, and mathematical induction. You will most likely find this course difficult if you have insufficient mathematical preparations.

Although no programming in any particular programming language will be involved in this course, programming experience is necessary to take this course.

Many students find this course challenging and demanding. It covers a lot of material, and should not be taken during a busy semester. I will be happy to help you evaluate your preparedness for this course.


Back to syllabus
Last updated: Thursday, 24-Jan-2008 12:50:24 EST
© Dr. Haim Levkowitz (haim@cs.uml.edu)