COMP 455: Models of Languages and Computation