猿创征文 | 我的CS Master毕业之路

写在前面:博主是一只经过实战开发历练后投身培训事业的“小山猪”,昵称取自动画片《狮子王》中的“彭彭”,总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成,愿将昔日所获与大家交流一二,希望对学习路上的你有所助益。同时,博主也想通过此次尝试打造一个完善的技术图书馆,任何与文章技术点有关的异常、错误、注意事项均会在末尾列出,欢迎大家通过各种方式提供素材。

  • 对于文章中出现的任何错误请大家批评指出,一定及时修改。
  • 有任何想要讨论和学习的问题可联系我:[email protected]
  • 发布文章的风格因专栏而异,均自成体系,不足之处请大家指正。

猿创征文|我的CS Master毕业之路

本文关键字:留学、CS、Master、硕士、毕业

一、踏上征程

大家好,这一篇文章将为大家介绍Computer Science的Master学位毕业之路。主要是向大家介绍一下国外的学习模式,以及计算机相关专业的学习内容。

在粉丝群中也有很多小伙伴想了解一下具体的模式和过程,也借这个机会和大家分享一下。由于每个人的情况都有所不同,不同的学校的毕业标准也是各式各样,所以在开始之前会先为大家介绍一下小编的个人情况以及学校专业的相关情况,大家可以自己代入和对比。

1. 个人背景

在开始攻读Computer Science硕士学位之前,小编已经在国内获得了一个软件工程硕士学位【985 + 211高校】,不过距离毕业已经过去了差不多两年的时间。
小编在本科毕业之前,就以实习和全职的方式开始进行工作,截止到第二硕士学位【本文将要介绍的CS Master】开始学习之前,已经有五年的软件开发及培训经验,主要领域为Java、大数据,包含Linux、数据库、前端等等相关技术栈。

说明以上内容主要是表达小编是在一个有比较丰富的相关技能经验的背景下来学习的,对于已经工作多年并且想要提升自己的小伙伴来说,可以提供一个很有力的参考。后面将会讲述在小编个人背景的前提下进行学习的真实体会,如果是刚刚本科毕业想要留学的小伙伴,也可以参考一下具体的学习形式。

2. 学位项目

对于国外的学习模式,整体是一个更加灵活的选课和学分完成制。也就是说第一大前提是在规定的时间内完成所需要的学分,而更加灵活体现在每个学期上什么课,上几门课都是可以自己选择的,每个学期开始之前,你的课程顾问【可以理解为学院主任】会和你邮件沟通,告知你可以选择的一些课程,在新学期开始之前你会知道具体的上课时间。
专业的官方介绍上用的词是Project,实际情况也是只要达到验收标准就可以毕业,整个的过程还是比较灵活的,所以你也可以把所有专业课的学习看作一个项目。毕业规则将在文章结尾给出,接下来为大家详细介绍一下整个的学习内容及学习过程。

二、负重前行

当时选择再读一个硕士学位主要是想对自己有一个提升,到外面的世界去看看,但是又担心自己的英语不够好,所以选择了一个自己之前已经学过的相似专业,内容又不完全相同,这样在保证可以毕业的同时,能够尽可能的多学一点新的知识。

1. 学习障碍

  • 语言障碍

小编的英语水平属于那种四级都考不过那种,所以需要上一段时间的桥梁课程。在这期间主要是学习英语的听说读写,也会有一些专业课程,不过占比比较小,主要是为了能尽快开始专业知识的学习,也是能多少减少一些后面课程的压力。

到了学习专业课的时候,其实对小编来说要不要去上课其实没有太大的区别,因为每次去了基本除了头又大了一圈也没什么特别的收获,基本都是回来靠自学完成了整个专业的学习任务。

  • 学习模式

