**Prerequisites**

CS211 and Math 125 (C or better in both).

**Content**

This course is an introduction to two kinds of formal systems -
languages (which are treated as sets of strings) and logics - with important applications to computer
science. The study of formal languages underlies important aspects of
compilers and other language processing systems, as well as the theory
of computation. Various systems of logic and automatic reasoning are
put to use in artificial intelligence, database theory and software
engineering. The entire course will give you practice in precise
thinking and proof methods that play a role in the analysis of
algorithms.

**Objectives**

Will understand the concepts and relevance of logic, formal languages and automata theory, and computability.

Will be able to able to do mechanical formal proofs, program
correctness proofs and solve problems in first-order logic.

Will be able to solve problems in elementary machine models: designing finite-state, pushdown and turing machines.

Will be able to solve problems in formal languages: writing regular expressions, regular grammars, and context-free grammars.

**Textbook**

Title: Logic and Languages Models for Computer Science, 3rd edition.

Authors: Dana Richards and Henry Hamberger

Available at the campus bookstore

**Note** that the 3rd
edition is substantially different from the 2nd.

**Grading**

Quizzes -- 10%

Homeworks -- 30%

Exams -- 60%

Of these exams the highest score will count 35%, and the lowest 25%.

**Homework**

Homework will be assigned each week. The lowest homework
grade will be dropped.

__Suggestions:__ It will be very hard to do well
in this course if you do not do all of the homework by yourself,
including any optional problems.
You are strongly encouraged to
do *all* of the problems, and to ask questions, in
class and in office hours, when you do not
understand any of them. Don't start the homework the day
before it is due!

**Quizzes**

Quizzes are short: 1-3 questions, multiple choice or
fill-in-the-blank. You will need a laptop or phone to
answer the questions, as the results will be tallied immediately.
Each single quiz is worth < 1% of your
grade. They will be given at the start of class (don't be
late!), typically every other
class period. They will cover the previous 1 or 2 lectures,
and mainly serve to help me gauge what the students have
understood, and what needs further explanation.

**Exams**

All testing is closed book, and notes are not permitted.
The two exams, including the final, each cover about a half of the
semester. The final is not cumulative.

The midterm is Wednesday, March 6th.

The final is
Wednesday, May 8th at 1:30.

**Use of electronics in class**

You will need either a laptop or a phone in order to complete the
quizzes in class. If you don't own either of these devices, you can
submit your quizzes on paper. Other than for use with quizzes, I
encourage you to leave your devices off. You
will find that you learn a lot more, and retain the information better,
if you remove the distraction!

**CS330 Adviser Forms**

It is a departmental requirement that students in CS330 must see their
adviser and discuss their degree progress. The form can be downloaded
here. Be
sure to fill out the form **before** seeing your adviser. Also, if
you do it earlier in the semester, you will have a much shorter wait
to see your adviser, and you will have more time to correct any
problems. Students not fulfilling
this requirement will receive an Incomplete grade. (Non-majors and
graduate students are not included.)