Posts

Module 11: Final Project Overview

For Module 11, the focus was on understanding the requirements for our final project, which combines everything we’ve learned throughout the course. The goal is to design and create a website that promotes and supports a local charity or volunteer organization. The project includes two main parts: the public front-end , which focuses on layout, visuals, and user experience, and the administrative back-end , which handles the functionality, things like data collection and connecting to a MySQL database through PHP. At this stage, the professor asked us to review the project instructions and post any questions we might have. Many students mentioned the broken example link and asked about domain setup and the level of complexity expected for both the front-end and back-end. Personally, I don’t have any major questions, as the requirements seem pretty clear. I plan to continue using my existing InfinityFree domain and simply create a new section or page dedicated to the final project. Tha...

Module 10: Inserting Data into MySQL with PHP

Link to my site:   http://drew-williams.infinityfree.me/Module10.html For this module, I connected my PHP code to my MySQL database on InfinityFree and used a basic HTML form to insert new records. The goal was to take data submitted from the form and insert it into the table I created in Module 9. I built a simple form that collects a user’s first and last name and sends it to a file called insert.php . Inside that file, I used PHP’s MySQLi extension to connect to the database. Once connected, I used a basic SQL statement to insert the form data into the users table. After uploading the files to my InfinityFree htdocs directory, I was able to submit data from the form and see the new record appear instantly inside phpMyAdmin. The easiest part was creating the form itself, the HTML side is always straightforward. The trickier part was confirming the exact credentials from InfinityFree (server name, username, password, and database name) since each one needs to match exactly. Once...

Module 9: Creating My First MySQL Table

For this module, I worked inside InfinityFree’s control panel and phpMyAdmin to create my first MySQL table. This was a simple assignment, but it’s a key piece of understanding how PHP and databases connect later on. My database is named module9_db , and I built a table called users with an auto-incrementing ID and two text fields for first and last names. Step 1 – Creating the Database I started in my InfinityFree account under MySQL Databases and clicked Create New Database . InfinityFree automatically adds its account prefix, so the final name looked like if0_39835771_module9_db. The process itself was straightforward, no configuration needed beyond giving it a name. Step 2 – Designing the Table in phpMyAdmin Next, I opened phpMyAdmin from the panel to design the table. I named it users and added three fields: id – INT(11), set as the Primary Key and Auto Increment firstname – VARCHAR(50) lastname – VARCHAR(50) Choosing the right data types was the main point here. INT is used for ...

Module 8: PHP Forms and GET vs POST

Link to my site:  http://drew-williams.infinityfree.me/Module8.html For this module, I created an HTML form that collects a user’s first name, last name, and email address. When the form is submitted, it sends the data to a PHP file on the server, which then displays the submitted information back on the page. I used the POST method for this form because it’s more secure and better suited for sending user input that shouldn’t be visible in the URL. I also reviewed the difference between $_GET and $_POST in PHP: $_GET sends data through the URL. You’ll see the variables appear in the query string, like  ?fname=Drew&lname=Williams . It’s fine for search queries or simple data you don’t mind being visible. $_POST sends the data in the body of the HTTP request, so it doesn’t appear in the URL. This makes it better for things like login forms or sensitive data. In my project, the PHP handler uses  $_POST  to grab each value, the...

Modules 6 & 7: PHP Functions and Strings

 Link to my site: http://drew-williams.infinityfree.me/Module7.php For these modules, I created a short PHP page that demonstrates both a custom function and a few string operations. I’ve used PHP before, but it was nice to revisit the basics and set something up from scratch on a hosted server. The function I wrote is called greet(). It takes a first and last name, combines them into a full name, and returns a greeting in uppercase. It’s simple, but it covers the main points from the assignment: parameters, concatenation, returning a value, and using a built-in string function (strtoupper()). Here’s the part I like about PHP, even though it’s an older language, it’s still extremely direct when you just want to manipulate text and send a response to the browser. For the strings part, I included a few examples using built-in PHP functions: strlen() to count the number of characters in a sentence, str_word_count() to count the words, and strpos() to locate a specific word in the stri...

Module 5: JavaScript Validation and Wireframe Design

