Assignments and Evaluation

All students will be graded by the following components:

Component Weight Deadline Submission
Assignment 1 5% Thursday, January 25th by start of tutorial session Gradescope
Assignment 2 5% Thursday, February 8th by start of tutorial session Gradescope
Assignment 3 5% Thursday, February 29th by start of tutorial session Gradescope
Assignment 4 5% Thursday, March 28th by start of tutorial session Gradescope
Assignment 5 5% Thursday, April 4th by start of tutorial session Gradescope
Midterm test 25% Thursday, February 15th, during Tutorial Session In class.
Final Exam 50% Monday, April 15, 2:00pm-4:00pm In person

Assignment Formatting Requirements

You must use a software tool for any diagrams involving automata. Hand-drawn automata diagrams will not be accepted.

How to draw Finite State Machines

There are several options for drawing automata in software. Here are two.

Option 1: LaTeX with TiKZ

LaTeX is a typesetting markup language. It has a bit of a learning curve, but if you want to produce documents like a real computer scientist or mathematician, this is for you.

If you don't want to install LaTeX on your local machine, Overleaf provides a cloud-based interface, and is a common choice for many graduate students.

TiKZ is a LaTeX package for drawing diagrams. Here's a good tutorial on how to draw automata.

Option 2: Graphviz Online Editor

If you want the "easy-button" option, the online Graphviz editor is for you.

Here's an example of a deterministic finite automaton on the alphabet {0,1} that accepts all strings that contain one or more 1's:

digraph finite_state_machine {
	node [fontname="Helvetica,Arial,sans-serif"]
	edge [fontname="Helvetica,Arial,sans-serif"]
	rankdir=LR;

	#Define final/accepting states
	node [shape = doublecircle]; b;
	node [shape = circle];
	
	#Define initial state
 	start -> a;
	
	#Define state transitions
	a -> a [label = "0"];
	a -> b [label = "1"];
	b -> b [label = "0,1"];
}