项目课程设置及学习情况
CS37规定同学们每学期最多选8学分CS的课程,在这之外选修的课程没有什么限制,一般同学都可以选择EE的课程。不过如果同学们想要在两门课之外选择CS的专业课也是可以的,这是那些课程不会算作毕业的学分,性价比很低,我并不是很推荐同学们这样选课。
一般来说项目中的同学每个学期都会选择两门课程,如果一个学期学三门课的话load会比较大,这样平时的时间会紧张一些,同学们也不能为就业做其他的准备,因此并没有太多同学会这样选课。但是如果大家一个学期选了三门课的话,项目可以两年毕业,如果大家想要学的轻松一些的话,可以两年半毕业。整体来看项目的时长还是很灵活的,同学们也可以结合自己的实际情况以及需要来调整自己的选课计划。
说完了项目的整体情况,下面我来和大家介绍一下项目的课程设置,而这也是项目争议最大的部分。现在很多的同学都会说CS37的课程水分很大,一方面一学期只能选两门CS的课程,而且很多课程都是大课,不过我觉得这些并不会影响授课的质量,只是习不习惯的问题,像我就没有什么感觉,而喜欢小班教学模式的同学可以去申请别的项目,像rice、nwu、tamu等项目就是不错的选择,这都是和USC同档次的学校,而且对于转专业申请的同学也很友好。
下面说一下CS37的具体课程安排,项目中一共有6门必修的课程,分别是cs 455 java基础课,这门课4学分,是第一学期必学的,此外还有cs 570 算法分析 4学分、cs 571 Web 4学分、cs 561 Intro to AI 4学分、cs 585 DB 4学分以及cs 402 OS 4学分。还有一门ee 450 计算机网络,这门课是3学分,在我看来基本也算是必修课。因为这门课的另一个选择是ee 457 计算机结构,课程主要讲的是CPU设计,需要同学们写verilog和vhdl,工作量是很大的,所以基本没什么同学选择,最后大家都会选择ee 450。
剩下的10学分课程就是选修了,大家可以选择2门4分的课程,剩下的2分课程就有很多选择了。这部分的选课是很自由的,并没有什么限制,大家可以根据自己的需要去选课。比方说那些想要多刷题或是想要提前毕业的同学,可以选择一些讲座课或是写作课来水过去,想要学习一些专业知识和技能的同学也可以多选一些3、4学分的课程,只不过这样需要多交一些学分钱。
课程介绍
下面我和大家详细介绍一下这些课程,首先是第一个学期必修的cs455,这门课的内容就是一些基础的java以及C++语法知识,工作量并不是很大。虽然项目中会有几次大作业,但是难度并不是很大,学起来还是很轻松的。我觉得这门课四个学分不是很值,因为这门课上教的东西一本head first java就可以全部搞定了,但是这也是为了照顾没有基础的同学,所以也可以理解。另外这门课的期中和期末考试难度都不是太大,只要大家好好做一下往年的考题基本就可以应付考试了。
CS570算法分析这门课在我看来学起来也是比较轻松的,因为这门课在学习的过程中是没有coding内容的,另外我比较建议同学们在第一个学期就选修这门课,对于专业背景比较差的同学这样可以在学习之后对算法有一个大致的概念,对于后续的学习是很有帮助的。不过这门课的内容对于像我这种没有基础的同学来说还是有难度的,而且这门课严格curve,算法不扎实的同学一定要认真对待才能顺利完成学习。
接下来是ee450这门课,对这门课的zahid教授印象很好,他上课很有意思,平时给他发送的邮件他也会及时回复,偶尔他还会在凌晨给同学发来一封超长的邮件,可以看出他对每个同学都是比较用心的。这门课平时的作业比较简单,所以学习的压力不是很大,不过考试的难度比较高同时在成绩中占比比较大,而且考试中的题目都是一些在实际运用中不太容易碰到的题目,想要拿A还是比较困难的。
cs561 Intro to AI这门课在我看来是一门比较水的课,我在学完了这门课之后对于AI还只是有一个模糊的概念而已,感觉没有学到什么有用的东西,不过这门课是必修课,也没什么办法。在这里我建议同学们不要选暑假Shelia上的这门课,我当时被坑的不轻,希望同学们不要重蹈我的覆辙。
接下来是cs571 web technologies这门课,我对这门课的印象并不是很好,主要是因为这门课的教授很坑,平时上课没有什么干货内容,office hour对同学也都是爱答不理的样子,因此我建议同学们了如果时间不是那么充裕就没有必要去上课了,看课后附的lynda视频就足够了。这门课后面有三次大作业,大作业的内容还是很丰富的,想要做完需要花很多的时间,不过这些作业不仅可以锻炼我们的能力,同时还是可以写到简历中的,所以我觉得还是很值得的。作业只要认真去做想要拿高分并不难,而考试的部分会占到成绩的一半左右,考试基本都是背slides,大家只要花时间去背就可以考出好成绩,但是会比较耗时间,需要同学们自己做出抉择。
接下来是cs585 数据库这门课,这门课可以说是USC最为出名的水课了,也有很多人因为这门课进而质疑整个USC的教学质量。我是暑假上的这门课,当时花了一个多月的时间就学完了,过程很轻松,因为学的内容的确很少。在前半个学期主要学的是sql,和后半学期学习的则是bigdata、nosql、machine learning等内容,并不是很难。不过在学习的过程中会有四个大作业,每个大作业需要用到的编程环境及语言都是不同的。因此在学完这门课之后,我们也会适应那种快速学习一门简单的语言去进行编程,对于搭建工作环境也会变得更加熟悉,所以对于同学们都是比较有帮助的,不过这门课想要拿高分是比较简单的,或许这是这门课被认为是水课的原因。
而cs402 OS这门课和cs585就形成了鲜明的对比,这门课的内容非常的硬核,学习过程中工作量也很大,同时考试的难度偏高,想要完成这门课的学习需要同学们付出大量的时间和精力,所以我建议同学们在选这门课的时候最好搭配一些相对比较水的课程,像cs561、cs585以及ee450都是不错的选择。
在我看来CS37的课程虽然整体来看并不是那么硬核,但是也称不上水,质量还是比较不错的,尤其对于转专业申请没有专业背景的同学来说,学起来并不会太轻松。不过好在一个学期只需要学两门课,所以大家还是有时间去刷题和做side project的。
话虽如此,但是大家在选课的时候也一定要注意课程之间的搭配,最好不要同时选择工作量偏大的课程,那样的话平时应付学习就会很吃力,会影响我们刷题的进度,一般选择硬核课程的同时要搭配水课,这样我们的时间分配会自由很多。或许有同学担心自己选的硬核课程不够会影响后续的就业,但是根据我的经验我觉得一学期选两门CS专业课并不会有太大的影响,所以如果不想提前毕业的话,按部就班选课就可以了。