CS50 2024第一节课的收获
序言
我在Bilibili上意外刷到了这堂哈佛大学的CS50公开课:【4K HDR 自制中英字幕】CS50x 2024 哈佛大学计算机科学和编程艺术入门课程
看完第一节可谓是收获颇多
如果你懒得看两小时多的课,你也可以看看他们的公开笔记:Lecture 0 [不过我还是建议你看看视频,有很多有趣的内容甚至下课了还有合唱]
内容
这是第0节课的目录:
- Welcome! 欢迎!
- What’s Ahead 未来展望
- Community! 社区!
- Computer Science 计算机科学
- ASCII ASCII 码
- Unicode 统一码
- Representation 表示法
- Algorithms 算法
- Pseudocode 伪代码
- Artificial Intelligence 人工智能
- Scratch Scratch
- Hello World 世界您好
- Hello, You 你好
- Meow and Abstraction 喵喵和抽象
- Conditionals 条件
- Oscartime 奥斯卡时间
- Ivy’s Hardest Game Ivy 最难的游戏
- Summing Up 总结
整节课是给几乎毫无编程经验的人的
开始,先介绍了CS50学院内部的社区还有计算机的运行原理和概念之类的
然后讲述了二进制的工作原理,请了7名志愿者[还有他们的机器狗Spot]来演示工作原理
然后以此为基础说了计算机如何理解数字、文本、图像、音乐和视频
还说明了伪编码的基本编程技能
以及关于在CS50中使用AI的合理和不合理方法:
- 合理: 使用他们的cs50.ai鸭子AI助教! 这只鸭子会授人以渔而拒绝授人以鱼
- 不合理: 滥用其他AI服务
然后讲述了抽象(Abstraction)在编程和生活中的重要性
例如,如果您要为您的朋友举办一顿丰盛的晚餐,那么必须烹饪整顿饭的问题可能会非常困难!但是,如果您将烹饪饭菜的任务分解成越来越小的任务(或问题),那么制作这顿美味佳肴的大任务可能会感觉不那么具有挑战性。
以及如何在Scratch上建立一个项目,并以Scratch介绍了函数、条件、循环和变量等基本构建块[Building Blocks]
我觉得里面最实用的还得是 Algorithms 算法部分
想象一下试图在电话簿中找到单个名字的基本问题。
一种方法可能是简单地从第一页阅读到下一页,直到到达最后一页。
另一种方法是一次搜索两个页面。
最后一种也许更好的方法是走到电话簿的中间,问道:“我要找的名字是在左边还是右边?然后,重复此过程,将问题切成两半、一半和一半。"
这些方法中的每一种都可以称为算法。这些算法中的每一个的速度都可以用所谓的 big-O 表示法表示如下:
请注意,第一个算法(以红色突出显示)的 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有兴趣,我觉得这大概是必看的