Professor: Ivan Avramovic
Email: iavramo2-at-gmu.edu
Hours:
by appointment,
5321 Engineering Building
Assistants:
grader for this section -
Neeraj Lamba (nlamba2-at-gmu.edu),
4-5pm Tue / 11-noon Wed, 4456 Engineering Building
Prakhar Dogra (pdogra-at-gmu.edu),
3-4pm Tue / 12-1pm Fri, 4456 Engineering Building
Sivani Tadepalli (stadepal-at-gmu.edu),
10-noon Mon, 4456 Engineering Building
Jhanvi Rafalia (jrafalia-at-gmu.edu),
2-4pm Wed, 4456 Engineering Building
[UTA] Shayan Amirhosseni (samirhos-at-gmu.edu),
9-11am Mon, 4456 Engineering Building
Prerequisites:
CS211 and MATH125 (C or better in both)
Textbook:
Hamburger and Richards,
Logic and Language Models for Computer Science,
Third Edition
Webpage:
https://mason.gmu.edu/~iavramo2/classes/cs330s18.html
Resources:
https://mason.gmu.edu/~iavramo2/teaching.html
Schedule:
see below
Description
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.
Outcomes
-
Students will understand the concepts and relevance of logic,
formal languages and automata theory, and computability.
-
Students will be able to do mechanical formal proofs, program
correctness proofs and solve problems in first-order logic.
-
Students will be able to solve problems in elementary machine
models: designing finite-state, pushdown and turing machines.
-
Students will be able to solve problems in formal languages:
writing regular expressions, regular grammars, and context-free
grammars.
Topics
- Logical proofs
-
Propositional Logic (including truth tables; boolean algebra)
- Rules of Inference (proof by deduction)
- Mathematical Induction
- Predicate Logic (including quantifiers)
- Program Verification (including loop invariants)
- PROLOG programming
- Regular Languages and conversions:
- Regular Grammars
-
Finite Automata (including deterministic and non-deterministic
FAs)
- Regular Expressions
- Context-Free Languages
- Context-Free Grammars
- Push-Down Automata
- Turing Machines
Grades
- Homework: 0%
-
homework will be assigned weekly but not collected or graded
- Quizzes: 20%
- the lowest quiz score is dropped
- quizzes will be weekly (except when displaced by exams)
- Programming Assignment: 20%
- programs are penalized 10% off for every day they are late
-
PROLOG will be used for the assignment;
it will not be demanding in terms of number of lines of code,
but it will excercise some of the concepts learned in class
-
there will be no second assignment
- Exams (2): 30% + 30%
- exams are not cumulative
-
exams are closed-book, but one sheet (8.5"x11", 1-sided) of
hand-written or printed (original work only, no photocopies!)
notes is allowed; no copying note sheets from other students
Policies
-
please do not use laptops, cellphones, or similar electronic
devices during class without special permission
-
it is a departmental requirement that all undergraduate Computer
Science students taking CS330 must see their
advisor during the semester and submit
documentation of their visit; failure to do so will result in
an Incomplete grade
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.
Schedule
Week |
Date |
Topic |
Assignments/Notes |
week 1 |
Jan 22 |
Introduction; Mathematical Preliminaries,
Sections 1.1-1.6
|
|
|
Jan 24 |
Propositional Logic, Sections 2.1-2.6
|
HW 2.4, 2.6, 2.7, 2.10a, 2.11 |
week 2 |
Jan 29 |
|
|
|
Jan 31 |
Proofs by Deduction, Sections 3.1-3.7
|
Quiz 1 (Ch 2), HW 3.8, 3.9, 3.11 (2nd-6th) |
week 3 |
Feb 5 |
|
|
|
Feb 7 |
Predicate Logic, Sections 4.1-4.5
|
Quiz 2 (Ch 3), HW 4.1, 4.3, 4.7, 4.8a,b |
week 4 |
Feb 12 |
|
|
|
Feb 14 |
Mathematical Induction, Sections 5.1,5.2,5.4,5.5
|
Quiz 3 (Ch 4), HW 5.2-5.4, 5.6 |
week 5 |
Feb 19 |
|
|
|
Feb 21 |
Program Verification, Sections 6.1-6.4
|
Quiz 4 (Ch 5), HW 6.2-6.6 |
week 6 |
Feb 26 |
|
|
|
Feb 28 |
PROLOG, Sections A.1-A.8
|
Quiz 5 (Ch 6) |
week 7 |
Mar 5 |
|
|
|
Mar 7 |
Midterm review;
Sample midterm
|
Quiz 6 |
week 8 |
Mar 12 |
No class |
Spring Break |
|
Mar 14 |
No class |
|
week 9 |
Mar 19 |
Midterm covers material from chapters 1-6; No PROLOG |
Midterm |
|
Mar 21 |
Class cancelled due to weather |
|
week 10 |
Mar 26 |
Language Basics; Regular Languages, Chapter 7 + Sections 8.1-8.4
|
HW 7.4, 7.5, 7.12, 7.15, 8.2, 8.3, 8.6 |
|
Mar 28 |
|
Program
due April 1st, midnight
|
week 11 |
Apr 2 |
Regular Expressions; Regular Grammars, Sections 8.4, 8.6, 8.7
|
Quiz 7 (Langs), HW 8.8, 8.9, 8.11, 8.12 |
|
Apr 4 |
|
|
week 12 |
Apr 9 |
Regular Grammar Conversions, Sections 8.8,8.9
|
Quiz 8 (REs/RGs), HW 8.14, 8.15 |
|
Apr 11 |
|
|
week 13 |
Apr 16 |
Finite Automata, Sections 9.1-9.4,9.8
|
Quiz 9 (RGs), HW 9.4, 9.8, 9.16a, 9.17 |
|
Apr 18 |
|
|
week 14 |
Apr 23 |
Nondeterministic Finite Automata; Properties of Regular Languages, Sections 9.5-9.7
|
Quiz 10 (DFAs), HW 9.5, 9.6, 9.25 |
|
Apr 25 |
|
|
week 15 |
Apr 30 |
Context-Free Grammars, Sections 10.1-10.4
|
Quiz 11 (NFAs), HW 10.1, 10.2, 10.7 |
|
May 2 |
|
|
-- |
May 8 |
Make-up class; Pushdown Automata; Turing Machines, Sections 11.1,11.2,12.2
|
Quiz 12 (Ch 10) |
|
May 14 |
Final covers material from chapters 7-10;
Sample final
|
Final Exam, 1:30-4:15pm |