关闭

澳际学费在线支付平台

计算机专业PS范例十四(MIT).

刚刚更新 编辑: 浏览次数:874 移动端

  申请专业:计算机

  Those passing by Maxwell Dworkin G135 one spring evening last year may have been surprised to see a caped figure dangling his strangely unfazed peer upside-down by the boots. Both characters were holding cardboard arrows; behind them on the board was a sea of *&aposs and ->&aposs.

  This was Computer Science 51&aposs C review session, and my fellow review session leader (known to attendees as Guardian of the Heap) was holding me upside-down to demonstrate the conventions of stack and heap growth.

  Each year the course holds a review of the essentials of memory management bore diving into C++; this year I had convinced the other teaching fellow to join me in costume to demonstrate how and why C provides an abstraction over the data memory. My own discovery of the power of languages&apos semantic constructs has led me to emphasize this point to all who will listen. My students may recall—fondly or otherwise—my e-mails (sometimes after the course was over) about discoveries of papers such as Richard Fateman&aposs Software Prevention by Language

  Choice: Why C is Not my Favorite Language and Bjarne Stroustrup&aposs Evolving a language in and for the real world: C++ 1991-2006.

  A class project on parallel computation models first drew me to programming languages.

  Physical limitations have caused chip manufacturers to begin increasing the number of cores per processor rather than transistors per core. Because of this, continuing the trend of exponential processor speed growth involves figuring out how to parallelize tasks correctly and ficiently across growing numbers of cores. Solving this problem could eliminate many of today&aposs computational limitations. This convinced me that improving computational tools could produce powerful results.

  This tool innovation will come from developing high-level language constructs. In implementing algorithms for my research in computational biology, I saw how usul it was to build my systems out of modular, reusable components. In creating the vision and control systems for my RoboCup team&aposs autonomous soccer-playing robots, abstraction was crucial to maintaining sanity, both in the organization of the code and in the organization of the team. As a technical director of our team, I saw how crucial interfaces were for allowing us to forget about previously solved problems and for allowing people to work separately on interacting code.

  After taking courses on computer hardware, compilers, and programming languages, I came to see how language abstraction has allowed many the advances of the last few decades. My experiences continue to confirm the importance of having the proper language tools. When I interned at Google last summer, I discovered how much time people spend implementing details, writing tests, and chasing down bugs. Though I enjoyed the craftsmanship involved with writing C++ code disciplined enough to be correct, ficient, and readable, I saw a glaring need for language constructs with better error prevention mechanisms and better ways of demonstrating code correctness. In the hours I spent waiting for my code to compile, I thought about how to build language tools to better support separate compilation and discourage the production of so many dependencies.

  Not only did my experience in industry verify that there are real problems I should solve, but it also motivated me to return to academia to solve them. At Google I noticed that production pressures and the need for backwards compatibility in industry tend to make tool development less important than product development. Academic settings tend to allow greater experimental more conducive to producing innovative projects such as Coq, a proof assistant application developed by INRIA, and Fortress, Sun&aposs revision of the Fortran programming language.

  My own undergraduate experience contributes to my desire to remain at the university. Because of the influence of my professors and activities in my decision to continue studying computer science at all, I have felt strongly about increasing undergraduate accessibility to resources, academic and otherwise. As president of the Harvard College Engineering Society, I have organized events such as lunches with professors, freshman advising events, and Women in Computer Science activities. I have also worked to make it possible for students to pursue their own projects: for our RoboCup team I have helped to acquire thousands in funding and critical lab space to test our soccer-playing robots.

  Of course, one of the main reasons to stay in academia is to teach. Teaching has been the best thing I have done as an undergraduate: not only has it helped reinforce my understanding of the material, but it has also given me perspective on the purpose of my own coursework. I love teaching because I find the concepts interesting and relevant; my goal is for other people to gain enough understanding to feel the same. I want to provide accessibility to beautiful theoretical results such as the proof of the Halting Problem, to impart necessary practical knowledge such as the proper construction of a Makile, and to convince others that solving problems in computational tools is important.

  It would be ideal to remain in academia as a professor because I could pursue my research interests while training and recruiting others to solve relevant problems in programming languages. The NSF fellowship will provide me with the flexibility to work on such problems of my interest while I pursue this goal.

  • 澳际QQ群:610247479
  • 澳际QQ群:445186879
  • 澳际QQ群:414525537