CS 330-003: Formal Methods and Models
George Mason University Department of Computer Science
Spring 2020 - 1:30-2:45pm Mon/Wed - 1200 Merten Hall
Instructor: Ivan Avramovic
Email: iavramo2-at-gmu.edu
Hours: Monday/Wednesday 11:30-12:30, or by appointment, 4609 Engineering Building

Negar Nejatishahidin, nnejatis-at-gmu.edu (grader for this section)
Michael Crawshaw, mcrawsha-at-gmu.edu
Bahman Pedrood, bpedrood-at-gmu.edu
Chloe Andresol, candreso-at-gmu.edu (UTA)

Prerequisites: CS211 and MATH125 (C or better in both)
Textbook: Hamburger and Richards, Logic and Language Models for Computer Science, Third Edition

Webpage: https://cs.gmu.edu/~iavramo2/classes/cs330s20.html
Piazza: https://piazza.com/ for questions and discussion
Schedule: see course webpage


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.


  1. Students will understand the concepts and relevance of logic, formal languages and automata theory, and computability.
  2. Students will be able to do mechanical formal proofs, program correctness proofs and solve problems in first-order logic.
  3. Students will be able to solve problems in elementary machine models: designing finite-state, pushdown and turing machines.
  4. Students will be able to solve problems in formal languages: writing regular expressions, regular grammars, and context-free grammars.



Honor Code

Programming assignments are an individual effort, no group work is allowed. This includes the sharing of test cases. Any direct contribution on a quiz, exam, note sheet or programming assignment will be treated as a violation of George Mason's Honor Code.