Jingwen's Academic Portfolio
Welcome to my academic portfolio, where I showcase my work in mathematics and computer science.
Mathematics
Project 1: Approx
This Java project aims to implement an algorithm that can find an approximate fraction for an irrational number. The algorithm uses the continued fraction expansion of the irrational number to construct an increasingly accurate approximation. The project will involve creating a Java class that initializes the continued fraction with the first term and implements methods to calculate subsequent terms until the desired tolerance is reached and output the approximate fraction as a string in the form of a numerator and denominator.
Jingwen's original code.
Project 2: Congruence
This Java program prompts the user to enter a number and a modulus, then calculates the congruence of the number modulo the modulus using the modulus operator. The program outputs the result of the calculation to the console. This program provides a simple and efficient way to find the congruence of a number modulo a given modulus, which is a basic concept in number theory and has important applications in various fields of computer science.
Jingwen's original code.
Project 3: Diophantine
This Java program is designed to solve Diophantine equations of the form ax + by = c, where a, b, and c are integers and x, y are unknown variables. The program prompts the user to enter the values of a, b, and c using the Scanner class, then uses the extended Euclidean algorithm to find the greatest common divisor of a and b, as well as the Bezout coefficients x and y. If c is not divisible by the gcd of a and b, the program returns that the Diophantine equation has no solutions. Otherwise, the program returns the values of x and y that satisfy the equation.
Jingwen's original code.
Project 4: Mods
This Java program acts as a calculator with the added capability of performing arithmetic operations modulo a given modulus. The program prompts the user to enter two numbers and a modulus, and then prompts them to choose an arithmetic operation. The program performs the selected operation on the two numbers modulo the given modulus using the modulus operator and the appropriate arithmetic operator. The program then outputs the result of the calculation to the console. This program is useful for quickly and easily performing arithmetic operations modulo a given modulus, which is a fundamental concept in number theory and has applications in cryptography and other areas of computer science.
Jingwen's original code.
Project 5: Abstract Algebra Notes
The Abstract Algebra notes PDF is a document that provides an introduction to the study of algebraic structures such as groups, rings, and fields. I made this file when I was in abstract algebra class. It covers various topics such as group theory, ring theory, field theory, and Galois theory, and defines algebraic structures and their properties. The document also provides examples of groups and rings, discusses ideals, homomorphisms, and quotient groups and rings, and covers field extensions and Galois theory. This document serves as a comprehensive guide to the fundamental concepts and theories of abstract algebra and is a useful resource for students, researchers, and mathematicians.
Jingwen's personal notes.
Computer Science
Project 1: RSA
This Java program is designed to implement the RSA encryption algorithm, which is a widely used public-key encryption scheme. The program prompts the user to enter two large prime numbers, p and q, and uses them to generate a public and private key pair. The program then prompts the user to enter a message to be encrypted, which is converted into an integer using ASCII encoding. The program encrypts the message using the public key, which consists of the product of p and q and a public exponent, using modular exponentiation. The encrypted message is then sent to the receiver who uses their private key, consisting of p, q, and a private exponent, to decrypt the message back to its original form. This program is useful for implementing secure encryption and decryption of messages between parties, and has important applications in modern communication and information security.
Jingwen's original code.
AI Project:
Project 1: Pancake Sorting Algorithm
This section showcases my Pancake Sorting Algorithm project, a fascinating exploration into artificial intelligence and algorithm design. The project involves a web-based simulation where users can input their stack of pancakes and the algorithm will determine the optimal sorting steps using different strategies such as A* and Uniform Cost Search (UCS).
Jingwen's original code.