Java Calculator

Summary

As a student project I created a calculator in Java. It is naturally capable of basic arithmetic operations such as addition, subtraction, multiplication, division, powers, and square roots. The calculator is capable of handling integers, decimals, and negative numbers, and has a list of constants like Pi, Phi, euler's constant, and infinity. I also had some fun creating some more niche operations, including floor division, modular division, custom root operations, factorial, "permutation" (which is like factorial, but adds the numbers together instead of multiplying them), and prime factorization.
Beyond the basic calculator operations, I created a secondary calculator called the List Operator. This calculator was designed to handle list operations, i.e calculations involving groups of numbers. On the backend it allows the user to populate lists through operations like append and pop, and the user can re-arrange the elements of the list with a sort and shuffle feature. Once the user has created a list of numbers, they can calculate the list's mean, median, mode, standard deviation, sum, difference, product, quotient, delta, minimum value, maximum value, and the length of the list.
Beyond designing the mathematical operations, I also designed a user interface using JUnit. The layout is a simple grid, stylized after a classic calculator's layout. To help the user, I included a help button that pulls up instructions on how to use each of the operations, and there are tooltips with each of the buttons to provide better clarity. Since this was written in Java, I used object oriented programming to treat each calculator as an object with various methods, and the GUI was its own class.