跳转至

CINTA : A Concrete Introduction to Number Theory and Algebra


算是我个人的私心吧,离散数学会覆盖部分代数知识,但是不多,很多人也因此错失了深入学习的机会,我在这门课最大的感受就是,作者总是引导到某个点就留白,让读者自己学习思考(这段经历蛮折磨的,最后收获也很大)

于此,我也直接放入Bintou老师的介绍,你也可以在这里找到:《具体数论与代数》(CINTA)导读

什么是CINTA?

本书面向计算机专业的本科低年级学生,提供一本简单浅显的数论、代数的计算性导论。本书内容的裁剪与组合别出心裁,内容陈述具有启发性、清晰性与简洁性的特点,并且书中倡导的学习模式等都颇具特色,希望这些特色能成为大家认可的优点。而缺点也非常明显,就是从知识的广度与深度上看都尚欠缺。所以,本书定位为计算机专业数学入门之入门,成为读者攻读其他经典著作的垫脚石。 本书书名的“具体”二字是为了向著名的《具体数学》致敬,同时也向数学的“抽象性”发起挑战,希望本书不要成为另一本抽象代数,而是具体代数。本书的英文名拟定为:A Concrete Introduction to Number Theory and Algebra,因其大写首写字母而简称为CINTA。希望大家可以享受阅读数学书的乐趣。 该书由计算机学院教师王立斌编写,是免费共享教材。网址。本书还不断更新,希望大家关注。

CINTA的主要内容

全书分为十七章(约150页),大致分为六部分,数论与抽象代数交错展开。

章节安排

  1. 第一部分:基础数论(第一到第五章)
  2. 第二部分:基础群论(第六到第九章)
  3. 第三部分:数论(第十到第十一章)
  4. 第四部分:环与域(第十二到第十三章)
  5. 第五部分:椭圆曲线(第十四章)
  6. 第六部分:群算法(第十五、十六章)

主要内容

  1. 第一部分:基础数论:二进制、整数的加法与乘法、除法定理、良序原则、模运算、GCD、Bezout定理、EGCD、乘法逆元、消去律、费尔马小定理、欧拉定理、欧拉函数、米勒拉宾算法等
  2. 第二部分:基础群论:群与子群、循环群、拉格朗日定理、商群、同构与同态、第一同构定理等。特别关注两个群:Z_p^* Z_n^* 。
  3. 第三部分:数论:中国剩余定理、二次剩余、二次互反律
  4. 第四部分:环与域:环、整环、有限域GF(2n)等
  5. 第五部分:椭圆曲线:椭圆曲线理论基础,椭圆曲线的离散对数问题
  6. 第六部分:群算法:大整数分解、离散对数求解

阅读建议

  1. 本书面向计算机专业的本科低年级学生,但是同时也建议没有相关知识的工程师、教师或相关从业人员阅读。
  2. 请按顺序阅读。
  3. 本书的阅读需遵循的最大诫命就是:必须动手,必须做题,必须编程。那么,阅读本书最好有一定的编程基础,强烈建议使用课本推荐的软件SageMath。
  4. 本书可视为信息安全、网络空间安全的数学基础。虽然在书中作者没有提及任何密码学的内容,但是作者的工作背景决定了本书的内容选择。

如何制定阅读计划

优先次序

前三部分有较高的优先级,要确保掌握前三部分内容,才攻击后三部分。而前三部分也占了整本书大部分的篇幅。

关于阅读计划的建议

制定阅读计划的时候,可根据自己的实际情况先安排前三部分的阅读计划,这样容易方便控制。甚至,可以先缩小范围,先制定第一部分的学习计划,尽量做到不要盲目,而是切实落实计划。

已有授课经验

以往授课经验告诉我,一般来说,讲授完第五章需要10个学时左右,包括几个学时的习题时间。那么,具体到个人的阅读与做题,相信需要比这个学时更多一点,或者基本相当。假定做一个15学时的计划,一周如果可以安排5个学时,那么看完第一部分需要三周时间。这也大概是我的一个期望值。但是,我不确定。欢迎大家反馈。

总的来说,这门课在本科授课学时是32,但是完全没办法讲解完整本书,最后两部分基本不涉及,也可能会跳过部分章节,比如,米勒拉宾和二次互反等。这是授课过程中的一些琐碎记录,供大家参考。

CINTA背后的密码算法

CINTA这本书蕴含的密码就是密码算法,包括,但应该不局限于:

  • 公钥密码RSA
  • Diffie-Hellman密钥交换
  • 椭圆曲线密码学
  • 分组加密算法AES 这些算法在书中一个字都没有提及,但是,内容却与它们密切相关,有兴趣的同学可以关注。

培养学生的数学素养

隐藏在CINTA教学背后的一种倾向:培养学生的数学素养。什么是素养? 借用这篇文章的说法:

具体说,一个具有“数学素养”的人在他的认识世界和改造世界的活动中,常常表现出以下特点:

1、 在讨论问题时,习惯于强调定义(界定概念),强调问题存在的条件;

2、 在观察问题时,习惯于抓住其中的(函数)关系,在微观(局部)认识基础上进一步做出多因素的全局性(全空间)考虑;

3、 在认识问题时,习惯于将已有的严格的数学概念如对偶、相关、随机、泛涵、非线性、周期性、混沌等等概念广义化,用于认识现实中的问题。比如可以看出价格是商品的对偶,效益是公司的泛涵等等。

在授课时,我常挂在嘴边的口头禅:抓住定义、瞄准目标、抓住常用的技巧和方法。能理解一个高深的、技巧性很强的证明固然很好,但是更加本质的是,懂得最普通的证明。偏巧,在这一点上,我课堂上的同学都普遍缺乏。所以,目前,我不期望我的读者非常优秀,只希望他们正常!这也是我上课的口头禅。“抓住定义、瞄准目标、抓住常用的技巧和方法”也具体落实到CINTA的内容编排上,可能大家看不到有非常精妙的证明(除了二次互反律的证明),其他都非常普通,而这种普通就是我希望自己学生能掌握的东西。

掌握数学的本质

什么是数学的本质?其中有两个要点我在CINTA中频繁强调:

  • 寻找模式(规律)
  • 创造数学的语言来表达模式(或规律)

讲解费尔马小定理、欧拉定理的证明就是对寻找模式的致敬,而让大家重新发明中国剩余定理,更是对这种思想的具体应用。在不同章节都有相应的“寻找规律”相关的习题,希望大家重点关注。

至于说到“数学的语言”,对新手而言,看上去就很玄。其实不然!无论是高等数学、线性代数、数论还是代数,都是数学家创造的一种语言,例子很多。比如:当我们想说明什么样的线性方程组会有唯一解,我们会想到”行列式“;反过来,当你不理解什么是行列式,那么我们的对话就有了障碍。我们为什么需要群?因为群、环、域都是我们常见的代数结构,比如,整数、有理数、实数等构成的代数结构,当我们需要强调某种特性的时候我们就选用不同的术语去称呼这些代数结构,从而使得交流清晰简洁无歧义。所以,学习CINTA除了训练数学思维,能让读者掌握一种数学的语言也是重点内容之一。希望大家在学习过程中可以深刻体会。

资源推荐

评论