Project Title: String Validation using Finite Automata
Objective:
To design and implement a simple finite automaton (DFA or NFA) to validate strings for a given
pattern or rule (e.g., email addresses, binary strings divisible by 3, or valid identifiers in
programming).
Instructions:
1. Project Overview:
Define a string pattern or rule (e.g., validate binary strings ending with "101").
Design a deterministic or non-deterministic finite automaton (DFA/NFA) that
accepts strings following this rule and rejects others.
Implement the automaton in a simple program that takes a string as input and
outputs whether it is valid or invalid.
2. Deliverables:
Documentation:
a. Problem definition (e.g., what pattern the string must follow).
b. Explanation of the automaton design, including state diagrams and transition
tables.
c. Test cases demonstrating valid and invalid strings.
Program:
a. A simple program that implements the automaton.
b. Program must be user-friendly and handle invalid input gracefully.
Presentation:
a. A 3-5-minute demonstration explaining the automaton and showing the
program in action.
3. Submission Guidelines:
o Submit all deliverables as a ZIP file.
o Include a README file explaining how to run the program.
o Deadline: May 24, 2025
Rubrics:
Needs
Excellent (10 Satisfactory (6
Criteria Good (8 points) Improvement (4
points) points)
points)
Clearly defined Well-defined
Problem Simple or lacks Vague or poorly
string pattern or with minor
Definition clarity. defined rule.
rule. ambiguities.
Accurate and Mostly accurate Errors in state State diagram is
Automaton
complete state with minor diagram or unclear or
Design
diagram. errors. incomplete. incorrect.
Fully functional, Partially Non-functional or
Program Functional with
user-friendly, error- functional or poorly
Implementation minor issues.
free. lacks usability. implemented.
Covers basic
Comprehensive and Minimal test No meaningful
Test Cases cases, lacks
covers edge cases. cases. test cases.
edge cases.
Engaging, well- Somewhat
Clear and Unclear or lacks
Presentation structured, and disorganized or
structured. structure.
concise. unclear.
Example Ideas for String Patterns per Group:
1. Binary strings divisible by 3.
2. Valid email addresses.
3. Strings starting with "a" and ending with "b."
4. Valid identifiers in a programming language (e.g., letters followed by alphanumeric
characters).
5. Strings that contain "010" as a substring.