# Project Server Notes ## Checkpoint 1 1. Lots of software today connects to remote servers, and can't work offline. What are some advantages of using a program or an app which uses a remote server? What are some advantages of using a program or an app which is completely local? Programs that use remote servers have some simple advantages. You can open your work from almost any device as long as you have internet, and the app updates itself without you having to do anything. It’s also easier to work with other people at the same time, and your files are usually saved online in case your device breaks. On the other hand, programs that are fully on your computer have their own strengths. They work even when there’s no internet, often feel quicker, and keep your files directly on your device. They also aren’t affected if a company’s system goes down and usually don’t require monthly payments. Overall, online apps focus on convenience and sharing, while local programs focus on reliability and independence. 2. You just ran a server on your own computer, and connected to it as a client on the same computer. In what other situations might it be useful to run a server on your computer, where you're the only client, on the same computer? Running a server on your own computer, even if you’re the only one using it, can still be really useful. For example, if you’re building a website or an app, you might run it on your computer first to see how it works before putting it online. It also lets you practice how programs connect and share information without needing internet access. Some games and programs are built in a way where they act like there’s a server and a client, even if both are on the same device. This setup can also keep things more private since everything stays on your computer. Overall, it’s a helpful way to test, experiment, and learn without depending on outside systems. ## Checkpoint 2 3. Choose a program (Steam), web app (Google Docs), or app (Weather) that you use frequently. You can't observe the calls this program is making to its server (unless you have fancy tools), but you can infer some of the calls based on the program's behavior. Describe a few routes which you think may exist for your chosen program's backend server. I’ll choose Steam since I use it a lot. Even though we can’t see what it’s sending to its servers, we can guess based on what it does. When you log in, Steam probably sends a message to check your username and password. When you open your library, it likely asks the server for a list of all the games you own. If you click on the store, it probably requests information about featured games or details about a specific game you’re looking at. When you download or update a game, Steam must be asking the server to send the game files to your computer. It also likely checks the server to see which of your friends are online. Even though all of this happens in the background, the way Steam updates and loads information shows that it’s constantly talking to its server to make everything work. 4. In your own words, what is an exception? When might it be useful to handle an exception? When is it better not to handle an exception, and instead let the program crash? An exception is when something unexpected goes wrong while a program is running. It’s like the program hitting a problem it didn’t plan for, such as getting the wrong kind of input or not being able to find something it needs.It’s helpful to handle an exception when the problem is small and the program can recover. For example, if someone types the wrong thing, the program can show a message and let them try again instead of shutting down. This makes the program feel smoother and easier to use.But sometimes it’s better to let the program crash. If something is seriously wrong, letting it stop can make the issue clear instead of hiding it. That way, the problem can be fixed properly instead of causing bigger issues later.