COSC 312 — Algorithm Analysis and Automata
Spring 2013 (Section 1)


Contact Information

Bruce MacLennan, PhD
Phone: 974-0994
Office: Min Kao 550
Hours: WF 3:30–5:00 or make an appointment

Teaching Assistants:

Derek Rose
Office: Min Kao TBA
Hours: TBD or make an appointment
Email: derek at

Yin Lei

Office: Min Kao TBA
Email: ylei6 at

MWF 12:20–1:10, Min Kao 404

This page:

Catalog Description

Counting and combinatorics, with applications to the analysis of algorithms. Introduction to finite automata and regular languages, and to pushdown automata and context free grammars.


COSC 311.


There are two required textbooks for COSC 312:


We will spend about two weeks on each of these topics:

  1. Finite Automata (S[ipser] 1.1–2)
  2. Regular Expressions and Languages (S 1.3–4)
  3. Context-free Grammars and Languages (S 2.1)
  4. Pushdown Automata (S 2.2–3)
  5. Turing Machines and Other Models of Computation (S 3.1–3)
  6. Uncomputable Problems (S 4.1–2; see also Shaffer §17.3.2)
  7. Complexity (S 7.1–4; see also Shaffer ch. 17)
  8. Algorithm Analysis (Shaffer §2.4, chs. 3, 14)


Basics Of Counting

: Most of the “basics of counting” are covered in COSC 311, and so COSC 312 will cover the following:

Learning Outcomes

  1. Analyze a problem to create relevant recurrence equations or to identify important counting questions.

Algorithm Analysis


Learning Outcomes

  1. Explain the use of Big Oh, omega, and theta notation to describe the amount of work done by an algorithm.
  2. Use Big Oh, omega, and theta notation to give asymptotic upper, lower, and tight bounds on time and space complexity of algorithms.
  3. Determine the time and space complexity of simple algorithms.
  4. Deduce recurrence relations that describe the time complexity of recursively defined algorithms.

Basic Automata Theory


Learning Outcomes

  1. Design a finite state machine to accept a specified language
  2. Design a regular expression to formally specify a language
  3. Describe how finite state machines and regular expressions are related
  4. Design a pushdown automata to accept a specified language
  5. Design a context free grammar to formally specify a language
  6. Describe how pushdown automata and context free grammars are related
  7. Describe the difference between a finite state machine and a pushdown automata and describe why a pushdown automata can accept more languages than a finite state machine.



Learning Outcomes

  1. Describe a Turing machine and explain the significance of a Turing machine.
  2. Explain why a Turing machine is more powerful than a pushdown automata.
  3. Create simple programs using a Turing machine.
  4. Explain what it means for a function to be uncomputable.
  5. Describe the Church-Turing Thesis and explain its significance.
  6. Describe the halting problem and explain its significance.
  7. Provide a proof that the halting problem is undecidable.

Homework and Tests

Tentative Test Schedule

Final Exam and Grading

SUBJECT TO CHANGE! It is anticipated that your grade will be 50% Homework + Tests and 50% Final Exam. However, if you are satisfied with your Homework + Test average, you will not have to take the final exam. Furthermore, if your Final Exam grade is better than your Homework + Tests average, then it will count for 95% of your grade.

The Final Exam is 12:30–2:30, Tues. May 7.  The cumulative Final Exam will be two hours worth of questions similar in difficulty to those on the Tests.

For Students with Disabilities

The Office of Disability Services and the Campus Disability Monitors have asked us to pass this statement along in our syllabi:
Students who have a disability that require accommodation(s) should make an appointment with the Office of Disability Services (974-6087) to discuss their specific needs as well as schedule an appointment with me during my office hours.


Return to MacLennan’s home page

Send mail to Bruce MacLennan /

Valid HTML 4.01!This page is
Last updated: 2013-04-26.