分享逆时钟|继续折腾,33岁准备读计算机在线硕士,自学CS本科内容学习贴
来自:Pegasus(我希望赫敏和哈利在一起)
2022.01.26更新 (接下来的更新准备放在评论里了,不然每次一样的内容都要审核好久)
前天开始了一门新课,PostgreSQL for Everybody专项课程里的Database Design and Basic SQL in PostgreSQL,花了两小时学完了第一周,第一周内容不多,教授废话比较多,然后经常喜欢用笔试图画一些关系,但其实是毫无逻辑的乱画,感觉准备到不是特别充分。对比起来,edX上斯坦福的那几门关于Database的课可能更好,问题是它没证书。看Syllabus两门课教的内容大致相当,我也许最终两门课都会上一上。
昨天把Algorithms, Part 1第二周前半部内容上完了,作业也做了,实现两种queue,一个用two-way linked list,一个用array,比较简单,但也出错了。今天把后半部分的elementary sorting看完了,没有作业,但打算今天把里面提到的一些排序算法自己实现一下,比如shell sort和shuffle,以及排序算法的应用convex hull。
对了,昨天还更新了下我的网课github的readme,https://github.com/zivshek/Online-Courses.
----------------------------------------
2022.01.23更新
华盛顿大学的Programming Languages, Part B第一周的内容昨天学完了,之后都在做作业。这次又教了一门新的语言,Racket,老实说一开始看到那么多的括号是有点懵逼的,做作业的过程中最开始也经常少打括号,不过语法问题习惯起来也很快。

学了几个编程中很重要的概念,比如thunk, stream, memoization, 其他的视频主要是在教Racket语法和特性。作业上手了以后感觉难度还行,但一开始定义stream的时候必须要照着视频做,不然真的很混乱。交作业的时候发现本地运行的好好的,交上去却编译不了,看了下论坛,是“vector-empty?”这个函数是后来的版本新加的,课程里用的版本还没有,记得使用"(= (vector-length vec) 0)"来判断是否为空哦,不然编译失败了要等一天才能重新递交,十分蛋疼。
----------------------------------------
2022.01.20更新
Princeton的算法1的第一个作业percolation今天沉下心来做了,发现其实并不难,主要是题目很吓人,又是数学公式,又是Monte Carlo。认真读完题,就能理解要做什么了,花了大概2小时做完。不过有个函数(boolean percolates())花的时间很多,是O(n平方),把sites设置成200*200就非常慢了,还得再想想。晚上又花了一小时,终于做出来啦!重新看了下视频,发现视频里有提示如何解决O(n2)的问题,真的聪明啊,学到了。

