CS301
Foundations of Computer Science

Spring 2002
Department of Computer Science
Link to Colorado State University Home
 Page

Contents (links to sections on this page)


What's New?

April 29: For Assignment 10, the programming assignment, exercise 2 is not required, but can be done for extra credit.

April 25: An example makefile has been added to the Assignment 10 description (near the end). See the On-Line Resources for CS253 for more help with makefiles.

April 24: Assignment 12 has been posted. Exercise 16 was included in class, but it is no longer part of this assignment.

to Contents


Course Description

In this class you will learn how to study computation, not in terms of semiconductors and integrated circuits, but in terms of abstract models of computation. The investigation of what these models of computation can and cannot do leads us to a theoretical understanding of the fundamentals of computation. The tools we will use include formal languages, finite state automata, pushdown automata, turing machines, and methods for measuring the complexity of algorithms. Prerequisites for this course are CS200, CS/M201 or CS/M166, M161, M229.

to Contents


Time and Place

Class meets every Monday, Tuesday, Wednesday and Thursday, 10:00 - 10:50, in Engineering 120.

to Contents


Instructors

Instructor: Chuck Anderson

Graduate Teaching Assistant: Devon Simmonds

to Contents


Text Books

to Contents


Grading

Homework Exercises 40%
Programming Assignments 15%
Quizzes 10%
Midterm Exam 15%
Final Comprehensive Exam 20%

For homework exercises, you will have two chances to get the correct answers. For this we will follow the following policy. You must turn in your assignment by the due date and time. You will receive your graded assignment within one week. From the day that we return the graded homework to the class, you will have one additional week to fix your errors. After one week, you must turn in your corrected version and the original, graded version. You will only get credit for the exercises which you attempt to answer on your original version. For example, if you answer only the first half of the exercises for a particular assignment, and provide answers for all exercises in your second attempt, you will only get credit for the first half of the exercises. So, it is very important that you attempt to answer all questions for first hand-in.

Be sure you read the Computer Science Department's Student Information Sheet. It explains the department's policies regarding late assignments and other important things.

to Contents


On-Line Resources

Pumping Lemma

Regular Expressions

Susan Rodger at Duke University

Some fun, interactive tools in Java to build and simulate automata, Turing Machines, and other things.
You can run a local version that allows you to save your automata you build.
To run it, type
      ~cs301/jflap/run
Once it starts, read how to use it by clicking on Help in the menu bar.
You can run the example from class by doing
      ~cs301/jflap/run -tm ~cs301/jflap/examples/class-ss.TM

Interactive Animation of Finite-State Automata, by Thomas Dunn

Includes Java source.

Alan Turing Internet Scrapbook,

Includes a Turing Machine simulation in Java

Turing Machines as Java Applets

Miscellaneous

to Contents