UMass Lowell COMP 3040
Foundations of Computer Science 
This page is a ``living document''; that is, updates will occur during the semester, and the ``official'' contents are what is in the online version.
Description and Course Goals
Course Outcomes
Course Personnel and Office Hours
Prerequisites
Course Texts
Course Outline
Homework
Exams
Grading Policy
Description: An introduction to the mathematical foundations of computing. Topics include finite automata and regular languages/regular expressions; pushdown automata and contextfree grammar; computability and Turing machines, recursive and recursively enumerable sets, decidability; time and space complexity and NPcompleteness. Prerequisite: MATH 3220 (Discrete Structures II) and proficiency of programming using a highlevel language.
Course goals: (1) Understand fundamental concepts in computing, including common models for computation ranged from no memory to unbounded stack memory to the most general form of memory, as well as asymptotic resourcebounded computation models. (2) Learn how to reason about computing in the setting of Turing machines, how to prove theorems about computation, and how to tell a rigorous proof from wishful thinking.
To be successful in this course, you must be able to perform the following tasks:
· Understand finite state automata, pushdown automata, and Turing machines in terms of memory resources
· Describe basic properties of languages accepted by these models
· Understand basic construction (programming) techniques of these models
· Read and write regular expressions and contextfree grammars
· Write a convincing formal proof about basic properties of regular languages, contextfree languages, and recursively enumerable languages
· Recognize a bogus proof
· Put algorithmic problems in relation to computational models
· Understand the concept of undecidability and understand reducibility
· Understand resourcebounded measures and NPcompleteness
Person 
Role 
Office 
Phone 
Office Hours 
Email 
Jie “Jed” Wang 
Instructor 
DAN 333 
X3649 
W 1:30pm2:30pm or by appointment 
wang@cs.uml.edu 
TBA 
TA 

Discrete Math II (MATH 3220) and proficiency of a highlevel programming language. You should be familiar with various basic proof techniques such as proof by contradiction, proof by construction, and proof by induction.
Michael Sipser, Introduction to the Theory of Computation, 3^{rd}
edition, Cengage Learning, 2013, ISBN13: 9781133187790. The UML
Bookstore has it. You may also get an ecopy from the publisher for a cheaper
price.
Week 
Topics 

1 
Ch. 0 
Preliminaries: sets, strings, languages, classes, proof techniques 
23 
Ch. 1 
Computing with small memory: finitestate automata and regular expressions 
45 
Ch. 2 
Computing with unbounded stack memory: pushdown automata and contextfree grammars 
67 

Test 1 (cover Chapters 12) 

Ch. 3 
Computing with unbounded tape memory: Turing machines and ChurchTuring Thesis 
8 
Ch. 4 
Decidability and Halting Problem 
9 
Ch. 5 
Reducibility and undecidable problems 
10 
Ch. 6 
The Recursion Theorem, decidability of logical theories, Turing reducibility, and information theory 
1112 

Test 2 (cover
Chapters 36) 
Ch. 7 
Timebounded computing: P and NPcompleteness 

1314 
Ch. 8 
Spacebounded computing: PSPACE and NLcompleteness 
15 

Test 3 (cover Chapters 78) 
You must keep the following two goals in mind when writing up your solutions: Give evidence that you have put real thought into the problem, and convince the reader that your solution is correct and that you know why.
As a programmer, you have some experience with this sort of writing: an effective program must be written for both a compiler and a human reader. Similarly, solutions to your problems must be correct in the sense of solving the stated problem, but they also have to be comprehensible to the grader.
As with any writing, the first draft of your solution is usually unpresentable. All of the pieces may be there, but they tend to be chaotically assembled. The single most important thing you can do to make your solutions presentable is to rewrite them after you have discovered why they are correct, and then to throw away (or at least tuck away) your initial draft.
Be careful to realize that this emphasis on presentation has nothing to do with whether English is your native language. A wellwritten solution starts by stating assumptions and then works towards a clearly defined goal, emphasizing the overall direction and omitting the superfluous.
Homework assignments will generally be due on Thursdays at the beginning of class. No late homework assignments will be accepted.
There will be three quizzes. The exact quiz dates will be announced in class. No early quizzes will be given. Quizzes may be taken after a scheduled date ONLY for documented emergencies. It is the student's responsibility to obtain appropriate documentation.
Grades measure accomplishment. Effort and enthusiasm will help you achieve a better grade. Your grade in this course will be made up of homework assignments and tests. No incomplete grades will be given without proofs of truly extenuating personal circumstances.
Listed below are the weights of the four components:
Homework assignments 
25% 
Test 1 
25% 
Test 2 
25% 
Test 3 (given during final exam week) 
25% 
Class attendance is important. You are responsible for all scheduling and other announcements made in class. The likelihood of failing the course is subsequently increased if you fail to attend class regularly.
The format of this course will be lectures peppered with questions as they arise. The lectures will include working through sample problems. Certain course material will only appear during lecture, and most announcements will only be made in class.
Students should be aware of, and adhere to, the University’s rules on academic dishonesty. These rules appear in the Undergraduate Catalog.
The basic presumption is that the work you do is your own.
Occasionally, especially when working on difficult problems or writing programs (but never on quizzes or exams or projects!), it may be necessary to ask someone for help. You are permitted to do so, provided you meet the following three conditions.
1. You write the work yourself. That is, you don't simply copy or type in material that someone else wrote or simply change a few notations and words of someone else’s work. Writing has styles and it is an individual activity.
2. You understand the parts of the assignment you got help with. (This mostly follows from the first rule; if you don't understand it, the chances you can write it yourself are slim.)
3. You acknowledge the help on the work you hand in.
Any other assistance by another person constitutes a violation of the honor code and will be treated as such. This applies to the providers as well.
You will automatically receive a zero grade
for your work on the first HonorCode violation and receive a zero for the
entire course on the second violation.
I will not deduct credit for small amounts of acknowledged assistance. Even working as a team on one of several problems in a problem set may not hurt your grade, as long as all members of the group acknowledge their collaboration. Such shared interest can be beneficial to all concerned. I do reserve the right to give less than full credit in circumstances where it appears that there has been largescale division of labor, and you are not getting as much learning out of the assignment as you should. However, as long as you acknowledge your sources, you will not get into HonorCode trouble.
If you have any questions about what this policy means, please discuss the matter with the instructor.