虽然总体来说学习强度不高,每门课每周可能只有一到两次课,还有很多是线上资料和录播视频可以自己学习。但是平时的HomeworkQuiz还是比较多的,这些都要在学生后台来完成。除此之外,MidtermFinal Exam对成绩的影响也比较大,和Quiz一样,属于在线限时提交的考试。虽然部分课程也可以提交论文或PPT作为成绩的评定,但是在计算机专业中还是太少见了。

2. 学习内容

对于学习内容部分,由于课程是可以根据自己的意愿选择,并且学校之间也有所差别,所以本部分内容仅供参考:

  • 必修课程(3门)


这三门必修课可以说是小编的噩梦了,在最开始学习的时候绝对是自信满满的状态,心想自己工作这么多年,即使都靠自学也肯定稳稳拿捏了,结果这三门课的成绩都不是很理想。
【算法设计与分析】:此前已经在国内正正经经的学过两遍数据结构了,但是发现很多东西还是有些浅薄了。比如对于算法时间复杂度和空间复杂度的原理和分析方法,在英文教材中讲述的是十分详细的,包括对于递归的分析【Recursion Tree】和关于TimeCost的计算,都有丰富的例子。而即使是机械工业出版社有名的黑皮书系列,在进行翻译时,也是进行了一些删减。
在学习的过程中,并不仅仅包括经典算法和数据结构的学习,最主要的是体现设计与分析,这就使课程的难度一下加大了。在作业中不仅仅是简单的计算复杂度与描述数据结构的工作流程,还会有一些原理应用和算法设计的题目,最后的Project是自己阅读论文完成一个课题的研究,然后使用PPT进行汇报,整门课学完真的是充实的不要不要的。

【编程语言思想】:其实在刚开始学习这门课的时候,我是没有太过在意的。心想:不过就是编程语言而已,最多就是讲讲基础语法,语言特性之类的,简直不要太简单,然而结果是我太天真了。首先,一上来就是讲Lambda 表达式,虽然之前也接触过匿名函数函数式编程,但是还是感觉自己的基础属于不够看的程度,毕竟完全没有从原理和思想的角度系统的学习过。
接下来就是平均一周一门语言,讲每一门语言的特性、语法,比如Perl,C++,C#,AspectJ等等,自己最熟知的Java虽然有提到,但是不在学习内容之中。一开始还以为是不是课程过于陈旧没有更新?但是接下来的授课内容又一次颠覆了我的想法:在学习了一些编程思想后,老师会在作业中要求我们使用一个不支持某些特性的语言去想办法实现某一特性。

比如:让一个不支持多继承的语言,能够实现多继承,并且正常使用。我一开始听到这一操作的内心活动就是:What?! And 。。。 Why?! 不过当我真的做到了之后,我的心里活动就只剩下:我去!!我去!!我去!! 虽然这门课的成绩不够理想,因为学了太多新的语言,考试的时候已经混乱了。。。但是真的对编程和思考有很大帮助。

【高级操作系统设计】:首先,整个的课程是围绕着一个小的开源系统内核,整个课程的内容着重讲的是资源调度与多线程,包括硬件存储与磁盘阵列等。不得不说,当在企业中工作多年之后,能有机会系统学到这样一门课,一个最多的感觉就是:搜噶!搜噶!好像有很多东西一下子就融会贯通,变得合理起来了。
因为在课程的学习过程中,都是课上只讲理论,而课后作业是直接
修改系统内核代码
,甚至需要自己去定义当出现多个线程同时运行时,系统如何分配资源。原来对于多线程的理解就只是停留在程序争抢时间片,而实际上谁先执行谁后执行都是有一个具体策略的,也是能够自己定义和控制的。
刚开始,由于完全没有学习过相关的内容,所以自己查阅资料和学习讲义花了很长的时间。但是当实际去操作时,发现也没有很难,底层代码基本都是C语言,理清逻辑之后还是比较简单的。于是前两次的Homework都得了满分,就当我放松警惕的时候,最后一次作业的代码编译后却无法正常运行,最后也没有成功解决,被扣掉了好多分,最后这门课也是擦线通过,不过虽然如此,也在和教授直接沟通的过程中学到了很多知识。

  • 选修课程(6门)


