一亩三分地《新生手册+美国生活指南》下载

一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货

最近看过此主题的会员

E轮2.5亿美元融资
K12教育独角兽一起作业
北京-诚聘人工智能/教育/大数据岗
码农求职神器Triplebyte:
不用海投
内推多家公司面试
前Google华人高管创立
面试offer一键直通
Leap.ai助你进入热门独角兽
硅谷AI创业公司
图灵视频
招聘多个工程师职位
查看: 2943|回复: 46
收起左侧

普林斯顿 算法课 (上)学习总结,附每周Project链接

  [复制链接] |试试Instant~ |关注本帖
我的人缘0
Self_Learner 发表于 2018-5-10 08:37:55 | 显示全部楼层 |阅读模式
本楼: 【顶】   100% (1)
 
 
0% (0)   【踩】
全局: 顶  100% (27)
 
 
0% (0)  踩

[Coursera]Algorithms, Part I #6 - 2018-05-09@MOOC

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

您需要 登录 才可以下载或查看,没有帐号?Sign Up 注册获取更多干货

x
课程链接:https://www.coursera.org/learn/algorithms-part1我的每周Project链接:https://github.com/Self-Learner-DD?tab=repositories

这是一门经典的数据结构与算法课,免费,分上下两部分,上部分内容包括Union-Find, basic data structures(Array, LinkedList, Queue, Stack, prioprity queue, symbol table...), sorting algorithms (selection sort, insertion sort, shell sort, quick sort, merge sort, heap sort), searching algorithms (Binary search tree, Red-Black BST, hashing), 所以程序都用java实现,代码风格简洁,很值得学习。

讲一下我上这门课的背景:
我自己的背景是纳米材料方向的博士,去年六月分考虑转行,本科上过的那点CS课程可以忽略了,之前的基础也就是上过introduction  to computer science and programming using python. 十月分的时候开始刷题,那时候在实习(非CS实习),每天只能刷一两道题,见到的题基本上都是不会的,所以找了这门课开始补一补算法和数据结构方面的基础。这门课的算法是用Java实现的,我那时只会python,所以本来想不学具体implementation,只学算法概念,然后再试着用python去实现,后来发现不行,不懂java语法,不做implementation理解起算法来很吃力,还记得第一章的作业是用Union Find去simulate Percolation threshold, 现在看起来比较routine,但当时看到的时候真是一脸懵逼。。。课程和作业的难度挺大的,特别是对我这样几乎零基础的人,不过内容真的很好,讲得很实用,而且作业是能够提交和被评测的,不会出现闷头做了也不知道对错的情况。我用了三个月(11/2017 - 02/2018)上完了课程的上部分,遇到不懂的Code就自己一行一行得跟着打一遍,还上了一点Berkeley的CS61B(也是一门经典的算法课程,比Princeton这门更基础一些,但是好像只有视频,没有公开课版本,所以作业不能被grade)学习Java语法,实在理解不了的就先放下继续往下看,写作业之前再复习下本章的内容,作业做不出来就去搜别人的答案,第一遍作业做到80分能提交就好,继续往后上,上到后面发现前面的内容就变得有点基础了,然后再回来二刷,把作业做到100,我自己的作业答案已经贴在前面了。

现在在陆陆续续得上第二部分,主要讲图和字符串相关的算法,有了这些基础之后,刷题会感觉好很多,很多题虽然还是不会做,但是理解答案不成问题了。现在Leet code我也陆续的刷到快400题了。

如果有跟我一样基础比较差的人,希望我的帖子能够鼓励到你,转行初期,刷题,上课,做project这些方方面面的东西会让人感觉overwhelming,我到现在题没有刷得很熟练,也没怎么做project,还是会感觉overwhelming,但是一步步来吧,慢慢坚持下来,再回过头去看,会发现自己已经迈出很大一步了。





评分

