Everybody in this country should learn how to program a computer… because it teaches you how to think.

---Steve Jobs

来源:刘润蓬 | 作者:刘润蓬(深学教育海外技术顾问) | 发布时间: 2017-02-03 | 1539 次浏览 | 分享到:



    It is an exciting and opportune time to study computer science!

    We are living in the midst of a Digital Age powered by computers. This technological revolution has pervaded so many aspects of society: from communication and transportation, to medicine and entertainment.

    From its inception, computer science has been an extraordinarily creative enterprise. In merely a few decades, it has changed the way we live, and has propelled the global economy forward through groundbreaking technological innovation.

    Still, from a student’s perspective, it might not be clear what “computer science” is. Or, more precisely, what does “computational thinking” entail?  To put it simply, we are interested in problem solving with computers. This flavor of problem solving can be viewed from many distinct, but interconnected disciplines that you may choose to study:

    Computability - What problems are even solvable by computers? Some tasks that are very easy or intuitive for people to do are very difficult for computers – for example, natural language processing and image recognition. Still other problems have simple algorithms, but these algorithms would take ages to compute the solutions to problems of any realistic size. How do we know if a problem is intractable?


    Algorithms - How does one compose logical steps to solve a computational problem? How does one design this computation efficiently and analyze its expected time of execution? How does one mathematically prove that the algorithm is correct?


    Logic – How does one describe a solution to a problem in a precise manner so that an impersonal computer can interpret it? This involves understanding the basic instructions found in all programming languages such as boolean logic, loops, and also the basic physical components of computers


    Abstraction - Problems that are solved with computers tend to be large and complicated. It is often not possible to understand in detail the complete solution to a problem. Using abstractions allows a computer scientist to decompose a problem into smaller pieces, solve those pieces individually and combine the results to form a complete solution. How do we break up problems in this way? How do we describe abstractions so that others can understand them without knowing the complicated internal details?


    Beyond these fundamental elements of computational thinking, computer science also encompasses many more specialized applied fields, including the computational sciences, bioinformatics, computational geometry, computer animation and graphics, computer architecture, networking, programming language design, etc.

    Studying computer science and honing your computational thinking skills can bring careful, logical approaches to problem solving and an understanding of the power of abstraction to tackle many interesting problems. The ability to think logically and to develop abstractions is applicable even if one does not ultimately code these solutions in a programming language!

    In the 21st century, it is citizens well-studied in computer technology and well-practiced computational thinking who will guide our society through a multitude of groundbreaking technological discoveries.

    Good luck with your studies!






  可计算性 - 计算机可以解决什么问题?一些对于人类来说非常容易或直观的任务对于计算机来说是非常困难的 - 例如,自然语言处理和图像识别。也许还有其它简单的算法,但是用这些算法解决任何实际问题将花费很长时间。我们如何知道问题是否难以解决?


  算法 - 如何组成逻辑步骤来解决计算问题?如何有效地设计此计算并分析其预期执行时间?数学上如何证明算法是正确的?


  逻辑 - 如何以精确的方式描述问题的解决方案,以便非人类的计算机可以解释它?这涉及理解所有编程语言中的基本指令,例如布尔逻辑,循环,以及计算机的基本硬件。


  抽象 - 用计算机解决的问题往往是大而复杂的。通常不可能详细地理解问题的全部解决方案。使用抽象允许计算机科学家将问题分解成更小的部分,单独地解决这些部分并且结合结果以形成完整的解决方案。我们如何以这种方式分解问题?我们如何抽象地描述问题使其他人能够在了解这些问题的复杂细节的情况下也能理解这些问题?









                           刘润蓬  2017农历新年于波士顿 MIT