对于选修的课程其实都是相对简单的,课程的验收形式也较为宽松。有些是和平时作业一样,提交一个小的项目,有些则是提交论文和PPT,不过大多还是以考试的方式进行验收。这里就不在每一门课上都展开介绍了,小编个人感觉这些课程还是比较简单的,不论是从内容深度还是内容丰富度上,基本都和国内差别不大。如果你已经在编程领域有一定的工作经验了,我想通过这些课的难度都不大。
这里只得慨叹一声:必修课不愧为必修课,真的是会有明显的区别。在学习完所有的课程后,就只剩下一门和毕业相关的课程了。这里有一个小小的Tips:遇到什么学习上的问题,一定要多和课程的Professor以及自己的课程顾问邮件沟通,一些表面上定死的提交时间和成绩也不是完全不能更改的,但是还是建议大家踏踏实实的学习,不要有任何学习任务的积压。

三、究极压线

虽然自己的想法一直都只是毕业就可以了,也没有想着把每门课要学的明明白白,但是按照整个的学习模式走下来,发现真的收获了不少。在各种DeadLine面前,为了能保住狗命,不得不做出一些学习上的努力,而且这些努力其实无形中被平均分散了,基本不会有考前不眠夜的情况。

1. 答辩项目

毕业答辩的形式基本与国内相同,只是在论文的要求上有所不同。你可以选择项目类的毕业设计,这样的好处是你的论文就用项目文档来代替就OK,不过你也需要实际的做出内容。在毕业答辩的现场,你需要回答在坐评委老师的问题。
反正在下的英语不好,也不需要藏着掖着,开篇就说:My English is not well but I’ll try my best. 接下来就是对着PPT的英文备注一通阅读,当然要适当的加一点指点的手势和眼神,可以让整个过程更自然一点。
我做的毕设项目是一个用较新的主流技术栈架构出的电商平台,要完成功能需求、功能设计、原型设计、数据库设计、安全设计等相关文档,并不强制要求演示项目,所以我演示了一下我正在运行的Redis和Elastic Search服务,毕竟界面和功能还是有一些小问题,在PPT中已经完整的展示了运行截图,最后顺利通过,整个过程感觉台下的教授们都是比较友善的。

2. 毕业规则

我所在的学校不能算是一所很知名的学校,不过CS的专业排名还不算糟糕,大家可以将之定义为一般的学校。如果想要获得学位你需要完成30个学分,其中包含专业课程和毕业答辩,每个课程3学分,也就是要完成9门课程的学习,以及1门和毕业相关的课程【这门课不计入绩点】。

国外的课程成绩基本都是按照等级来评定成绩,每门课结算时会有具体的分数,然后根据分数的区间转换为A、B、C、D的成绩档位【每个等级也会有小档,如A-】,而绩点直接是根据每门课的成绩档位来计算的,毕业要求是要满足绩点达到3.0/4.0,也就是平均成绩要在B以上【最差成绩不能低于C】,再折算到每门课基本都要达到80分以上。

前文中已经提到,专业课程比较困难,因此都在等级B以下,主要是通过选修课疯狂冲A,最后终于实现了究极压线。不过这里不推荐大家这么做,毕竟风险有点高,我是因为提前学完了必修课,后面都是剩的选修课,所以一下成绩就变得不明朗起来,导致自己比较被动。
大家在学习的时候可以调整调整,而且万一苗头不对,一定提前和课程顾问说明,表达自己学习上有语言的障碍,但是自己仍然很努力,吧啦吧啦。。。也许课程顾问会和院长申请,综合评定你的各方面情况来决定你是否能毕业。

扫描下方二维码,加入CSDN官方粉丝微信群,可以与我直接交流,还有更多福利哦~
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u012039040/article/details/126825897