diff --git a/assignments/src/MV3500Cohort2024JulySeptember/homework2/Timberlake/Client_HW2.java b/assignments/src/MV3500Cohort2024JulySeptember/homework2/Timberlake/Client_HW2.java
new file mode 100644
index 0000000000000000000000000000000000000000..7eb81b34a1c8e0c845047514f151377197cd86cc
--- /dev/null
+++ b/assignments/src/MV3500Cohort2024JulySeptember/homework2/Timberlake/Client_HW2.java
@@ -0,0 +1,56 @@
+package MV3500Cohort2024JulySeptember.homework2.Timberlake;
+
+import java.net.DatagramPacket;
+import java.net.DatagramSocket;
+import java.net.InetAddress;
+import java.util.Scanner;
+
+/**
+ *
+ * @author Jack
+ */
+public class Client_HW2 {
+    public static void main(String[] args) {
+        DatagramSocket socket = null;
+        Scanner scanner = new Scanner(System.in);
+        try {
+            // Create a socket to communicate with the server
+            socket = new DatagramSocket();
+            InetAddress serverAddress = InetAddress.getByName("localhost"); // Server address (localhost for testing)
+            byte[] sendData = new byte[1024]; // Buffer to store data to send
+            byte[] receiveData = new byte[1024]; // Buffer to store received data
+
+            System.out.print("Let's play a game!!\n");
+            System.out.print("Try guessing a number between 1-100\n");
+            while(true) {
+                System.out.print("Enter your guess: ");
+                String guess = scanner.nextLine(); //Read user input
+                sendData = guess.getBytes(); // Convert message to bytes
+                
+                // Send guess to the server
+                DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, serverAddress, 9876);
+                socket.send(sendPacket); // Send packet to server
+
+                // Receive response from server
+                DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
+                socket.receive(receivePacket); // Blocking call until a packet is received
+                String response = new String(receivePacket.getData(), 0, receivePacket.getLength());
+                System.out.println("Server Said: " + response); // Print received response
+                
+                if (response.startsWith ("Good")) {
+                    break; //End the game
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace(); // Print any exceptions that occur
+            
+        } finally {
+            if (scanner != null) {
+                scanner.close(); // Close scanner 
+            }
+            if (socket != null && !socket.isClosed()) {
+                socket.close(); // Close the socket to release resources
+            }
+        }
+    } 
+}
diff --git a/assignments/src/MV3500Cohort2024JulySeptember/homework2/Timberlake/Server_HW2.java b/assignments/src/MV3500Cohort2024JulySeptember/homework2/Timberlake/Server_HW2.java
new file mode 100644
index 0000000000000000000000000000000000000000..3d9df86269f2a5b72d39e8845dc6522508f1d80c
--- /dev/null
+++ b/assignments/src/MV3500Cohort2024JulySeptember/homework2/Timberlake/Server_HW2.java
@@ -0,0 +1,72 @@
+package MV3500Cohort2024JulySeptember.homework2.Timberlake;
+
+import java.net.DatagramPacket;
+import java.net.DatagramSocket;
+import java.net.InetAddress;
+import java.util.Random;
+
+/**
+ *
+ * @author Jack
+ */
+public class Server_HW2 {
+    public static void main(String[] args) {
+        DatagramSocket socket = null;
+        Random random = new Random();
+        int numToGuess = random.nextInt(100) + 1;
+        //System.out.println("Magic Number Is: " + numToGuess);
+        
+        try {
+            // Create a socket to listen on port 9876
+            socket = new DatagramSocket(9876);
+            byte[] receiveData = new byte[1024]; // Buffer to store incoming data
+            byte[] sendData = new byte[1024]; // Buffer to store outgoing data
+            int count = 1;
+            System.out.println("Server has started, waiting for client...");
+
+            boolean isRunning = true;
+            while (isRunning) {
+                // Receive packet from client
+                DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
+                socket.receive(receivePacket); // Blocking call until a packet is received
+                
+                String message = new String(receivePacket.getData(), 0, receivePacket.getLength()); //Receive packet
+                InetAddress clientAddress = receivePacket.getAddress(); //Save IP for response
+                int clientPort = receivePacket.getPort();               //Save port for response
+                
+                System.out.println("Client sent: " + message); // Print received message
+
+                String response; 
+                try {
+                    int guess = Integer.parseInt(message.trim());
+                    if (guess < numToGuess) {
+                        response = "Guess Higher"; 
+                        count++;
+                    } else if (guess > numToGuess) {
+                        response = "Guess Lower"; 
+                        count++; 
+                    } else {
+                        response = "Good Job!! That took you " + count + " tries!";
+                        isRunning = false;
+                    }
+                } catch (NumberFormatException e) {
+                    response = "Invalid input. Enter a number.";
+                }
+                
+                // Prepare response to client
+                sendData = response.getBytes(); // Convert response message to bytes
+                DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, clientAddress, clientPort);
+                socket.send(sendPacket); // Send response packet to client
+                
+            }
+        } catch (Exception e) {
+            e.printStackTrace(); // Print any exceptions that occur
+        } finally {
+            if (socket != null && !socket.isClosed()) {
+                socket.close(); // Close the socket to release resources
+            }
+        }
+    }    
+}
+
+