参与人数 11大米 +51 收起 理由
wendy_du + 5 给你点个赞!
wangylcun + 3 给你点个赞!
17717093229 + 3 很有用的信息!
Jerry_37 + 10 给你点个赞!
努力不困难 + 5 给你点个赞!
沽名钓誉 + 10 给你点个赞!
Jingciii + 3 给你点个赞!
青城竹韵 + 3 给你点个赞!
Bethuel + 3 给你点个赞!
FlyingSheep + 3 很有用的信息!
橙尘兮 + 3 给你点个赞!

查看全部评分


上一篇:CS61B学完还要学哪些东西才能找工作?
下一篇:普林斯顿算法课 第一部分
我的人缘0
konve123 发表于 2018-5-26 17:44:30 | 显示全部楼层
本楼: 【顶】   100% (2)
 
 
0% (0)   【踩】
全局: 顶  100% (6)
 
 
0% (0)  踩
最近剛跟完了演算法的上下部份
大概花了三個月的時間

這是我寫在長期加分帖的心得
希望分享給每個對這門課有興趣的同學
也歡迎一起討論
這是我作業:https://github.com/yhtsao/princeton-algs

1. 課程的基本信息:課程平台,開課學校,課程全名,開課時間,課程鏈接。
        課程平台:Coursera
        開課學校:Princeton University
        課程全名:Algorithms, Part I & II
        開課時間:一直都會開
        課程鏈接:Part I - https://www.coursera.org/learn/algorithms-part1/
                          Part II - https://www.coursera.org/learn/algorithms-part2/

2. 課程難度,作業量,每週花在這門課的時間,以及你的基礎(是初學者?還是本來就是你的專業內容?)
        我的背景:本科CS, 碩士CS, 以前已經在學校修過演算法相關課程,目前工作也是在寫JAVA
        課程難度:對本科生來說,不會太難
        花的時間:我花了大概三個月的時間把兩個部分上完,上跟下分別都拆成六週的課程,
                每週的視頻大概都是三到四個小時,前五週都會有作業,總共是10次作業,每次作業大概會花5-6小時完成
                如果認真一點,空閒時間不要打混,用平日晚上還有週末的時間,應該兩個月就夠了
               
3. 各種感想、收穫、課程內容介紹、你對這門課的評價等等~~這個就自己發揮啦(請具體!)
        這是我第一次跟的公開課,原本只想把第一部分跟完就好,後來還有點時間就繼續把第二部分也上完了。
        第一部分:Stack, Queue, Sorting, Symbol table, BST, Hash Table
        第二部分:Graph (DFS, BFS), MST, Shortest Path, Max Flow & Min Cut, String processing (Radix sort, trie, substring)

        因為本身是CS專業出身,對於大部分的演算法都是有點基礎的
        但我必須說這堂課最值得上的地方,就是老師在介紹每個演算法的時候,都會把前因後果說明得非常清楚
        假設為瞭解決A問題,一開始一定是用brute-force的解法,之後才介紹了B解法,
        但B解法有memory complexity的issue,為瞭解決這issue,又有了另一個C解法
        
        老師介紹每個演算法,都會在最後放上java sample code來佐證這個演算法,會讓人對這個演算法有更直覺的理解
        以前上課,大部分放上的都是pseudo code,就會比較沒感覺
        也會對於介紹演算法的各種應用,這部分也是我覺得很棒的地方
        因為以前學演算法都像是為了考試而理解它,學完還是不懂為什麼需要有這些算法的存在
        
        大部分的作業也都是讓你用課堂上的演算法去應用在現實情況,
        例如:他會讓你用graph去解決word net (每個詞彙跟另一個詞彙的關係)的問題,而不是實作graph
        
4. 如果讓你重新學過這門課,你會在學習方法上,背景提升上會有什麼樣的改進(選答)        
        我會先把課程講義看一遍再開始上課,會更容易跟上老師上課內容

