序言

我在Bilibili上意外刷到了这堂哈佛大学的CS50公开课:【4K HDR 自制中英字幕】CS50x 2024 哈佛大学计算机科学和编程艺术入门课程

看完第一节可谓是收获颇多

如果你懒得看两小时多的课,你也可以看看他们的公开笔记:Lecture 0 [不过我还是建议你看看视频,有很多有趣的内容甚至下课了还有合唱]

内容

这是第0节课的目录:

整节课是给几乎毫无编程经验的人的

开始,先介绍了CS50学院内部的社区还有计算机的运行原理和概念之类的

然后讲述了二进制的工作原理,请了7名志愿者[还有他们的机器狗Spot]来演示工作原理

然后以此为基础说了计算机如何理解数字、文本、图像、音乐和视频

还说明了伪编码的基本编程技能

以及关于在CS50中使用AI的合理和不合理方法:

  • 合理: 使用他们的cs50.ai鸭子AI助教! 这只鸭子会授人以渔而拒绝授人以鱼
  • 不合理: 滥用其他AI服务

然后讲述了抽象(Abstraction)在编程和生活中的重要性

例如,如果您要为您的朋友举办一顿丰盛的晚餐,那么必须烹饪整顿饭的问题可能会非常困难!但是,如果您将烹饪饭菜的任务分解成越来越小的任务(或问题),那么制作这顿美味佳肴的大任务可能会感觉不那么具有挑战性。

以及如何在Scratch上建立一个项目,并以Scratch介绍了函数、条件、循环和变量基本构建块[Building Blocks]

我觉得里面最实用的还得是 Algorithms 算法部分

想象一下试图在电话簿中找到单个名字的基本问题。

一种方法可能是简单地从第一页阅读到下一页,直到到达最后一页。

另一种方法是一次搜索两个页面。

最后一种也许更好的方法是走到电话簿的中间,问道:“我要找的名字是在左边还是右边?然后,重复此过程,将问题切成两半、一半和一半。"

这些方法中的每一种都可以称为算法。这些算法中的每一个的速度都可以用所谓的 big-O 表示法表示如下:

big o notation

请注意,第一个算法(以红色突出显示)的 big-O 为 n,因为如果电话簿中有 100 个姓名,则可能需要多达 100 次尝试才能找到正确的姓名。第二种算法,一次搜索两个页面,大 O 为 ’n/2’,因为我们在页面中的搜索速度是原来的两倍。最终算法的 big-O 为 log2n,因为将问题加倍只会导致解决问题的额外步骤。

[以上内容均为Bing机翻]

收获

虽然关于编程的大部分内容我已经学过了,但看起来还是津津有味

但我现在理解了计算机的工作原理以及文本,emoji,各种进制和文件究竟属如何实现的

比如说,你可以通过这个代码来输出一个合体的emoji[删除时会一并删除]

# 定义单个组合的16进制代码
combination = "\U0001F43E\U0000200D\U0001F494\U0000200D\U0001F43E"
# 打印文本
print(combination)

真的是收获颇多

总结

CS50当真是很不错的一个公开课,如果你对CS有兴趣,我觉得这大概是必看的