查看: 5460|回复: 22
收起左侧

【超干货】CS61B 2021sp全攻略(上)

    |只看干货
本楼: 👍   100% (24)
 
 
0% (0)   👎
全局: 👍   96% (371)
 
 
3% (15)    👎
公开课
学校名称: Berkeley
Unit号: 1
开课时间: Spring 2021
课程全名: CS 61B Data Structures
平台: 其他
URL: https://sp21.datastructur.es/

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
本帖最后由 pied_piper 于 2022-7-4 18:40 编辑

整体介绍
这是一门经典的数据结构与算法课,免费,整个内容巨多,包括java入门,数据结构、算法,其他技能像debug、github、OOD也涉及到了,建议花费时长的300-400个小时。lecture就是Berkeley真实上课的录播,老师口音语速都不错,(把英语听力和阅读也练习了hhhhh),lab和proj中98%的内容也是可以完全顺利做完的,剩下的2%我把我遇到的坑都排出来,供后人借鉴。btw,码字不易,求加米~

0. Prerequisite
lab和proj都非常详细,对新手和转码及其友好,深入浅出,只要会用任意一门编程语言的if, else, for, while,就可以上了。转码的不会任何语言也没关系,有些数学逻辑分析能力,以及自学能力,就ok。
如果你自学能力较弱,而且遇到困难不能静下来解决、或者没有时间,请放弃这门课程,报个bootcamp啥的,因为该课workload在UCB都属于几个最大的之一,他们在校学生也经常需要助教指导。

1. 同类型比较
同类型的课程有Princeton的Algorithms,stanford的Algorithms,我没上过,但Princeton的需要有java基础,Josh以前在Princeton教这门课,有次课提到lab相比61b差很多。stanford听说不涉及具体语言,用到的数学证明很难。

CS61B的口碑在这几个课程最高的,John讲课风格由浅入深,lab和proj质量也是最顶尖的,指导非常详细,对新手和转码及其友好,按照流程来就可以完成,我估计助教团队每年花在这门课的时间超过1000个小时,神课是神课总有它的道理(吐槽下lz母校C++期末项目教授一拍脑门要求实现一个网课平台,所有工具全都靠自己上网学,都啥玩意啊)。
2. 版本选择:
我了解的有自动批改作业的只有14,18,21年三个版本。14太老了就不讨论了,21和18年Lecture, disc绝大部分相同,18lab更多一点,21去除了18最不重要的几个lecture和Lab,新增的lecture包含Software Engineering的方法论,proj也有变化。Josh原话说编程顶层哲学远远比几个不常见的数据结构有意义的多。

21最大的特色新增了proj2 gitlet,gitlet是大型design project,在UCB存在了快10年。gitlet整体很繁琐,功能很多,但助教团队但给的实验手册可以解决你遇到的所有问题。有助教说gitlet is the best of all UCB CS  projects,楼主我也深有同感,可能一开始被虐,但最后完成的时候的那种逆袭的快乐,只有认真做的人才能体会到,贴一个reddit学生评价。
aca620d327d3dd9c24f1fccaed3147f.png


总结:所以除非你已经开始学习18了,否则选择21年的没错!!



3 总结与排坑
这次总结前9周的内容,到spring break

A week1:
设计到很多安装,Atom,Java,IntelliJ ,Github,autograder等,很繁琐,耐心按照lab流程走就行,所有beacon和snaps是需要学生账号的,可以忽略,不影响其它内容的连贯。
没有java基础的把hw0做了。
autograder的激活码好像是P5WVGW,还是MB7ZPY,都试一下把,有一个是旧的。

B 第一个月(到Academic Holiday):
lecture把java 讲一遍,其中讲Inheritance和Polymorphism顺便就把linked list, deque给手动推导一遍,Generic结合Arraylist讲解,节奏不快,内容也很充实了。

proj0:2048的游戏,整体框架给你了,只要写几个主要逻辑。写完还可以玩自己写的游戏,挺有趣的,要是按方向键方块不动,可能是系统是中文的,intellij只能默认是接受英文string的,把系统语言设置成英文或者把intellij的字符语言改成中文就好了。这个proj第一次做的话有点难把,现在做完proj2回看它简直so easy。

lab2setup: javalib用git指令下载不了,需要到github下载的课程repo中把library-sp21文件夹打包下到本地,解压缩

