Keywords: GUI development, quality assurance, confidence, diligent, I started my career in my sophomore year. In a 3-month summer internship in Efinix, Inc. (Efinix), I worked as a software engineer taking respond of Graphical User Interface (GUI) development and quality assurance. Efinix is a start-up developing Field-Programmable Gate Arrays (FPGAs). And it also provides an Integrated Development Environment (IDE) Efinity for customers building designs for their FPGAs. I mainly focused on designing Efinity’s GUI and conducted unit-test for corresponding features. As a computer science student, I don’t have experience in hardware development, but I would like to try unfamiliar fields and I am always ready to face any potential challenges. Since my job required hardware programming background, I spent two days going from zero to basic comprehension of FPGAs and Verilog programming. In the formal development, I followed the test-driven development model. I first designed a series of test cases for expected features before I sketched Efinity’s GUI and designed corresponding features to improve user-friendliness. I then constructed the GUI by QtDesigner and implemented the designed features by PyQt5. Sometimes, I was asked to combine the features developed by other teams in my department to enrich the GUI’s functionalities. After implementing all, I conducted unit-test for each desired feature. During the internship, it was a time that I overcame a challenge individually with laborious work. Before my testing, Efinity was found it performed improperly as it not only could not display users’ input properly but also could not verify it. The department director and my supervisor insisted on software logical errors, and they didn’t believe that I was capable of detecting this kind of bugs. I didn’t admit their words, so I decided to figure it out by myself. After reviewing thousands of lines of source code and applying several turns of black-box testing and white-box testing, I found that the bug was so simple, i.e. the regular expressions used to verify inputs were wrong, but it crashed all features related to it. Finally, the director approved my solution to this bug in the weekly meeting and my supervisor praised my courage and perseverance.Testing on GUI is quite annoying as simulations of users’ operations are required, such as clicking buttons, selecting items, and keyboard input. To improve efficiency, I designed some Application Program Interface (API) as shortcuts for invoking the entire operations so that my colleagues who successively take over my job in the future will be more convenient to conduct GUI unit test.I was the first exposed to research in my penultimate year when I had not learned much about information theory. My research topic supervised by Prof. LI Cheuk Ting is delay-constrained communication by channel coding, such as Posterior Matching Scheme, LDPC, and polar code. The goal of the project is to develop an efficient coding scheme that allows a transmitter to send a short message to a receiver through a noisy channel (the code should be capable of error correction). This topic is related to Information Engineering rather than computer science, the reason why I chose this is I was interested in communication after I have taken some courses regarding computer network and cybersecurity. I always would like to seek out new knowledge and experience. Again, due to my lack of background in information theory, I faced another challenge. But the face proved that I eventually overcame the challenge and learnt much from it. After extensively researching papers, I was able to understand and implement basic algorithms and schemes, including hamming code and reed-muller code. Although posterior matching scheme first published in the 1960s isn’t as popular as polar code which is widely used in 5G and lots of optimization has been improved its functionality, I still believe it can be more powerful as it occupies many rounds of transmission merely for one message point to achieve the channel’s capacity. Since a transmitter needs feedback from its receiver for every time of transmission to hold posterior probability statistic in the posterior matching scheme, it may not work when the resource of feedback is constrained, i.e. the receiver cannot reply with feedback for every time. To solve this problem, I designed a model as follows: The transmitter first encodes the message into a block of code longer than the message by the linear code encoding scheme and transmit then the code through a noisy channel, the receiver decodes the received code into the original message with syndrome detection and error-bit correction by a linear code decoding matrix. And then the receiver replies with the decoded message as noiseless feedback to help the transmitter verify whether the receiver decodes the correct message.After my theoretical design, I implemented the model mentioned above by Python and it