Calculus Calculator

Solving complex calculus problems in the blink of an eye.

I started learning calculas at Grade 9, seeing its importance in the field of science and engineering. Everytime I encountered an equation, I would try to work its derivative and integral out manually. However, everytime, whether I solved the equation or not, I always lacked a tool that could verify my answers.

This led me to discover WolframAlpha, a versatile mathematical tool capable of performing numerous operations. Despite its utility, it was obscure in the Chinese community, and I wanted to create a tool that could help Chinese students, like my classmates and me, solve calculus problems. Simultaneously, my previous experiences in Computer Science primarily focused on Algorithms and Cybersecurity, yet I’ve always admired the art of crafting elegant software from scratch to solve real-world problems or serve the community/ Therefore, I decided to take this chance to learn more about development and create a tool that could help students like me.

The code and interfaces snapshots of the Calculus Calculator.

As you can tell from the graph above, I used Python to develop this software due to my ample experience in the language. I used PyQt5 to create the GUI, and the SymPy library to execute the calculus operations. The software featured an arithematic calculator, which could perform basic operations. It also had a calculus calculator, which could solve complex calculus problems like derivatives, integrals, and limits.

Now, looking back at this software years later, I have to admit that it was very far from perfect. The UI/UX design, though straightforward, lacked aesthetic appeal. The choice of fonts and color themes needed refinement. SymPy’s limitations meant the software could only handle basic calculus operations, and its strict input format necessitated additional format adapters to accommodate various equation standards. Moreover, the output, an image generated by SymPy, faced scaling issues and sometimes failed to display entirely. Also, while some of my classmates tried the software from the release I distributed using pyinstaller, the packaged software was not accessible for those without Python installed.

Nevertheless, this project marked the starting point of my development career, showing me the power of coding in solving real-world problems apart from exploiting the vulnerabilities or crafting mathematical algorithms. It also made me realize that developing a software wasn’t unachievable, and that I could create a tool that had the potential to help others.

More importantly, this experience underscored Python’s limitations in software development, prompting me to explore other languages and frameworks like .Net, React, and Flutter, which now form the core of my development toolkit. Reflecting and growing—this is the essence of my learning journey, and I’m grateful for every step I’ve taken.