Shanti Kolluri:数学和计算机科学教师

计算机科学

Shanti Kolluri:数学和计算机科学教师
大学预科班教授的课程。AP计算机科学,AP微积分AB和数学2。
课堂之外的兴趣爱好。跳舞!莎莎舞、Hiphop、肚皮舞、宝莱坞等。
 
计算机科学如何在大学预科数学课程中发挥作用?
计算机科学是一门对高三、高二学生开放的选修课,为期一年。我已经教了三年了,有一个前提条件就是数学3,学生在解决问题的过程中,利用数学课程中强化的抽象思想进行概括。我们也会用数学来比较解决同一个问题的不同算法。它可以帮助我们做出明智的选择,比如哪种解法在时间、内存消耗等方面效率最高。
 
计算机科学的结构如何?
Java是本课程中主要教授的编程语言。随着我对学生的兴趣和现有技术的了解,这门课程也在不断发展。去年秋天,这门课从帮助一个叫Rudy的角色收集网格上的所有绿点开始,同时浏览难度逐渐增加的迷宫。然后,我们从编程中抽身出来,学习了一些电子学基础知识,了解了面包板、LED、电位计、蜂鸣器和超声波距离传感器的工作原理。我们把这些概念编织到使用被称为Arduinos的小计算机进行编程的背景下(arduino.cc/en/guide/introduction)。然后,学生们学习了一些Processing,这是一种编程语言,他们在其中探索图形和视觉效果。除了常规的评估之外,学生们还可以在第二学期通过一个为期两个月的项目来展示他们在课程中所学到的知识。
 
学生会不会想出一些特殊的项目?
是的,学生们为他们的最终项目提出自己的建议,同时遵守一些准则。我从学生身上学到的东西和他们从我身上学到的东西一样多。例如,今年有两个学生向我介绍了一个从澳大利亚远道而来的电子部件:OBD(车载诊断)模拟器。大多数现代汽车都有一个OBD端口,允许我们监听和收集有关排放、速度和里程等数据。这些学生希望利用汽车的速度和GPS位置的信息来为司机提供有用的建议。他们将把OBD模拟器与Arduino连接起来,并编写代码来提出这些建议。
 
学习计算机语言与学习口语是相似还是不同?
大多数编程语言之间都有一些共性,这使得学习下一门编程语言比从头开始更容易。打个比方,所有的浪漫语言都有足够的相似基础,从一门语言跳到另一门语言并不复杂。学完西班牙语后再学意大利语,这两种语言的根基相同,比学完西班牙语后再学土耳其语要容易。学习一门编程语言和学习一门新的语言类似,要想熟练掌握,学生需要尝试"说"或编程新的东西,并能接受在这个过程中犯很多错误。最初的语法或句法不会接近母语者的水平,但随着练习会越来越好。预科生将这种方法带到了计算机科学中--他们愿意尝试新事物,犯错误,从错误中学习,随着时间的推移,语言变得更加流畅。
 
上这门课的学生大多是数学强生吗?
这门课的学生组合很有趣。这是一门适合每个人的课程。语言爱好者把它当作学习一门新的语言,比如法语或日语,这让他们很兴奋。数学爱好者和喜欢抽象思维的学生喜欢看算法,不一定是看代码,而是看他们可以用数学客观比较的技术。有些学生对了解科技时事很感兴趣。最近,谷歌的一个程序击败了世界上最领先的"围棋"选手之一,人们认为这是不可能的。人工智能正在不断发展--谷歌程序通过对弈学习击败了人类竞争者,它应用经验赢得了胜利。wired.com/2016/03/google-ai-win-fifth-final-game-go天才lee-sedol/)。与1996年加里-卡斯帕罗夫与计算机"深蓝"下棋形成鲜明对比。当时,计算机在任何一个时刻都在研究游戏中的所有可能性。学生们对计算机科学的发展感到兴奋。有的学生喜欢电子学,有的学生喜欢从头开始造东西。还有一些人带来了他们对3D打印机和激光切割机的经验,并将它们融入到他们的最终项目的想法中。
 
为什么计算机科学中硬件和软件都要探讨?
通过学习一门编程语言的语法,并尝试解决一些常见的问题(例如,检查一个数字是否是质数或一个词是否是词素),这种想法是有道理的。然而这并不是每个人都能产生共鸣。有一个目标,比如"我能不能让这些LED灯按照这个图案亮起来?"或者"当这个秘密图案被拍在门上时,我能不能让这扇门打开?"对于更多的学生来说,这个目标更加具体。思维就从Java中的"if"语句如何工作,或者如何用Java写一个"循环",转变为我需要学会写什么代码才能让硬件或软件以某种方式表现出来。它为有时会显得抽象的过程带来了一个更直观或更具体的目标。

整合硬件和软件还带来了另一层复杂性,它代表了现实世界中的情况。如果有什么东西不能用,是硬件的问题还是软件的问题?我们如何解决问题?我们如何隔离问题的来源?通常情况下,没有正确的答案,而且有不止一种方法来构建一些东西或使一些东西工作。这让我的学生的创造力得到了充分的发挥,这也是我最喜欢教授这门课的一个方面。

男装CONSCIA REPI

识时务者为俊杰