CS 330: Formal Methods and Models, Section 002, Fall 2021

Course Overview

Course Description

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

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 and Outcomes
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, prove program correctness for simple programs, and solve problems in first-order logic.
Will be able to solve problems in elementary machine models: designing finite-state automata, pushdown automata 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.


Office Hours
All lectures and office hours will meet in person. My office hours should be viewed as study sessions. All are welcome at the same time! I'll take questions and we'll work through problems together. For students that expect to struggle with the material, I strongly encourage you to attend at least one, and preferably both hours each week. To speak to me privately, please email me ahead of time, and I'll reserve some time for a private discussion, likely at end of office hours.

MSFT Teams
I will answer all questions on MSFT Teams, rather than by email. I realize that some posts need to be private, but when in doubt, I encourage you to make your posts public! Everyone will benefit from your questions, and I prefer that we all learn from them. Generally, I'm not that worried about questions that give hints. (Within reason.)

Quizzes, homeworks and exams will all be submitted through Gradescope. You can find gradescope through Blackboard: click on Tools, then gradescope. You should also be able to access it directly from the gradescope website, if you use your GMU login. When submitting an assignment, please mark each question with the appropriate question number, as this makes grading much easier.

I will release the assignments on overleaf. This is a web-based platform for writing latex documents. You do not need special software, and I will not insist that you use latex to write your answers. You can simply view the PDF from the webpage, and submit answers to Gradescope in whatever format you like. However, I encourage you to use latex - it is fairly easy, and produces nice PDFs. To do that, just copy the project that I've shared, and edit.

Course Requirements

Quizzes -- 10%
Homeworks -- 30%
Exams -- 60%
Of two exams the highest score will count 35%, and the lowest 25%.

Homework will be assigned each week. The two lowest homework grades 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 are short: 1-3 questions, multiple choice or fill-in-the-blank. You will need a laptop or phone to answer the questions. The lowest 2 quiz scores will be dropped. 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.

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 will focus on the 2nd half of the semester, but may also include some material from the 1st half.
The midterm is Tuesday, October 5th, in class.
The final is Tuesday, 12/14, 1:30-4:15pm.

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, if you are meeting virtually. This semester, I believe it is also OK to communicate by email. Note, if you do it earlier in the semester, you will be more likely to connect with your adviser, and you will have more time to correct any problems. If you wait until the last week, your adviser might not be available. Students not fulfilling this requirement will receive an Incomplete grade. (Non-majors are not included.)

Resources: Inference Rules

Tentative Schedule

Week Topics, Slides and Video Links Chapter/Parts Homework
8/24 Introduction, Propositional Logic and Proofs 1-2 HW1 due 9/2
8/31 Propositional Logic and Proofs 3 HW2 due 9/9
9/7 Predicate Logic and Mathematical Induction 4 HW3 due 9/16
9/14 Predicate Logic and Mathematical Induction 5 HW4 due 9/23
9/21 Program Verification 6 HW5 due 10/5
9/28 Program Verification and Review 6
10/5 Exam 1. And Regular Expressions and Grammars 7-8
10/12 (No class Tuesday.) Regular Expressions and Grammars 8
10/19 Regular Expressions and Grammars 8 HW6 due 10/28
10/26 RG from RE 8 HW7 due 11/4
11/2 Finite Automata 9 HW8 due 11/11
11/9 NFAs, pumping lemma 9 HW9 due 11/18
11/16 Pumping Lemma and CFGs 10, 11
11/23 (No class Thursday.) CFGs 11 HW10 due 12/2
11/30 NPDAsand Turing Machines, Computability 12
12/14 Final Exam. 1:30-4:15