UNC MSIS (Software Dev Track) 第一学期就读体验

今晚考了最后一场试,交了最后一篇paper,解放了。

2023.12.12

前言

我本想用「项目介绍」作为这部分的标题,转念一想自己很难写得面面俱到,就用「前言」作引子吧。

UNC 的 MSIS 属于 School of Information and Library Science(SILS), 也就是 iSchool。iSchool 有很多种,总结如下:

  • Schools of Librarianship 的前身,这些 iSchools 会提供 American Library Association 认证的学位, SILS 就是其中之一。
  • Computer Science departments 的前身,这些 iSchools 更多关注于 Human-Computer Interaction(HCI), Irvine 就是其中之一。
    • 也有一些更混合一点的学院,比如 Indiana School of Informatics, Computing, and Engineering, 学院的一部分来自于 department of library and information science, 另一部分来自于 Computer Science department.
  • Schools of Media and Communication 的前身。也有一些混合的学院,比如 Rutgers 的。
  • Management or Business programs 的前身。

UNC SILS 在 2022 年春季有过一次课程改革,实行了新的 Curriculum, 无论是 MSIS 还是 MSLS 都把必修课的数量减少到了两节。与此同时可以更自由地选择 bins: Information, Services and Organizations, Technology, People and Communities. 只要满足了 bin 的要求,就可以毕业。在 Technology bin 里有一些看上去很「硬核」的课,比如 Database, Web Development, 和 Visual Analytics 等等。不仅如此,在UNC 的 MSIS 项目里有相当一部分 Computer Science 背景的教授和 advisor, 目前来看,UNC 的 SILS 和 2022 年之前相比,的确是更 “technical” 一点,也更适合作为一个不错的保底选项

为什么说是保底选项

我不觉得 UNC SILS 是任何人的 Dream School。对于公立美本学生来说,大多数人会选择申请一所私有的研究生学校来「圆梦」,这些学校可能是高排名,回国辨识度高;也有可能是区位好,提供的就业资源多;也有可能是位于大城市,生活方便,恋爱的可能性大。对 UNC 来说,这三点都不满足。

排名

UNC 的排名很高,但在国内的辨识度不高。以我身边人(在国内)为例,有相当一部分人不知道北卡在哪里,有相当一部分人知道北卡蓝,却以为这只是一种颜色的名称。在北卡,杜克大学的名声比其他几所学校高出很多,比如杜克大学在昆山有分校,杜克大学的转码项目甚至都比 UNC 的更受欢迎。因此,在意排名和知名度的同学可能不会申请这所学校。

位置

RTP 地区的发展的确很不错,有一些知名公司的总部在 RTP 地区,比如 Red Hat, Lenovo 等。不仅如此还有一些其他知名公司的 Office 在 RTP 地区,比如 Google, IBM, Microsoft, Cisco 等。虽然有一些大公司在,但公司数量于规模和加州,西雅图,纽约地区相比还是有些许差距,但因此在求职方面的竞争也小一些,很难说孰优孰劣。不仅如此,由于 UNC SILS 的 sde 方向的校友不多,参加这个项目可能不利于 networking, 因此内推或者遇到同项目的校友可能有些许难度。

生活

和 Raleigh-Cary 地区相比,Chapel Hill-Durham 地区真的是一片荒芜……没吃的没喝的没玩的。整个 Durham 没有一家 Trader Joe’s, 连 Vermont 的 Burlington 都不如。Chapel Hill 是大学城,如果偏爱中餐的话可能会让你失望。学校旁边最繁华的街叫 Franklin Street, 仅此一条街,别无二家。如果有车的话生活半径会更大一些,好吃的更多一点。

课程体验

INLS 777: Perspectives on Information, Technology and People

教授:Melanie Feinberg

这是 SILS 的两节必修课之一,777 这节课每个老师的上课方式不尽相同,不同 section 的 workload 和侧重点也不太一样。Melanie 人很好,会记住每个人的名字,写评语也写得很用心,并且看得出很热爱 SILS. 课上会要求 collegiality points, 可以理解为 participation points. collegiality points 有很多种获得方式,在课上不爱发言的同学也可以通过其他方式或者 collegiality points. 如果要在课上参加讨论/发言,或者要完成 reflection essay, 那么需要读一些 paper, Melanie 会提供一些 preview 和 summary 来引导你读 paper, 大多都不是理工科类的 paper, 所以理解起来没有太大难度。课程一共需要写四篇 reflection essay, 每篇要求 1k 字。这节课整体不难,可以认为是水课,比较好拿分。