----------------------------------------
2022.01.19更新
楼主又procrastinate了。。。还是畏难,一直没开始Algorithms I的week 1作业percolation,反而这两天上了一门新的课,Design Patterns,花了一天时间把第一周的课学完了以及通过考试。这门课对我来说简单一点,因为我之前有读过Game Programming Patterns一书,有些模式也在工作中经常用到。第一周讲了singleton, factory, facade, adapter, composite, proxy, decorators, 基本上可以理解,但一时想不到实际使用的例子。打算这两天再在笔记里把它们列出来,尽可能通过自己的语言来解释它们,以及讨论它们的区别,因为facade, adapter, 和proxy这些还是挺类似的。
然后下午又把第二周学完了,太简单,只想赶快过完。粗略看了下第三周的标题,也还行,都是些常用的原则。可能今晚会学完。
然后这周的计划是把算法1的percolation作业做了,已经overdue两天了。。。
----------------------------------------
楼主的经历在这,折腾十年最终英专转游戏程序员成功。
楼主从事游戏开发已经快三年了,年龄也从出国时的快28岁到现在的33岁了。这三年来跳过一次槽,目前是中级游戏程序员。但一直以来对收入和工作内容并不是特别满意,可惜由于没有CS本科或者硕士学历,投简历转行一直没有收到过回应。自己也反思了下,对很多计算机基础知识掌握的并不是很好,我相信如果让我去做我也能学好,但竞争太大,对企业来说没有必要招聘我这种背景来试错。所以自从毕业就在考虑读研的事情。由于我还需要上班,所以本地学校都不现实(都是on-campus),只考虑线上的。看来看去只有佐治亚理工最便宜,学下来7000美金。问题是我完全没有背景,贸然去申请一个怕申请不上,二一个怕申请上了学不下来,毕竟没有系统的学习过计算机,比如数学、计算机硬件、操作系统、编译原理、计算机网络、数据结构和算法(只学过一些基础的和一些游戏里用得到的比如A*寻路,学校连binary tree都没教过)、数据库、软件开发(架构啥的)这些统统都没有涉猎过,拿什么去大厂找工作甚至读研呢?很早之前就发现一个叫OSSU的github repo,是一个民间总结的完整计算机科学课程,全部都是用的在线MOOC资源,包括但不限于Coursera, edx, MIT Online等等,这不就是我需要的吗?一直想跟着自学来着,但就是下不定决心,主要就是担心这个学了没用,一直这么拖了两年。现在想想,甭管有用没用,两年前我如果开始了,现在估计都上完了。即使不能帮我升职或者考研,我相信也会让我成为一个更好的程序员;而且就我所知,很多在线的CS硕士课程都接受这种在线教育经历,而我那么一直犹豫着,也没见着自己做了什么有意义的事。这是一个教训,随着年龄越来越大,拖反而是更加冒险的选择。
终于从2022年伊始,我开始自学了。由于我有一定的编程经验了,所以一些基础课我就跳过了,比如什么Simple/Complex Data。第一门上的是华盛顿大学教授的Programming Languages, Part A。刚开始我还是很怀疑的,他用于教学的是一门从来没听过的语言,叫SML,编辑器的选择也很少见,是Emacs(类似Vim,操作比较繁杂,不是那种plug-and-play的),我想我已经有基础了,真的有必要学这玩意儿吗?但看在它4.9评分的份上,我硬着头皮安装了环境,开始了课程。很快我就庆幸自己没有跳过这门课,这个教授的课程设计的太好了,慢慢引申,节奏也很紧凑,作业也有挑战,口齿清晰,表述严谨,关键是我一开始不大看好的SML写出来居然这么优雅,爱了爱了。事实证明,语言只是工具,他通过SML这样一门functional language(相对于OOP)教了我们很多重要的概念,比如closure, first-class function, higher-order function, currying, functional programming等等,很多东西我还真不知道(或者一知半解),然后有大量的recursion训练,做完还是成就感满满的。我花了大概两周学完了5周的内容(其实只有4周,第一周就45分钟教你安装环境而已),又马不停蹄的开始了Part B的学习。Part B的内容也很吸引人,第一部分是教一门新的语言Racket,与SML不同的是,Racket是dynamic type的。第二部分则是要我们自己“发明”一个语言。
此外我还在几门算法课间左右横跳,难以抉择。最开始是Princeton大学的Algorithms 1 & 2, 课程讲的挺好,娓娓道来,但作业太难了,第一个就不会,它给的estimate就是8小时。。。于是我就跳去了Stanford的Algorithms专项课程,毕竟这里面的四门课才是OSSU上提到的,(太感谢MOOC了,世界名校课程随我挑,嘿嘿)。上了第一周的,这个讲师的语速很快,理论上是好事,因为我一般都是开1.25或者1.5倍数播放的,但他口齿好像不是特别清晰(虽然他英语非常好,但就像我听周杰伦那种感觉。。。不知道你能不能明白)。其次他的备课以及表达没有特别好,远不如Princeton那个教授讲的好。再次,他的板书惨不忍睹,解释也不到位,完全是浪费时间,不如直接给看slides。所以我就把这门课退了,回到了Princeton的课。
另外我还选了一门Build a Modern Computer from First Principles: From Nand to Tetris,这门课旷日持久,还有上下两个部分,最终就是造一台来运行俄罗斯方块的电脑。
其他还有微积分1,计算机网络,学术写作(对!这个也很重要,我本科论文语言幼稚的可笑,读研的话绝对不能重蹈覆辙了!)等等,都打算在一年内学完。值得高兴的是,公司把Coursera年费报销了,可以随心所欲的学习啦!
后续我会继续在此帖更新我上的课程、体会和感悟,如果有一起学习的朋友欢迎加入哦!
你的回复
回复请先 登录 , 或 注册相关内容推荐
最新讨论 ( 更多 )
- 焦虑治愈剂|人生就是一个乱活也不会完蛋 (33!)
- 分享逆时钟|26岁海外生活,特立独行及不确定的人生 (茄妹)
- 分享逆时钟|30+央企财务裸辞转行宠物美容师3.20更新 (做人最紧要开心)
- 需要建议|关于继续准备留德还是尝试双元制 (王二真)
- 需要鼓励|发现自己还是有时会感到焦虑 (電動魚雷)