CS 330: Formal Methods and Models, Section 002, Spring 2017

Course Overview

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

This course is an introduction to two kinds of formal systems - languages 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. The programming assignments provide practical experience with some theoretical topics.

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.

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.

Course Requirements

Quizzes -- 20%
Programming assignment -- 20%
Exams -- 60%
Of these exams the highest score will count 35%, and the lowest 25%.

Homework will be assigned each week, but it is ungraded and will not be collected. However, it will be hard to do well in this class if you do not do the homework, so you are strongly encouraged to do all of the problems, and to ask questions if you do not understand any of them.

Quizzes will be given in class, typically every other class period. They will cover the material from that week's homework. The lowest quiz grade will be dropped.

Programming Assignments
There will be a programming assignment in Prolog. Collaboration on this assignment is NOT allowed. Receiving direct contributions to the code and submitting them is considered a violation of the Honor Code. (See here for the GMU and Computer Science guidelines.) Programs will be marked down 25% each class they are late; in particular, they are marked down 25% after the due date.

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.

Use of electronics in class
I challenge you to cut yourself off. You will find that you learn a lot more, and retain the information better if you remove the distraction!

Other Policies
It is a departmental requirement that students in CS330 must see their advisor and discuss their degree progress. Students not fulfilling this requirement will receive an Incomplete grade. (Non-majors and graduate students are not included.) The visit must be documented by a signed note or email from your advisor.


Tentative Schedule

Week Topic Chapter/Parts Homework
1/23 Introduction, Propositional Logic and Proofs 1-2 hw1 (posted 1/25)
1/30 Propositional Logic and Proofs 2-3 hw2 (posted 2/1)
2/6 Predicate Logic and Proofs 4 hw3 (posted 2/9)
2/13 Predicate Logic and Proofs 5 hw4 (posted 2/16)
2/20 Program Verification 6 hw5 (posted 2/23)
2/27 Program Verification 6  
3/6 Review, and Exam #1    
3/13 Spring Break    
3/20 Regular Expressions, and Grammars 7-8 hw6 (posted 3/23)
3/27 Finite Automata, Regular Expressions 8-9 hw7 (posted 3/29)
4/3 Finite Automata, Regular Languages 9  
4/10 Finite Automata, Regular Languages 9 hw8 (posted 4/13)
prolog assignment (posted 4/18)
4/17 Context-Free Grammars & PDAs 10-11, notes on PDAs Quiz 8 (due 4/24)
4/24 Turing Machines & Computability 12 Quiz 9 (due 5/1)
5/1 Turing Machines & Computability 12 Quiz 10 (due 5/8)