这节课对转码/CS/SDE, whatever programming related 的帮助可以说是没有,但如果一定要说能力提升安慰自己的话,可以提升一些语言水平,和读文章的能力(如果想搞 research 的话)。平时要花费的时间一般也就是上课之前读一读文章的 15 – 20 分钟左右 + 写 essay 的 2 – 3 小时左右。总体来说不是一节枯燥的课,我的评价是:但当涉猎,见往事耳。

INLS 690-270: Data Mining: Methods and Applications

教授: Yue (Ray) Wang

背景:我之前在文章 2023 Fall 申研总结 ✅ UVM / UNC / NEU / WPI 里写过(也可能没写,记不清了),我对 Data Science 是有一些兴趣的,且我之前上过几节非常基础的 Data Science 课。因此我的留学顾问推荐我申请 UBC 的 Data Science 项目,可我当时对 Data Science 的兴趣并不足以支撑我申请这个项目,以及我不明白Data Science 的意义在哪里,所以就没有申请。因此我决定在 UNC 上一下 Data Mining 看一看真正的 Data Scientist 是都是怎么做的。

这是一节 Data Mining 的课,如前文所述,也是我比较期待的领域之一。我在上了几次课之后迅速对这节课和 Data Science 丧失兴趣:

  • 一方面是我的确没有夯实的 Data Science 相关的基础。我在本科仅仅上过一节统计课,当时就学得晕头转向。
  • 另一方面这个老师的讲课比较枯燥乏味。上课的一般流程是照本宣科地在台前演讲,老师把每一页 slides 念完然后开始学生的 presentation(in selected topics), 对于我来说这其实是很无聊的。
  • 不仅如此我们的作业有点太少了。一共只有三次作业,而且都不太难。作业一般会要求你根据 provided code 来修改。这种作业方法我只能说见仁见智,但一共只有三次作业,有点太少,并没有觉得从作业里学到很多东西。
    • 如果完全不改直接用 provided code 来跑数据,那你能获得 80% 的分;
    • 如果你稍微修改一下,超过了 baseline,那你就能获得 100% 的分。
  • 我们还有一些 group project。我在 group project 里的是做 data collection 和 precleaning, 这是我少数会做的部分之一…… data collection 就是用 selenium 或者 curl 直接请求 API 获得数据,precleaning 就很简单地把 json 文件改写成 dataframe 的文件,然后加一些判定删掉不需要的部分。

在上课,做作业,和做 project 的过程中,我发现我的队友们说的和做的我完全听不懂,在那个时候我就知道这节课我上错了,这个领域我「感兴趣」错了。我的确不应该来上这节 Data Mining 的课。

现在上完了之后回过头看,我认为这节课比较枯燥。如果让我重新再来选课的机会,我不会上这个课。这节课对转码/CS/SDE, whatever programming related 的帮助可以说是没有。的确是会要你会一点 Python,但是太基础了。想搞 SDE 的不要来上这个课。

COMP 421: Files and Databases

教授:John Majikes

这是目前来说我在 UNC 上课体验最好的老师,没有之一,但和 NC State 的 Dr. David Sturgill 相比还是比不了。说话生动有趣,课堂上很是欢快,会开一些玩笑/自说自话。英语发音清晰,思维活跃,有自己的一套 online teaching tool,比自带的 Canvas 好用很多。上课的时候最喜欢说, when I was in IBM, when I was in Oracle… 听起来像是很有故事的人,翻了一下他的 LinkedIn,经历的确是很丰富。现在教授身体抱恙,上课且上且珍惜。