Image
Link to my site:   http://drew-williams.infinityfree.me/Module5.html For this module, I worked on both web programming and web design. Web Programming: I created my own HTML contact form with fields for name, email, and age. To make it more interactive, I wrote a JavaScript validation script. The script checks that the name field is not empty, the email contains an “@” symbol, and the age entered is 18 or older. If the inputs don’t meet these conditions, the form displays error messages in red. If everything is valid, it shows a green success message. The easy part of this task was creating the basic form structure with HTML. The more challenging part was writing the validation logic so it gave clear and specific feedback for each error. Once I got the conditions right, it was satisfying to see the form respond dynamically when testing different inputs. Web Design: For the design portion, I created a wireframe that simply shows the current structure of my website, you could also ...

Module 4: Web Programming and Web Design

Image
Link to my site: https://drew-williams.infinityfree.me/Module3.html For the web programming section, I created my own JavaScript if/else condition. My script checks the current day of the week and then displays a different message depending on whether it’s a weekday or the weekend. The easy part was writing the basic structure of the condition. The harder part was remembering that getDay() returns numbers (0–6) instead of text like “Monday” or “Tuesday.” Once I figured that out, the condition worked correctly and displayed the right message on my page. I also fixed the broken example code from the assignment. The original code had the else statement placed incorrectly. After adding the missing curly brace, the script now runs properly and displays “Good day” before 6 PM and “Good evening” after 6 PM. For the web design section, I used Canva instead of Photoshop to create a simple test image. I downloaded it in JPG format. The process was pretty easy in Canva since it lets you export...

Module 3: Introduction to JavaScript and Web Design

Here’s the link to my updated site: http://drew-williams.infinityfree.me/Module3.html For this assignment, I started by testing the sample JavaScript code. The code worked as expected, it created three variables (price1, price2, and total) , added the first two numbers together, and displayed the result in the webpage. The object in this example is the document , and the variables are price1 , price2 , and total . Seeing the output appear on the page helped reinforce how JavaScript connects with HTML elements. I also read Chapters 2–4 of Eloquent JavaScript . These chapters went into more detail on program structure, functions, and how code flows in JavaScript. It was useful to see the fundamentals broken down step by step. The last part of the assignment involved creating an image in three formats: PNG, JPG, and GIF. I exported my test image (which is just a personal icon I developed for my professional portfolio) in all three and added them to my Module 3 page. After comparing th...

Module 2: Introduction to HTML, CSS, and FTP

Here’s the link to my website:  https://drew-williams.infinityfree.me/index.html For this assignment, I created my very first homepage for the course using HTML and CSS and uploaded it to InfinityFree using FTP. At first, figuring out the FTP process felt a little tricky, But I had used it in the past for another course so it was really just a matter of seeing how much I could remember. Using VS Code to write my HTML and CSS was straightforward. I enjoyed giving the site a bit more style so it looked more like a real webpage, with a header, navigation links, and a footer. Creating the Module3.html page and adding a simple JavaScript script to display some text, was pretty simple. Overall, the hardest part was just making sure my files transferred correctly with FileZilla, but once I saw the site live, it felt really rewarding. Now I feel more confident about uploading changes and expanding the site in future modules.

First Blog Entry

 Hello, This is my very first post for the class. I just set up my website on InfinityFree , and I’ll be using this blog to share my experiences as I go through the course. So far, getting the site set up was pretty straightforward, though it was my first time using InfinityFree. I’m already familiar with programming and web development since I’m majoring in Information Science with a focus on software engineering. I’ve done projects with HTML, CSS, JavaScript, and frameworks like React, but I’m excited to learn more about open-source web technologies in this class and to build things in a more structured way. I think one of the challenges for me will be making sure I balance design and functionality. I’m very detail-oriented, so I like my sites to not only work but also look polished. That said, I’m looking forward to practicing and seeing how the skills from each module stack up over the semester. For now, this site is up and running, and I’ll keep posting updates as I move t...

Python Fitness Tracker – Final Project

For my final project in Introduction to Python , I created a simple terminal-based fitness tracker that lets users log, save, and review their daily step counts. The app supports average step tracking, goal-setting, and daily progress check-ins, all handled through clean Python logic and stored persistently in a .csv file. I’ve always enjoyed running, biking, and staying active, so it felt natural to combine that interest with coding. Whenever I start a new project, I like to build around hobbies I already care about. In fact, I previously developed a workout website during a bootcamp, so this was a nice opportunity to expand on that idea and keep building something useful. Project Purpose & Structure The goal of this project was to explore real-world data tracking using Python, applying core concepts like: Classes Functions Modules File reading/writing User interaction in the terminal The fitness tracker collects data either by automatically using today’s date , ...

Working with Datetime and Timedelta in Python

