Projects

Parallel Distributed 2D Torus Random Walk | C, MPI

Mar 2021 - Apr 2021 | GitHub

  • Implemented a parallel version of a Markov chain simulation to allow a one particle system perform random walk on a 2-D Cartesian torus

  • Applied MPI_Send and MPI_Recv to allow ghost cell transition between processors

  • Conducted the performance analysis about speed-up, efficiency and scalability

UI Design for Android App: Help Me Relax | Java, SQLite

Feb 2021 - Apr 2021 | GitHub | Demo

  • Generated technology ideas based on user research study, and implemented the ideas in low-fidelity prototype

  • Implemented the Android UI which allows the user to navigate all post sessions and communicate through posts and replies

  • Developed a dynamic UI by using Navigation Drawer and a vertically-scrollable collection of views by using ListView

  • Designed the post sessions and reply sessions which could perform CRUD operations by using SQLite as local storage

Parallel Distributed K-Means Algorithm | C, MPI

Feb 2021 - Mar 2021 | GitHub

  • Designed a parallel distributed version of the sequential K-means algorithm to partition the 2016 US pollution data

  • Utilized MPI Allreduce to combine the local cluster information and distributes the result back to all processes

  • Applied MPI Bcast to broadcast the updated centroids from the root process to all other processes

Evaluator for Integer and Symbolic Expression | Standard ML, Scheme, C, Prolog

Oct 2020 - Dec 2020 | GitHub

  • Developed evaluators in SML, Scheme and C to evaluate operations of integer expressions based on the map function env

  • Designed naive compilers to print the translation of expression in the standard output

  • Built a Scheme evaluator for S-expressions based on McCarthy’s work Recursive Functions of Symbolic Expressions

  • Implemented a mini-Prolog evaluator to handle the encoding of S-expressions from Scheme

Multi-Client Chat Service | C

Jul 2020 - Aug 2020 | GitHub

  • Developed a chat service to achieve inter-process communication (between server and clients) through FIFOs

  • Implemented a server program which manages the interactions among clients and achieve input multiplexing

  • Applied signal handling for graceful server shutdown and applied alarm signals to add period pinging to the service

  • Designed multiple threads to handle the to-client (received information) and to-server (typed input) messages

Going Commando: Quasi-Command Line Shell | C

Jun 2020 - Jul 2020 | GitHub

  • Developed a shell to allow users to effectively operate and control machine using simple, interactive methods

  • Achieved system calls like process control, file management and communication to achieve shell task managements

  • Utilized memory tool Valgrind for memory debugging to prevent memory leaking