他的 online teaching tool 用来做 worksheet(课堂上和课后),也可以用来考试和做 games (可以理解为 practice exam, but a more interesting version). 一个特点是如果你做对了那么会有即时的反馈告诉你做对了。这在考试和平时练习中很有用。据他所说,SQL query 是用 Java 实现的 SQLite,整个网站则是由 Python 写的。没有试过 hack 他的网站,但研究过怎么 hack. 后来因为懒得惹上事儿就什么都没做,我甚至做作业都听他的话用 Chrome 而不是 Firefox.

除此之外还有 5 个 Assignment, 你也可以知道你做对没做对。Assignment 需要下载 Anaconda 用 Jupyter Lab 或者 Jupyter Notebook 做,然后直接提交到他的系统里面去。他的系统里有 grader,会自行跑一遍你的 code.做作业和考试的体验很好。btw 他的防作弊系统还是蛮酷的,之前看他曾经有过反作弊的研究论文发表,作业也有 logger 来定时监听你的操作,所以记得遵守 academic integrity.

这节课会有很多时间和机会写 SQL 语句,理论和实践都能锻炼到。最后的作业不会让你设计一个 database,但是会讲一些怎么设计 Database,和一些 Normalization 的部分。体验感很不错,上完这个课觉得自己什么 SQL 语句都能给写出来,很有满足感。

这节课对转码/CS/SDE, whatever programming related 的帮助还是蛮大的,可以 make your story sound. 如果没有学过 Database 的可以上一上,如果对 Database 感兴趣的可以上一上。不仅可以上 421,还可以上 521. 都是 Database, 但我这个学期好像没有开 521 这节课所以就上了 421. 鉴于研究生只要上 400 Level 以上的课都算学分,那么我觉得上 421 也蛮好的。

INLS 523: Database Systems I: Introduction to Databases

教授:Ramana Chamarty

我这学期上了两节 Database 的课。主要是为了满足 bin 的要求。而且既然已经上了一节 Database 的课了,那么同时再上一节可能会轻松一点。事实上的确如此。这节课算是 intro 里的 intro。这节课的内容大概是简单的 SQL Query,画 ER Diagram,写 Normalization,和做个 TED 演讲……什么正经课会把 TED Presentation 当作 Final Project 啊?由于我这学期上了另一节 Database 的课(COMP 421),我可以说这节课我是一点都没有学过……完全是吃 COMP 421 的老本(因为计算机学院的课上课节奏更快,内容更多,练习机会更多)。如果把 COMP 421 的难度认为是 7 的话,那么这节课的难度就是 1 – 2.

如果单纯为了满足学分要求的话,这节课是可以上的。但如果你问我学到什么东西,我只能说没有学到很多。首先是几乎没有上手实操过 SQL Query,大多时候都是看教授的演示(还经常失败……),然后讲了很多 Database 的概念和特性。我是觉得在计算机领域,或者更广阔一点地说,在 programming 方面,依然是纸上得来终觉浅,绝知此事要躬行。因为几乎没有上手实操过 SQL Query,所以考试的时候也基本上是选择题,比如:判断以下 SQL 语句的作用,和哪个是正确的 SQL 语句之类,感觉难度不大,且没用(毕竟 SQL Query 基本上可以认为是白话了……)

的确是没学到什么……如果一定要我说学到什么了,那就是 Lock 吧……但依然只是讲了一下概念,并且做了一下计算,实际做的东西比较少。这节课对转码/CS/SDE, whatever programming related 的帮助可以认为是入门级别,和自己看一下 online tutorial 的效果差不多。

INLS 582: Systems Analysis

教授:Emily Kertcher

这节课非常水,没有 attendance 要求,project 是定位目前学校里的一个系统性的问题,根据所学内容分析问题所在,然后写一篇 paper. 虽然一节课的标定时间是 3 小时,但一般情况下教授会提前下课,因为真的没什么好讲的……这节课我没觉得自己学到什么,甚至也不知道它到底是做什么的。这节课对转码/CS/SDE, whatever programming related 的帮助还是蛮大的,你可以不去上课或者把课上的时间专门用来改简历投简历和面试……

找工与个人心得

