Carcassonne Game (CMU) Mar. 2020 - Apr. 2020 • Designed software structure based on OOD principles like SOLID to achieve information hiding, code reuse, lower coupling and higher cohesion. Created domain model, sequential diagram, interaction diagram and object model using UML. • Used design patterns like template method pattern, strategy pattern to better construct the software. • Implemented a GUI using Java Swing with observer pattern so that multiple users can play the game.
Tribbler – A Twitter like Application (CMU) Nov. 2019 - Dec. 2019 • Built a three-tier twitter like service in Go language allowing frontend clients to post/retrieve/delete posts and subscribe others. • Implemented a backend key-value storage server layer which consisted of a ring of master and slave servers to store data, and achieved load balancing based on consistent hashing and sharding. • Used RPC package to implement the application layer and backend storage system as well as incorporating lease-based cache consistency mechanism to improve the throughput and service’s scalability.
An Industry-grade Fault-tolerant Bank System (CMU) Oct. 2019 - Nov. 2019 • Applied active and passive replication styles respectively for bank server to ensure no downtime even as faults are injected. • Global and local fault detectors received heartbeats with TCP protocol to monitor network partitioning and fault of replication. • Implemented replication manager server to update the membership of two kinds of replication. • Utilized checkpointing, logging to provide data consistency for distributed replication application.
Distributed Bitcoin Miner (CMU) Sep. 2019 - Oct. 2019 • Implemented Live Sequence Protocol on top of UDP protocol to provide reliable and fault tolerant communication. • Handled multiple faults including server crash, server slow start, package lose with epoch, sliding window and resend messages. • Designed and implemented a customer-master-miner three-tier system with concurrency server and load balancing. • Master server could handle real-time join and crash of customer and slave servers by rescheduling tasks and aggregating results. Computer System Simulation and Design in C (CMU) Mar. 2019 - May 2019
• Designed and implemented self-version of system-level memory allocation function including malloc() in C language. • Used segregated list, choosed optimal block size and eliminated footer in allocated blocks to minimize fragmentation. • Improved throughput which can reach 26544Kops/sec and utilization which can reach 74.4%.