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 on-line version.



Homework Assignments

Table of Contents

Description and Course Goals
Course Outcomes
Course Personnel and Office Hours
Course Texts

Course Outline
Grading Policy

Honor-Code Policy

Description and Course Goals

Description: An introduction to the mathematical foundations of computing. Topics include finite automata and regular languages/regular expressions; pushdown automata and context-free grammar; computability and Turing machines, recursive and recursively enumerable sets, decidability; time and space complexity and NP-completeness. Prerequisite: MATH 3220 (Discrete Structures II) and proficiency of programming using a high-level 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 resource-bounded 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.

Course Outcomes

To be successful in this course, you must be able to perform the following tasks:

·       Understand finite state automata, push-down 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 context-free grammars

·       Write a convincing formal proof about basic properties of regular languages, context-free 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 resource-bounded measures and NP-completeness

Course Personnel, Time, and Place





Office Hours


Jie “Jed” Wang


DAN 333


W 1:30pm-2:30pm

or by appointment





Discrete Math II (MATH 3220) and proficiency of a high-level programming language. You should be familiar with various basic proof techniques such as proof by contradiction, proof by construction, and proof by induction.

Required Text:

Michael Sipser, Introduction to the Theory of Computation, 3rd edition, Cengage Learning, 2013, ISBN-13: 978-1-133-18779-0. The UML Bookstore has it. You may also get an e-copy from the publisher for a cheaper price.

Course Outline (tentative)




Ch. 0

Preliminaries: sets, strings, languages, classes, proof techniques


Ch. 1

Computing with small memory: finite-state automata and regular expressions


Ch. 2

Computing with unbounded stack memory: pushdown automata and context-free grammars



Test 1 (cover Chapters 1-2)


Ch. 3

Computing with unbounded tape memory: Turing machines and Church-Turing Thesis


Ch. 4

Decidability and Halting Problem


Ch. 5

Reducibility and undecidable problems


Ch. 6

The Recursion Theorem, decidability of logical theories, Turing reducibility, and information theory



Test 2 (cover Chapters 3-6)

Ch. 7

Time-bounded computing: P and NP-completeness


Ch. 8

Space-bounded computing: PSPACE and NL-completeness



Test 3 (cover Chapters 7-8)

Homework Assignments

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 well-written 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.

Grading Policy

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


Test 1


Test 2


Test 3 (given during final exam week)



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.  

Honor-Code Policy

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 Honor-Code 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 large-scale 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 Honor-Code trouble.

If you have any questions about what this policy means, please discuss the matter with the instructor.