5. 這門課和其他你跟過的課,用過的資源或者是學校上過的課有什麼區別?(選答,如果你還跟過其他類似的課的話)
        這門課用的課本不是聖經本(Introduction to Algorithm),而是用Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne
        以前上演算法課程有一段介紹divide and conquer 和 dynamic programing
        但這門公開課沒有特別針對這兩個概念去做說明

6. 給以後打算學這門課的同學一些建議(請具體!可包括任何方面)
        如果是CS專業的同學,但還不會寫JAVA,可以直接來上,裡面沒用到太難JAVA的語法,還算好懂
        如果不是CS專業的同學,建議先會寫一點JAVA再來跟這堂課,畢竟這堂課JAVA只是輔助,
        如果上這堂課花太多時間在理解JAVA code,就跟這堂課的目的背道而馳了
        
        視頻的部分,老師講話的語速很慢,所以理解上不會有太大問題,我都是開1.25x速在上課

        作業的部分,建議都是跟完當週視頻在開始寫,
        因為老師在課程介紹的演算法應用,通常會是當次作業的內容
        我寫作業的順序是看完spec之後,他還會有個checklist的網頁
        裡面都是一些以前被提問過的問題,已經相對應的回答,可以讓你避開一些雷
        還有一個區塊是Possible Progress Steps,會有一些實作的步驟讓你參考
        我大部分都是跟著他的progress steps去實作,會比較快上手

        如果滿分十分,我會給這門課十分
        真心推薦給每個對演算法有興趣的同學,或是對演算法感到疑惑的人

评分

参与人数 1大米 +3 收起 理由
Self_Learner + 3 给你点个赞!

查看全部评分

回复

使用道具 举报

全球28万学生4.7分推荐
我的人缘0
AaronZhao 发表于 2018-5-11 07:31:44 | 显示全部楼层
本楼: 【顶】   100% (1)
 
 
0% (0)   【踩】
全局: 顶  82% (19)
 
 
17% (4)  踩
给楼主点赞!我也正在学习算法,做了一个GitHub repo整理了一些笔记
https://github.com/aaronoah/algorithm-cracker

评分

参与人数 3大米 +18 收起 理由
Self_Learner + 3 给你点个赞!
沽名钓誉 + 10 给你点个赞!
billthefreeman + 5 笔记不错

查看全部评分

回复

使用道具 举报

我的人缘0
YADDA 发表于 2018-5-10 21:30:45 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  100% (7)
 
 
0% (0)  踩
好棒啊! 我也正在打算开始跟~ 向楼主学习
回复

使用道具 举报

我的人缘0
yuanjing_sky 发表于 2018-5-10 21:36:03 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  100% (9)
 
 
0% (0)  踩
楼主,你好厉害,真的很佩服
回复

使用道具 举报

我的人缘0
kcandyc 发表于 2018-5-11 07:23:04 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  100% (1)
 
 
0% (0)  踩
感谢!要努力学习!
回复

使用道具 举报

头像被屏蔽
我的人缘0
sifangyou 发表于 2018-5-11 22:38:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

头像被屏蔽
我的人缘0
sifangyou 发表于 2018-5-11 22:38:07 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

我的人缘0
solv6868 发表于 2018-5-16 02:16:56 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  100% (7)
 
 
0% (0)  踩
这门课如果完全变成0基础的话,可以看一下sedgewick大神的https://introcs.cs.princeton.edu/java/home/
回复

使用道具 举报

我的人缘0
vera9243 发表于 2018-5-16 10:04:41 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  100% (1)
 
 
0% (0)  踩
给楼主点赞,我也在上,关注
回复

使用道具 举报

我的人缘0
Andy_Wang 发表于 2018-5-17 20:30:59 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  82% (34)
 
 
17% (7)  踩
楼主有没有活跃的讨论群呀
回复

使用道具 举报

我的人缘0
Doublebetter 发表于 2018-5-17 23:35:53 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  100% (1)
 
 
0% (0)  踩
AaronZhao 发表于 2018-5-11 07:31
给楼主点赞!我也正在学习算法,做了一个GitHub repo整理了一些笔记
https://github.com/aaronoah/algorith ...