This week’s assignment focused on using the datetime and timedelta modules in Python. I practiced working with time-based objects, performing calculations, and combining date/time data with custom functions. Code Procedure: Simulated reading transaction data and displayed the item/cost with the current time using datetime.now() Used timedelta to subtract 60 seconds and add 2 years (730 days) to the current time. Created a timedelta object representing 100 days, 10 hours, and 13 minutes and printed the result. Wrote a function that takes 2 arguments (feet and inches) and prints them along with the current datetime. These exercises helped me better understand how Python handles time-based data and how to apply that to real-world scenarios. Code: from datetime import datetime, timedelta # 1. Display current time with item & cost sample_data = "2025-06-29\t11:23:00\tPublix\tMilk\t3.25\tCredit" data = sample_data.strip().split("\t") if len(data) == 6: ...

Using a Rectangle Class in Python

This week’s assignment was about working with classes and objects in Python. I implemented a Rectangle class using object-oriented programming and tested it with several helper functions. Code Procedure: Created a Point class to represent the (x, y) corner of a rectangle. Defined a Rectangle class that stores position, width, and height. Implemented the following helper functions: create_rectangle(x, y, width, height) - creates a new Rectangle instance. str_rectangle(rect) - returns a string representation of the rectangle. shift_rectangle(rect, dx, dy) - modifies the rectangle’s position in place. offset_rectangle(rect, dx, dy) - returns a new rectangle offset from the original. Tested the functions using the example given in the assignment to ensure they worked as expected. This assignment helped me understand how class instances can be passed into and returned from functions, and how methods like __str__ improve output readability. Code: #...

Python Assignment - Print and String in Python

I ran a Python script using the print ()   function and string variables. Code: # Example 1: Basic print statement print('Hello, world!') # Example 2: Creating a string using single quotes String1 = 'Welcome to the Geeks World' print("String with the use of Single Quotes:") print(String1) Output: Hello, world! String with the use of Single Quotes: Welcome to the Geeks World Explanation: The print () function is used to display output to the screen. In this case, it printed both a simple message ( Hello, world! ) and a string stored in a variable. Strings in Python are sequences of characters enclosed in either single quotes ( ' ) or double quotes ( " ) . You can use either style, but they must match (open and close the same way). In this example: I created a string called String1 using single quotes. Then I used print() to output both a label and the string itself. Together, print() and string variables work perfectly because print() ...

Python Assignment - Roots & Reciprocals

This week I completed an assignment that covered: Solving a quadratic equation using the quadratic formula Printing reciprocals using a for loop Problem 1: Roots of a Quadratic Equation: x² - 5.86x + 8.5408 = 0 Code: import math a = 1 b = -5.86 c = 8.5408 discriminant = b**2 - 4*a*c root1 = (-b + math.sqrt(discriminant)) / (2*a) root2 = (-b - math.sqrt(discriminant)) / (2*a) print("Root 1:", root1) print("Root 2:", root2) Output: Root 1: 3.1400000000000006 Root 2: 2.7199999999999998 Problem 2: Reciprocals (1/2 to 1/10) Code: for i in range(2, 11):     print(f"1/{i} = {1/i}") Output: 1/2 = 0.5 1/3 = 0.3333333333333333 1/4 = 0.25 1/5 = 0.2 1/6 = 0.16666666666666666 1/7 = 0.14285714285714285 1/8 = 0.125 1/9 = 0.1111111111111111 1/10 = 0.1

Python Assignment – Intro to Functions and Lists

  Here’s what I accomplished: Wrote a function that prints a 3-line greeting using someone’s name on each line. Stored three names in a list and used a loop to greet them all. Created a function that prints a nicely formatted full name from first and last name. Built an addition calculator that prints results, then rewrote it to return the result instead. Learned that pow(16, 1/2) works to get the square root of 16 (returns 4.0 ). Played with list and tuple syntax: Found out that 3 * x repeats a list. You can do x + y (joins the lists) but can’t do x - y . Lists are mutable, but tuples can’t be changed. I didn’t run into any issues using the online Python compiler, and I’m already seeing how functions and data structures come together in Python. Looking forward to the next challenge. The Output: Hello, Alice Smith! Hope you're having a great day. Alice Smith, just wanted to say you're awesome! Take care, Alice Smith! --- Hello, Bob Johnson!...

Starting My Python Journey

Hi everyone! This blog will track my progress in LIS-4930: Introduction to Python . I’ll be sharing what I’m learning, cool projects, and tips as I go. Excited to dive into coding!