我投过大概 400 封简历,职位包括但不限于(都是 Intern):Software Developer, Back-end Developer, Front-end Developer, Full Stack Developer. 收到了很多拒信,但没有算过具体数量。SILS 本身没有 Career Fair,所以可能要蹭一蹭隔壁的 Computer Science 的 Career Fair. 我还去参加过 NC State 的 Career Fair(任何人都可以进,alumni 和在校生一样可以提前一小时进),和 SWE23. SWE23 在所有 Career Fair 中体验感最佳,效果也最好。我后续收到的一些 reach-out 有相当一部分来自 SWE23. 不仅如此,我还找人内推过本地的一些公司/office。我没有数过我收到多少 OA 和 VO,我收到的 software intern offer 纯属运气好。

如果你在寻求建议

我不觉得现阶段我可以提供任何建议,我甚至已经写好了几段「建议」,但我最终删掉了。如我之前所说,我很多时候只是运气好,并且我是喜欢写代码的那种人。我平时花了相当一部分时间看代码,写代码,和给自己的网站添砖加瓦,顺便再整点花活,比如搞个 bot, 加点 automation, 给自己的输入法加点词库,给浏览器整个竖着的 tab 栏,等等等等。在我做这些的时候我是单纯出于兴趣,而非有人要求或者我受雇做这些。我没有办法做自己不喜欢的事情,所以可能在做自己喜欢的事情(比如写代码)时,会更投入,且更得心应手吧。

记得之前有一阵子,我一觉醒来第一件事就是打开 Jetbrains Idea 改代码,改失败了就起床洗漱,洗漱完边吃饭边看剧休息,恨不得剧能播得快一点,饭能吃得更大口一点,然后再继续写我的 project。当时消耗时间的方式是写代码,因为我经常发现,只要一抬头,时间就已经过了两三个小时。那时候是夏天,天很长,不用珍惜每一分每一秒的日照时间。临日落时分自己会纠结,是趁现在去看夕阳呢还是继续写代码呢?有时候一不小心甚至会错过看日落的时间,跑着出门享受一天中能见到太阳的最后几分钟。湖边漫步结束,回来继续写代码,从桌子上写到床上,从来没有这么幸福过。可能是当时比现在要年轻一点,身体还承受得住,现在只能被迫多睡觉。

我在网上认识一些朋友,他们来自各行各业,甚至性别一只手都数不清,我很感激在我写不出代码发疯的时刻,有网友可以鼓励,安慰,和支持我继续写下去。我也很感动在我上课上到头脑爆炸的时候,我现实生活中的朋友们和我一起出去玩散散心。果不其然又写了这么多,既然都写到这儿了那我就顺着说下去了:找到自己喜欢做的事情,做自己喜欢做的事情。

后记

我一般不喜欢写这么条理清晰且给人以指导作用的文章,写文章的过程中有好几次我都已经丧失了继续写下去的兴致,所以我决定不勉强自己,就此收手。我可能会在之后再更新文章,可能在这里,也可能另写一篇。如果你有意见,建议,和想法,欢迎在评论里给我留言。

5 Comments

zrn 2023-12-13 Reply

1️⃣选课方面大部分很赞同(因为有的没选),特别是wangyue,跟我想的data mining一点都不一样,我不懂为什么不能把代码部分以及各个model的部分讲的更详细一点。
2️⃣能知道自己的兴趣还蛮真珍贵,看你写最后一段的时候非常感性的想哭(即使在中国的大早上,这么理性的时间),不知道是因为看到你为自己喜欢的东西做的努力之中看到自己给自己画的大饼现在连一口都没吃上,还是感叹身边的人好像有了一个动力支撑着活在big wide world。你会生活得很好的,像过去或者现在一样,然后会更好。

雪糕 2023-12-13 Reply

感恩有你,我真的写着写着就写感性了,所以说这种很有条理的文章我实在是写不好😭😭😭

咸鱼齐倩宇 2023-12-13 Reply

写的非常好!并且坚定了我不在本院选tech课程的决心。我院评价非常公正 也没有因为sde资源太少给出来情绪化的抱怨(地里之前有)

雪糕 2023-12-13 Reply

本院的 tech 课程有些有点太基础了,我和 advisor 沟通过他也建议我直接选高阶一点的,自己感兴趣的课。 sde 资源是少,但我也没指望过有多少就是了。我依然觉得找工求职的话,多去参加 Career Fair 还是蛮管用的。

发表回复

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据