谢谢,星
回复

使用道具 举报

我的人缘0
Doublebetter 发表于 2018-5-17 23:37:15 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  100% (1)
 
 
0% (0)  踩
AaronZhao 发表于 2018-5-11 07:31
给楼主点赞!我也正在学习算法,做了一个GitHub repo整理了一些笔记
https://github.com/aaronoah/algorith ...

整理的很有帮助,现在刚开始github然后最近due多没写了_(:3」∠❀)_谢谢层主分享
回复

使用道具 举报

我的人缘0
 楼主| Self_Learner 发表于 2018-5-18 23:37:08 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  100% (27)
 
 
0% (0)  踩
Andy_Wang 发表于 2018-5-17 20:30
楼主有没有活跃的讨论群呀

没有 不好意思~
回复

使用道具 举报

我的人缘0
tmeng7777 发表于 2018-5-19 06:10:21 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  100% (1)
 
 
0% (0)  踩
不错啊,兄弟在哪里,我也在学可以一起搞
回复

使用道具 举报

我的人缘0
 楼主| Self_Learner 发表于 2018-5-19 13:16:15 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  100% (27)
 
 
0% (0)  踩
tmeng7777 发表于 2018-5-19 06:10
不错啊,兄弟在哪里,我也在学可以一起搞

我在LA,我的GitHub会不定期更新新的project
回复

使用道具 举报

我的人缘0
Cosmos218 发表于 2018-5-20 23:05:42 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  75% (3)
 
 
25% (1)  踩
CS61B的project可以做的,本地评测,还有gui,做的也很爽~感觉前部分的java语法讲得很好,熟悉语法后再上普林算法会更平缓。我当时不会java直接上普林算法痛苦死了
回复

使用道具 举报

我的人缘0
 楼主| Self_Learner 发表于 2018-5-21 12:23:57 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  100% (27)
 
 
0% (0)  踩
Cosmos218 发表于 2018-5-20 23:05
CS61B的project可以做的,本地评测,还有gui,做的也很爽~感觉前部分的java语法讲得很好,熟悉语法后再上普 ...

多谢纠正。那推荐没有Java基础的同学从CS61B开始上手!
回复

使用道具 举报

我的人缘0
wataxiwaxiudesi 发表于 2018-5-22 18:46:31 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  57% (4)
 
 
42% (3)  踩
给楼主点赞,我也在上,关注一波~
回复

使用道具 举报

我的人缘0
gop157 发表于 2018-5-22 20:28:48 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  66% (2)
 
 
33% (1)  踩
给楼主点赞,我也在上,刚刚在做percolation的大作业,感觉毫无头绪啊哈哈哈哈哈
回复

使用道具 举报

我的人缘0
gop157 发表于 2018-5-22 22:17:38 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  66% (2)
 
 
33% (1)  踩
C:\Users\power\Desktop\Snipaste_2018-05-22_22-13-40
lz这个assertValid是啥啊,是p大自带的那个jar里面的函数吗还是java本身自带的,我也是初学者,看到这一句看不懂了求回答
回复

使用道具 举报

游客
请先登录

本版积分规则

提醒:发帖可以选择内容隐藏,部分板块支持匿名发帖。请认真读完以下全部说明:

■隐藏内容方法: [hide=200]你想要隐藏的内容比如面经[/hide]
■意思是:用户积分低于200则看不到被隐藏的内容
■可以自行设置积分值,不建议太高(200以上太多人看不到),也不建议太低(那就没必要隐藏了)
■建议只隐藏关键内容,比如具体的面试题目、涉及隐私的信息,大部分内容没必要隐藏。
■微信/QQ/电子邮件等,为防止将来被骚扰甚至人肉,以论坛私信方式发给对方最安全。
■匿名发帖的板块和方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

手机版|小黑屋|一亩三分地论坛声明

GMT+8, 2018-8-20 17:27

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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