[第1课]
编程范式1
主题:本讲主要介绍了课程的主要内容。课程将会通过讲授C语言了解过程范式以及底层细节。讲授C++来了解面向对象范式,通过汇编语言描述语言特性,并通过C和C++来介绍并发编程的概念以及相关技术。使用Scheme语言探索函数式范式。最后会涉及一门简单优美,并且有函数式范式特征的语言Python。
[第2课]
编程范式2
主题:这一节主要讲授了各种基本数据类型,例如char,short,int,long,float,double,在内存中的表示形式,以及类型转换的初步知识。从原理上入手,揭示了基本类型的表示形式,及其合理性,也附带介绍了补码以及采用补码的合理性。
[第3课]
编程范式——C语言(上)
主题:本讲在基本数据类型的内存布局的基础上,讲授了结构体的内存布局,以及数组的内存布局,以及它们的混合实现。揭示了C语言中的复杂数据结构的机器特性,以及C语言中无边界检查的利弊。最后通过引入swap函数引出了在C语言中写出通用的,“泛型的”代码的必要。
[第4课]
编程范式——C语言(下)
主题:本节探讨了使用void *和强制类型转换来在C语言中实现所谓“泛型”的概念,通过通用类型的swap函数的例子,澄清了一些关于指针和解引用的问题,并为下一节课的函数指针与“泛型”的结合使用开了一个头。
[第8课]
编程范式8
主题:本节介绍了类型强转,错误检查等知识,重点讲述内存申请、操作、释放在实际函数中的运用。简略复习了栈的操作。最后重点介绍了汇编语言,并与之前的栈、C、C++知识进行比较讲述。还有寄存器的知识。
[第10课]
编程范式10
主题:首先讲了activation records(活动记录),通过示例来展示它是什么样的。并通过函数调用、空间申请、寄存器、汇编等来进行详细说明。最后还比较了C和C++的异同。
[第11课]
编程范式11
主题:首先复习了上节课内容,并通过函数的内存管理、寄存器管理来加以具体说明。接着介绍了C++中方法、构造函数、析构函数概念。介绍了结构体和关键字private、public、define等知识。
[第12课]
编程范式12
主题:接着复习和详细讲了宏定义define指令等预处理命令、介绍了assert语句。接下来讲makefile的相关知识、最后介绍了代码的编译、链接过程。
[第13课]
编程范式13
主题:深入讲代码的编译、链接过程。介绍了strlen,memcpy以及strcpy函数。并且讲解当遇到总线错误和段错误的时候,怎样去调试、查看哪里出了错误。
[第14课]
编程范式14
主题:介绍了“channeling”技巧,并通过具体例子展示了函数调用、内存指针变化等。接下来引入了进程、线程。并通过具体卖票的例子说明进程、线程的知识。
[第15课]
编程范式15
主题:《编程范式》第15讲以航班售票为例介绍了多线程编程。人们不希望售票厅一个接一个的售票,而是多个窗口同时竞争性的售票。同时售票存在的问题就是对总票数的访问问题,比如一个售票点在卖完最后一张票后由于某些原因没有将总票数置为0,那么访问剩余票数的售票点将会“继续”卖票,由此引发了多线程编程中对全局共享变量的访问问题。于是,本讲介绍了信号量机制,并提出了原子操作和临界区域的概念。这些都是为了解决并发编程中访问共享数据时出现的问题。
[第16课]
编程范式16
主题:本节通过机票的销售例子,探讨了线程的共享资源的写入和读取的模式,然后引入多线程编程及死锁的概念,之后通过“哲学家用叉子吃面”的例子,来详细阐述死锁的成因,并且提出两种解决死锁的方案。
[第17课]
编程范式17
主题:本课程首先回顾了“哲学家进餐问题”,然后详细讲解了“下载n个文件”这个例子,通过该例,进一步帮助大家理解进程间的通信、同步、竞争条件、临界区和死锁等问题。最后将下周一要讲的“冰欺凌商店”内容提前阐述给大家。
[第18课]
编程范式18
主题:本课围绕一个冰激凌商店的实际问题展开讨论,主要讲的是多线程同步问题。该冰激凌商店的同步涉及到顾客、店员、经理以及出纳员四个角色之间的通讯和协作。他们之间的通讯涉及到了共享资源的互斥问题,实现他们的同步机制需要使用锁和信号量这两个关键要素。
[第19课]
编程范式19
主题:话题:程序范式;面向对象机制;基于综合函数的返回值的功能分析范,举例——摄氏度与华氏度的转换。
[第20课]
编程范式20
主题:话题:Car-Cdr递归问题;Scheme如何在运行时检查类型;Scheme中斐波那契函数的递归实现;举例说明 运行时错误及类型检查 与 编译时错误及类型检查的区别;写一个递归拼合函数以移除一个列中所有的干预括号。
[第21课]
编程范式21
主题:话题:介绍日本河川的环境开发;评价表达式;通过一个后缀名为SCM的文件载入函数定义;在Scheme中用地图操作测绘任意一元函数等。
[第22课]
编程范式22
主题:话题:在Scheme中写一个递归幂集函数;运用LAMBDA映射功能;写一个排列函数,再为置换排列函数写一个总的算法。
[第23课]
编程范式23
主题:话题:Scheme中的内存模型——介绍Scheme如何与相连接的列同步。Scheme是一种多范型的编程语言,并主要支援函数式范型。它是Lisp两种主要的方言之一(另一种为Common Lisp)。与Common Lisp不同的是,Scheme强调极简主义设计与简约而可扩展的语言特性。它的精简性与优雅的语法广受计算机科学教育者以及语言设计学者的欢迎,并经常被用于基础计算机科学教育上。
[第24课]
编程范式24
主题:话题:Python的总体特点;编程语言,命令式的,面向对象的,动态类型;Python环境,基本陈述执行;调用对象。
[第25课]
编程范式25
主题:话题:在Python中对象是如何实现的;Python字典装置;在Python中写RSG语言。
[第26课]
编程范式26
主题:话题:XML处理与Python;两种不同的XML处理模式;XML碎片样本。
[第27课]
编程范式27
主题:本次邀请到了萨哈 拉什作为嘉宾讲师来给大家上课,主要讲解了Haskell的历史,Haskell中的保护措施,如何避免运行错误。此外还介绍了Haskell的各种功能,涉及到的函数等等。