PhD申请

女朋友在弄master的申请, 计划23Fall入学去美国, 想着我如果也能申请上, 就能够陪她一起再去美国读书. 哪怕不是同一个学校或地方, 至少可以不用异国, 也没有这么大时差. 因为我已经有master学位了, 所以就准备申请PhD. 顺便可以体验下搞学术的经历, 想想应该也会蛮有意思的. PhD到毕业的话一般就得5, 6年起步了, 是挺长的一个阶段, 听说搞学术不是那么容易的事情, 但觉得以我的聪明才智努力下应该还不至于啃不下来吧. 于是就着手开搞. 也没找中介, 感觉申PhD来说中介的帮助应该不大, 而且我也有留美的经验, 自己DIY肯定也不是那么难.

Well, 先说结果吧, 全聚德…但无所谓, 最开始收到拒信的时候还会沮丧, 但一些想法在后面慢慢有了改变后, 感觉这个事情可能也还好. 但至少, 这个申请的过程中还是收获比较多的.

开搞

因为之前的经历包括工作做的很多偏低层的东西, 高性能高并发之类的, 玩过操作系统内核, 感觉蛮有意思, 所以申请的方向就更偏向system一些. 顺便也对硬件有些兴趣, 想如果有机会的话可以试一试, fpga, 集成电路之类的. 虽然没有开发硬件的经验, 但要是有教授肯要我, 我是非常乐意尝试一下的. 本科和研究生的学校背景也还不错, 但可惜好不算顶尖的层次, 就希望能申上更好一点的学校沾沾光. 后面了解下来, 还确实是得找比较top的学校, 因为基本只有他们真的在做system硬核一些的项目, 排名稍微靠后一点的基本都是拿system优化机器学习相关的(这几年缺失机器学习比较火热, 又比较好出paper, 所以导致一大批的学术都扎进了这个领域, 收益比相对纯system的高太多了).

混学术界得发文章, 但我又恰好没有什么paper能拿出手, 哪怕能力不差, 但学术研究经历几乎是零, 这在申请上是我的一大劣势. Anyway, 改变不了的也没必要太纠结, 干就完事儿了. 写SOP(statement of purpose), 要推荐信, 找受害者(学校和教授), 这些都是申请需要的, 任务量不小, 一个个解决.

最开始写文书简直无从下手, 一点点将想法列出来并慢慢展开, 找了很多别人的经验, 看了大家目前都在研究的方向, 又读了些paper, 硬生生的凑出来一篇初稿. 后面又是查更多资料读更多文章, 一遍遍的修改, 重写, 整个跨度是最长的, 从最开始申请到结束.

关于学校, 因为本身开始得有点晚, 了解到有些项目对有留学经历的学生可以wave语言成绩要求, 有些也不要求GRE成绩, 正好能省去一大堆精力. 所以综合一下各个因素, 最终是投了十二所学校. 这数量确实是有点多了, 但毕竟自己对申请没有太大的把握, 只能广撒网碰运气; 每个学校申请的要求基本大差不差, 所以多申几所的工作量倒还可以接受. 就不知道省去的TOEFL和GRE考试对于最终的结果是不是有起到什么负面的影响了, 那就不得而知.

因为已经master毕业好几年了, 又有工作经历, 所以推荐信除了找当时的几个教授, 还让同事帮忙出了些.

陶瓷有时候还蛮重要的, 需要主动向教授推销自己. 但还是推荐在提交了申请后再去陶瓷, 这样对方能找到申请的信息, 能帮助更好的得到了解. 陶瓷信发了很多, 也收到了一些回信, 但一般没啥特别好的消息. 可能全球疫情状况好转的原因, 又赶上北美几个大厂的裁员潮, 申请人数非常多, 再加自身的科研经历确实不太行. 有收到一位范德堡的教授的meeting, 但后面也没再有下文.

结果

最开始对PhD的幻想, 是可以有一段长时间的学习和沉淀的机会, 能够接触到最前沿的技术和更深层次的知识. 但后面看法有了些转变, 读PhD就是找老板, 替老板干活, 只不过领域是学术. 平时科研的压力不会小, 还需要赶paper, 留给原本期望的那种大片学习沉淀的时间可能并不会特别多. 虽然如果申上了我还是会选择试一下, 但就至少对于全据的结果也能让自己好受一些了.

说实话真的要搞好一个申请, 工作量还是蛮大的, 特别如果准备开始的比较晚, 就得赶时间. 那时候基本下班回到家就会折腾折腾, 每天过的都挺充实的, 也学到了不少东西. 真的非常感激我对象, 给予了我特别大的鼓励和帮助, 也替我承担了很多压力, 没有她我估计都不一定能搞得下来. 再附上当时的文书吧, 自我感觉写的还算过得去.

Statement of Purpose

Efficiency and performance are eternal topics for application design. Optimization spans a broad spectrum in computer systems that cut across computer architectures, operating systems, and compilers. I am fascinated with all the challenges inherent in these aspects and want to contribute to them. Therefore, I am applying to graduate school to explore how applications could be affected and benefit from underlying foundations.

