我刚刚开始用Java编程,并注意到如果我要做任何有价值的事情,我可能需要提高我的数学技能。我刚刚注意到,对于对数学有深刻理解的人来说,一些练习应该很容易,因为似乎有一些运行该节目的数学公式。我两年前读完高中,没有机会在那里的最高水平做数学。我对此非常担心,所以我正在寻找更多有经验和知识渊博的人的指导,我们应该学习什么,以便在沉迷于深水之前掌握数学的基本知识。
我一般都是数学方面的优秀学生,我的思维敏捷。我的目标是在今年年底之前成为一名经过认证且经验丰富的Java程序员。我知道人们会说经验需要时间和精力,但我愿意牺牲我所拥有的一切来实现这一目标。我之前已经使用PHP和MySQL编程并获得了一般性的理解,但是当我阅读它时,Java给了我一个真正的启发。如果您知道其他任何可能对我有所帮助的事情,请告诉我。
感谢。
答案 0 :(得分:21)
我强烈建议您阅读Steve Yegge的Math for Programmers。
如果您正在寻找一些图书,我建议Concrete Mathematics和The Art of Computer Programming。
如果您正在寻找可以练习的问题,请查看Project Euler。
不要因挑战问题而气馁。只有通过克服你将要成长的挑战。当你遇到障碍时,这里的社区非常愿意给你帮助和推动。
我们也不要忘记这句名言:
无论你在数学方面遇到什么困难,我都可以向你保证我的数学要大得多.---爱因斯坦
我的目标是在今年年底之前成为经过认证且经验丰富的Java程序员。
最后,唯一方式变得经验丰富的方法是编写代码,以及大量代码。
答案 1 :(得分:8)
Discrete Mathematics是您最需要的。理解基数2(二进制)基数16(十六进制)数字系统是 help 必须的。你不必陷入离散数学的困境,因为其中一些太深,让数学专业的学生感到畏缩。查看基础知识,例如集合和逻辑。
至于三角形/微积分......我在大学里已经完成了所有这些并且从来没有依赖过这些......或者说很好。
答案 2 :(得分:3)
数学能力不一定是成为优秀程序员的先决条件。虽然好的程序员往往擅长数学,但是有很强的联系。这并不意味着学习更多数学必然会让你成为更好的程序员。要成为更好的程序员通常需要大量的编码。所以记住这一点:
答案 3 :(得分:2)
线性方程,矩阵代数,基数2,8,18和10转换,对数和集合论(交叉点,联合等)将为您提供基础。如果你的代数是合理的,请研究离散数学,预分解和三角形。一旦你走得那么远,如果你愿意,你应该没有问题。
老实说,您可能值得花时间在当地社区学院进行分班考试,以便对您的技能进行诚实的评估。从那里,您可以选择参加课程或通过自我教学学习课程。
答案 4 :(得分:1)
浏览http://www.khanacademy.org/数学部分。大多数人都是高中毕业,只有微积分我才能学习。
如果你在这里完成所有数学考试,你将对CS中的单身汉的数学要求几乎满意。剩下的是离散数学,算法,有限自动机。
查看麻省理工学院开放课件。
答案 5 :(得分:0)
“Concrete Mathematics”将成为关于此主题的书籍建议。
答案 6 :(得分:0)
如果您在所有这些好建议之后还有空闲时间,我可能会将Head First Statistics放在您的阅读列表中。 http://www.amazon.ca/Head-First-Statistics-Dawn-Griffiths/dp/0596527586
虽然与核心Java编程没有直接关系,但统计数据在计算机科学的某些领域中有很多用途。例如,我发现这本书在我参与过的一些数据挖掘项目中非常有用。
我推荐这本书,因为它非常简单有趣,并且可以作为统计数据的一个很好的介绍而不会让你失望。这就是“在珠子之前”阅读,你可以轻松地完成。
答案 7 :(得分:0)
这不是一般鼓励的建议;我从实践中学习。在解决一些问题的背景下阅读有关数学的书籍,是无聊的,干燥的,一般不利于学习。我发现如果我为自己设定一个编程挑战,一个超出我目前能力水平的挑战,我会学到很多东西,并在解决问题的过程中开辟新的知识领域。也许这种方式更难/更慢,但我发现它给了我一个坚实,实用的基础。例如,在我通过试图找到最简单的人类Vs计算机摇滚剪刀游戏的方法学习了很多关于模数学的日子......我的两分钱。
答案 8 :(得分:0)
我经常尝试阅读书籍,并且有很多部分阅读的数学书籍。几年前我获得了很多开设大学数学二年级的纯数学课程(M208) - 它结构合理,你必须做所有的练习,而且它足够广泛,可以介绍一些东西我不会看自己的蝙蝠,但要足够深,才能满足。