proj1: 很有练习意义,实现一个deque,需要考虑的情况还蛮多的,resize那里复杂一点。

Lab4: 缺少Intro videos 3-6 ,但看读下面Using Git那个文档是一样的,就是一点branch和merge的知识。
然后lab4的AB部分助教故意改了repo的branch,pull的话应该会有merge conflict。现在pull会是正常的文件,所以自己看Using Git文档把,然后手动checkout到以前提交的版本,把它恢复,提交到autograder也可以成功。看完文档前用checkout都小心一点,一定记得加文件名。不然很容易detached head。

C 第二个月(一直到Spring break)
把time complexity, tree, hash, map, set, treemap, heap, graph, DFS, BFS, dijkstra 核心数据结构都讲了一遍,很详细,全是面试会考的知识点。

lab5: 可忽略
HW2: autograde不能批改,不要做。

lab7和lab8: 都很有意思,经过proj1的洗礼,实现treemap和HashMap就相对容易了。treemap的delete虽然josh上课时说很难,但在leetcode里,这题也就是medium,要掌握的。可以iterator用keyset实现。hashmap的话只要lecture听懂了也很容易,extra credit比treemap要简单,不必多说了。

proj2: gitlet是秋季上课老师Paul出的期末大项目,Josh把它放在了学期中,给了一个半月的时间。
我做proj2,花了大概10天,代码大概一共800行。推荐到spring break的时候做这个项目。写之前要把lab6复习一遍,再把Lecture 12看完,然后推荐先把spec读一遍,再看intro视频。磨刀不误砍柴,这个时候终于对要写几个对象、分别实现什么功能有点概念了,然后再读一遍spec,对着指令一条一条实现。缺少一个整体设计概念的话不建议着急写代码,否则你debug 40多条指令的时间会远远高于这些思考的时间。我感觉merge是最复杂的,可以先看助教的视频,他给你总结好了,7种情况,分类讨论下来有点心累,但提交autograde看到1600满分的时候爽爆了

第三个月的内容我还剩些没上完,争取这个月更新哈!














评分

参与人数 4大米 +103 收起 理由
admin + 100 很有用的信息!
zhangshaotian + 1 赞一个
fight520 + 1 赞一个!
maxxxxxx + 1 给你点个赞!

查看全部评分


上一篇:求组队学习CS61A and B
下一篇:CS61B sp21学习求组队
testtestker97 2022-7-5 22:45:38 | 显示全部楼层
本楼: 👍   100% (1)
 
 
0% (0)   👎
全局: 👍   100% (44)
 
 
0% (0)    👎
感谢LZ分享,怎么找不到加米的地方了
回复

使用道具 举报

本楼: 👍   100% (1)
 
 
0% (0)   👎
全局: 👍   98% (122)
 
 
1% (2)    👎
楼主真的超棒!
回复

使用道具 举报

ccyangy1 2022-7-29 01:06:49 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (17)
 
 
0% (0)    👎
楼主你好 我是新手,正在学21SP 在lab6  卡住了,请问方便给个你的github链接,让我学习一下code 怎么写吗? 我网上没找到21sp的code。谢谢!
回复

使用道具 举报

本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (25)
 
 
0% (0)    👎
感谢楼主细致的总结!🎊
回复

使用道具 举报

haaaaaz 2022-7-5 05:50:22 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (10)
 
 
0% (0)    👎
超级感谢~~ 很有用的资料~~
回复

使用道具 举报

本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   0% (0)
 
 
0% (0)    👎
超级感谢楼主:) 总结得很细致
回复

使用道具 举报

pangdudu88 2022-7-5 21:22:17 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   97% (269)
 
 
2% (7)    👎
感谢分享,怎么找不到加米的地方了
回复

使用道具 举报

wyqfrance 2022-7-5 21:30:31 来自APP | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   84% (11)
 
 
15% (2)    👎
总结的很好
回复

使用道具 举报

ken_2333 2022-7-6 13:05:00 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   0% (0)
 
 
0% (0)    👎
感谢楼主总结
回复

使用道具 举报

AAAAAA都素A 2022-7-7 03:24:44 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   98% (183)
 
 
1% (2)    👎
感谢感谢 楼主辛苦
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表