While single-core performance improvement becomes flat over time, parallelism is selected to achieve through higher concurrent processing, and heterogeneous computing emerges to reduce the overhead efficiency waste across different hardware designs. However, programming is not only used by people with computer science knowledge, but also by physical scientists, biomedical engineers, financial analysts, and more, who probably have limited effort to keep polishing performance improvement. I am curious about how future computer architecture can be designed to support next-generation applications. Furthermore, I would like to study how compiler implementation and runtime management can adjust the existing applications to fit the novel architecture. I believe that similar computational demands shared by different applications could be improved seamlessly from the advanced design on the underlying foundations. Moreover, I am convinced that programming for a heterogeneous system can be intuitive. Ideally, limited code should be changed for high-level developers to power up applications on various architectures, handled by compilers and operating systems to adjust for the exact instructions.

I did a research project on slicing software for 3D printers with professor Kruger during my master's study at Stevens. It is part of the Hydra project from our ECE department, which intends to handle the entire model manufacturing, from a customized CAD program to the production process by 3D printers and CNC machines. I was responsible for the model parsing solution. I spent time reading papers on the work of others, collaborated with mechanical students who work on printer machines, and discussed the implementations with my advisor. To reduce the wasted movement instructions for the printing header, I designed a loop-by-loop parsing algorithm, which effectively speeds up the physical printing process without any quality loss. I have learned that research is not only about implementing functionalities; it is more about inspirational ideas and innovations when we keep polishing the concept and exploring it more deeply.

My current position as a C++ developer at Muse Investment works on building trading systems. I have to dig deeper into computation optimizations and memory hierarchy to squeeze out the latest performance. Single instruction to read timestamps directly from the CPU register (TSC) was used to precisely measure the delay between each stage in clock cycles. When a low latency requirement meets multithreading, it quickly leads to asynchronized problems. After learning about memory ordering, I designed a robust lock-free multithreading mechanism gained for both extraordinary workload balance and performance. Additionally, physical CPU cores were isolated by the operating system kernel to avoid the overhead of scheduling timer interrupts and context switching. This working experience complements my knowledge of efficient system designing and strengthens my troubleshooting skills by dealing with issues from practical problems.

The openrazer project I have tinkered with opened my eyes to Linux driver development. It is a project on the unofficial driver for razer peripherals for Linux distributions. I added the entry of controlling lighting effect modification for the keyboard on my razer laptop. Even though the patch is not complicated based on the existing completed platform, I enjoyed reading the implementations and design, and the pleasure of seeing my work could run as expected. This experience further leads me to contribute to open-source projects and explore the Linux kernel.

Gradually, I become enthusiastic about more fundamental stuff that lies between computer architecture and user space developers. XXX University has been devoted to both software applications and hardware architecture and applied in varied interdisciplinary ways, which makes it a more attractive and ideal place to continue my graduate study and research path. I am especially attracted by the extraordinary work done in the XXX project from XXX led by Professor XXX. The work which has been done on the XXX group by Professor XXX is another one that interested me a lot. In addition, I am looking forward to gaining more comprehensive learning on several other fascinating research teams in which to pursue Ph.D. research.

My broad interests are across hardware, software, and adjacent areas within the computer system. I aim to discover potential implementations to bridge gaps between underlying architecture design and high-level developers. Looking forward, I am excited to have the opportunity to devote myself to addressing this challenge, and I would like to keep on contributing to research for the most cutting-edge communities after obtaining solid knowledge. I believe XXX University could help improve my ability and potential to be an independent research scientist with comprehensive strength in engineering and computer science.

Personal Statement

I am aware that many people might barely find out the meaning or interests of their life. In China, most of us lack information about all the different majors and career fields before we choose a specific major after the National College Entrance Examination for college. Therefore, plenty of students choose their major and college from a handbook without understanding the details, including me. Fortunately, during the undergraduate study stage majoring in Medical Information Engineering, interdisciplinary core courses arose my interest in general Computer Engineering.

As a former computer engineering graduate student from Stevens, I have applied my programming techniques to different areas for the past five years, including research, the FinTech industry, and some open-source projects.

Based on the data structure and algorithm techniques gained from classes and the research experience, The Global Trading System (GTS) provided me with an opportunity for a fellowship. The FinTech industry was introduced to me. However, I found it hard at the beginning since I lack economics and finance knowledge, so I kept gaining basic knowledge through self-study. I  enjoyed this experience since I could work in a place where people from mathematical, financial, and engineering backgrounds collaborate, combining their professional techniques and knowledge, and trying to figure out efficient patterns and regularities among the massive market data and information.

I fancy the idea of ‘Keep It Simple and Stupid (KISS)’ while many software which people normally use are onerous and bloated. Therefore, based on my interest in the Linux community, I set up my workplace with highly customized tools from the editor to the desktop environment (or windows manager) for my daily development.

Overall, my experience enriched my ability to apply engineering skills to different fields. Nevertheless, I am still inspired to explore deeper areas and unveil the exquisite magic between more basic fields of electronics.