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

---Steve Jobs

人都应该学习编程,因为它教人如何思考---乔布斯
deepstudy.net
深学汇
    
    
给“深学汇”学员们的新年问候!
来源:刘润蓬 | 作者:刘润蓬(深学教育海外技术顾问) | 发布时间: 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!

    


         这是一个学习计算机科学的激动人心和千载难逢的好时代!
 

 
  我们生活在一个由计算机驱动的数字时代。这种技术革命已经渗透了社会的许多方面:从通信和交通,到医药和娱乐。
 

 
  从一出世,计算机科学就一直是一个创意非凡的工业。仅仅几十年来,它改变了我们的生活方式,并通过突破性的技术创新推动了全球经济的发展。
 

 
  然而,从学生的角度来看,可能不清楚计算机科学是什么。或者,更准确地说,计算思维是什么意思?简单来说,我们感兴趣的是用计算机解决问题。解决问题的方式方法可以来自以下诸多不同但是相互关联的学科,供你选择学习:
 

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

 

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

 

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

 

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

 

 
   除了计算思维的这些基本要素之外,计算机科学还包括许多更专业的应用领域,包括计算科学,生物信息学,计算几何学,计算机动画和图形学,计算机体系结构,网络,编程语言设计等。
 

 
   学习计算机科学和珩磨你的计算思维技能可以带来严谨的,逻辑的解决问题的方法并使你感受到用以解决许多有趣问题的抽象的力量。即使没有最终用编程语言编写这些解决方案,逻辑思维和抽象能力也是受用的!
 

 
   21世纪,在计算机技术和计算思维方面训练有素的公民,才是通过大量的开创性的技术引领我们社会前进的中坚。
 

 
   祝你们的学习好运!

 

 

 

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