CSCI E-15 Web Server Frameworks with Laravel/PHP

Project 1


For this first project you will create a basic string-processing application.


The goal of this project is to:

Note: Consider this first project a “warm-up” for the semester. For Projects 2 and 3 you’ll have the opportunity to build an application with greater utility/creativity.

String processors

1. (Required) Is palindrome?

Indicates whether the input string is a palindrome (same forwards and backwards). Case insensitive. Non-alphabetic characters are ignored.

Example strings and results:

"racecar" => Yes
"Racecar" => Yes
"racecar!" => Yes
"!racecar!" => Yes
"Hello World" => No

2. (Required) Vowel count

Indicates a count of how many vowels (aeiou) are in the input string. Case insensitive.

Example strings and results:

"the quick brown fox jumps over the lazy dog" => 11
"Hll Wrld" => 0
"AeIoU" => 5

3. (Optional) Letter shift

Processes an input string such that each letter is shifted +1 position in the alphabet.

So a becomes b, b becomes c, [...], z becomes a.

Capitalization should be retained so A becomes B, B becomes C, [...], Z becomes A.

Any non-alphabetic characters should be left as is.

Example strings and results:

"The zoo is open" => "Uif app jt pqfo"
"foobar@1" => "gppcbs@1"
"aAb" => "bBc"

4. (Optional) Create your own...

Design one additional processor that is similar in concept to the above tasks in that it provides some calculation and/or takes some input and produces some altered result.


This project will be submitted/due with your Week 3 assignment; in that assignment I will have a question asking you for the Github URL to your project.

All final commits should be made before you submit your Week 3 assignment.

Small commits made after the assignment deadline (e.g. a small bug fix, a typo correction, etc.) will be considered when grading, but any notable commits will not.


Getting help

You are allowed to post questions about this project/your code in the forum. You are also allowed to utilize the PHP documentation, Google, StackOverflow, etc. to assist with project development/troubleshooting.

I will elaborate on this policy in lecture and explain how this can be done while still ensuring everyone has the opportunity to challenge themselves and get the most out of the process of building this project.