01 - CS50 Introduction & Computer Basics
01 - CS50 介绍 & 计算机基础概介
哈佛的学习环境是真的好啊...一门课 300 多人学习环境,搭配 20 几位 TA...比国内好些大学的学习氛围好多了...我觉得主要还是老师的激情!比较有 Fire~
1.1. Google 贝叶斯检测算法
Google Mail 的垃圾邮件筛选算法。很有启发性...原来国外真的是有学生主动举手提问的...老师也会耐心解决学生的问题...
01 的 二进制计算机内部存储方式。比较基础但是够用。甚至还有 ASCII 码...可以说涉猎的很广。
磁盘中的存储:一旦写入就不会被轻易修改和破坏。
堆内存:临时内存...会造成堆栈内存灾难
actually:segmentation fault!
2. 程序设计 & C 语言 与 源代码
基础中的基础,相信没人会睡觉,
讲解了伪代码的设计。没有直接引入判断结构...循环结构...而是写成一段话...想必埋下了兴趣的种子。
最后是一些简单的程序设计介绍。Printf 了 Hello World!
关于程序缩进...一些尽量要避免的,和一些影响微小的要求。
2.2.1. 算法结构
变量定义和初始化,命名规则介绍。...以及...强制类型转换
main函数的介绍
2.2.2. C 语言 Strandard Library
很多基本的库都有覆盖讲解。
2.2.3. 哈佛的 CS 50 云主机...
连接远程主机终端。
先进而不乏经典,这是目前看下来最大的感受。
甚至花了 20min 讲解了云主机相关的操作...ssh之类的。我入门的时候完全没人教...
命令行下直接带着编程。
使用的nano工具...后面还会讲到vim...简直遥遥领先啊
gcc编译指令gcc hello.c默认会生成a.out
make穿插讲解了一键编译的make工具,这个我至今还没学...(25/2/19),虽然听说过,我也还没到要用的地步,后面慢慢学吧
Command-line arguments
int main(int agrc, char *argv[])
典型的黑盒子比喻。简单而不失风趣。
输入 & 输出
input 和 return
初步讲解了提升代码的健壮性的思想...
3.2. 函数原型、函数声明、函数定义
函数原型:主要用来进行类型检查,确保函数调用时参数类型和数量的正确性。
函数声明:告诉编译器函数的接口信息,以便在编译时进行链接。
在复杂的程序中,一般写在文件.h文件中,并会在main或其他.c函数中被引用
函数定义:是函数的具体实现,包含函数体,告诉编译器函数的具体行为。
3.3. 函数的局部变量 和 全局变量
Scope:Each variant has own scope. It depends on how you define it.
经典的例子:swap 函数要传入变量的指针,而不是传入值参副本,这样不会引起任何变化。
3.3.1. 谨慎的使用全局变量
如果你使用其他的 Library,比如谷歌的STL...如果不凑巧谷歌使用了同名的全局变量,那你的程序将会产生不可估量的错误。
数组,注意几个问题:
字符串 和 字符数组、普通数组、数组数组(二维)
字符串的结尾必须是\0
这门课还会涉及其他的简单代码
Java 和 PHP、C++
讲解了一些基本文件的内容...现在看来有点吊,是逐步演示的,这门课老师真的有用心在备课。讲解真的胸有成足。
找了几个简单程序复习上节课讲的循环结构等等,还介绍了人类检查代码的步骤...俗称 debug。
人们总是浪费很多时间在他们不熟悉的事情上,他们喜欢单打独斗...而不是合作...
同时也要培养自己称为某一领域的专业人才,而不是全才...
Last updated