V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NatsumeMio
V2EX  ›  程序员

本科请教计算机科学选修科目如何选择

  •  
  •   NatsumeMio · 2023-01-31 22:54:57 +08:00 · 3327 次点击
    这是一个创建于 653 天前的主题,其中的信息可能已经有所发展或是发生改变。
    各位在职大佬程序员们,本人目前本科大一,专业是计算机科学,除了必修科目之外,我需要在选修科目里大概选择十几个课程。请问各位在职程序员们,有什么推荐选择的课程(对以后职业生涯帮助较大 /较为吃香)选择?十分感谢各位。

    以下为列表:
    计算机体系结构
    编译技术
    算法设计
    算法设计与分析
    函数式编程
    编程语言原理
    人工智能
    计算机图形学
    计算的法律方面
    机器学习
    量子信息与计算
    计算机视觉
    电子商务技术
    万维网上的现代技术
    高级数据库系统
    计算机游戏设计与编程
    交互式移动应用程序设计和编程
    应用深度学习
    高级算法分析
    算法博弈论
    生物信息学
    统计学习
    网络安全
    机器人学
    密码学
    分布式和并行计算
    数据驱动计算机动画
    自然语言处理
    AI 实践:实验和应用
    数字取证
    网络攻防
    量子算法和计算机体系结构
    工程质量软件
    科学计算
    物联网数据分析
    41 条回复    2023-02-02 16:21:25 +08:00
    cpstar
        1
    cpstar  
       2023-01-31 23:12:23 +08:00
    这不找你的辅导员、找学长、找专业责任教授,来 v 站,还真觉得人均科班计算机么?

    课程有前后关联体系,计算机本身是一门应用学科,看你要干啥了;或者研究计算机本身(就是计算机科学),那也是需要方向。但是这单子里有一些课程是专业必修课吧,比如体系结构、编译技术、算法设计(怎么还有一个算法设计与分析,课程设置是不是有问题)。
    juggtt213
        2
    juggtt213  
       2023-01-31 23:13:00 +08:00
    ...感觉学校里很多老师教书就是应付一下,或者教学的内容好几年没变过了,就这样对着课程名字选的话,能不能遇到教学比较上心的老师学到比较有时效性的知识全看运气。
    不如问问学长学姐有没有比较靠谱的老师,如果问不到的话可以退而考虑比较容易通过或者是拿到高分的课,然后把应付学校课程的时间节省下来的时间用来自学...
    rsy
        3
    rsy  
       2023-01-31 23:14:02 +08:00 via Android
    如果有保研通道建议选易刷分的科目,提升绩点为重心,就算不在国内读研,出国也是要看 GPA 的,课程分数越高越好。等到大三大四没课的时候出去实习才是对职业生涯帮助最大的。找工作不关心你学过哪些课程,专业对口就够了,主要还是看你算法以及基础知识的掌握情况,这个多刷 leetcode 和面经即可。
    Noicdi
        4
    Noicdi  
       2023-01-31 23:19:02 +08:00 via iPhone   ❤️ 3
    说实话,国内除了那几所顶尖,其余的高校的计科都不行(我本科也是),全是照本宣科读 ppt 。建议评估一下自己平常上课时老师们讲的咋样,不行的话不如自己上网找课程学,比如 CS 自学指南和自学计算机科学,这两个教程
    iyear
        5
    iyear  
       2023-01-31 23:42:55 +08:00
    除了几所 top 外,计算机大学课程意义相当小,你愿意学老师还懒得教。所以在感兴趣 /水 /好拿绩点之间根据自己未来的方向选就行了,没那么讲究。
    Jooooooooo
        6
    Jooooooooo  
       2023-01-31 23:47:27 +08:00
    真要学, 至少学学课本内容, 从这里面挑吧

    计算机体系结构
    编译技术
    算法设计
    算法设计与分析
    函数式编程
    编程语言原理
    高级数据库系统
    统计学习
    分布式和并行计算
    janus77
        7
    janus77  
       2023-01-31 23:50:39 +08:00   ❤️ 1
    这里面有一部分是基础课,一部分是分研究方向的课。基础课肯定就那么几门,剩下的课根据你的兴趣爱好去选,比如你喜欢安全方向就选网络安全、密码学,喜欢游戏方向就选图形学、游戏设计,诸如此类。
    thinkershare
        8
    thinkershare  
       2023-02-01 02:21:10 +08:00   ❤️ 1
    核心课程: 1-3 本教材, 然后扩展这些核心课程, 这些核心课程都有对应的优秀教材,并存在大量的扩展性阅读资料:
    计算机概述(文化, 入门课程)
    计算机组成原理(数字逻辑电路可选)
    操作系统
    数据结构与算法(这 2 个东西前期不需要分家)
    编译原理(可选)
    数据库系统(至少熟练使用不同类型数据中常用的 1 种)

    学习至少三类编程语言:面向过程, 面向对象, 函数式, 如果前面三门没有 JavaScript , 最好还是要加上它。
    最后选择一个自己最感兴趣的开发平台(Platform)。这部分需要深入挖掘,大学毕业时候能出活,毕业后能靠其生存。

    然后是学习软件设计,这个路非常漫长,需要实践,从面向过程开始,到深入理解面向对象,函数式编程,项目管理,需求分析,分布式系统设计,云原生等,路漫漫,也不需要着急。

    学好数学,特别是离线数学 /线代 /高数,它们都可以让你走的更远。学好英语对掌握第一手的学习资料有非常大的帮助。

    最后是兴趣扩展,这个就看你感兴趣的方向了,如果你打算读研,那学习的思路可能就需要调整。
    最后的建议: 不要在那些非核心的赶时髦的课程上花费太多时间,因为大学的精力和时间都是有限的,你必须选择舍弃掉那些在大学本科你不可能深入研究的课题。
    kizunai
        9
    kizunai  
       2023-02-01 02:34:45 +08:00
    建议哪门课给的分高选哪个
    计算机不同于别的专业,网上资料多,感兴趣的内容可以自学
    levelworm
        10
    levelworm  
       2023-02-01 02:53:34 +08:00 via Android
    不如这样,看一下 MIT/CMU/BKL 这些名校的课程,哪些感兴趣的,就先学本校同名的课程打底子。
    mythabc
        11
    mythabc  
       2023-02-01 03:00:22 +08:00 via Android
    现在这么卷,还是建议选给分高的。GPA 高润都有优势
    MoRanjiang
        12
    MoRanjiang  
       2023-02-01 05:45:33 +08:00
    羡慕能选专业课的学校
    kkwa56188
        13
    kkwa56188  
       2023-02-01 05:47:19 +08:00
    凭记忆说几个, 能够将 科班的 和 半路出家的 区分开来的 几门课:
    计算机组成原理
    操作系统
    编译原理
    离散数学
    数据结构
    数据库设计
    计算机网络
    运筹学(研)
    Nazz
        14
    Nazz  
       2023-02-01 08:56:59 +08:00
    强烈推荐数据结构与算法
    wu67
        15
    wu67  
       2023-02-01 09:18:34 +08:00
    问你的师兄. 哪些老师好说话容易给高分就选哪些.
    这些课其实全都教一些比较基础的东西的, 起码当年我们学校是这样, 你想深入学习, 还是得靠自己, 学校开一门课程领你进门而已.

    但是比较重要的还是建议选. 例如:
    数据库, 数据结构,
    离散, 概率论, 编译原理(3 个都建议学, 虽然 crud boy 可能也用不到). 工作中虽然不会真的让你写编译器, 当起码能帮助你理解怎么写好代码, 哪种写法性能更好(虽然可能都比不上商业 /开源环境的优化力度就是了 hhh, 例如 v8 、各 jdk)
    计算机组成原理和逻辑电路偏硬件的, 印象中是一个箱子装着 386 还是啥, 在那打开关记亮灯灭灯, 如果没兴趣可能会很痛苦, ps: 例如我...
    计算机网络, 额我没学好, 一眼难尽, 老师当年在教我们划分子网啥的, 交换机啥啥啥之类, 到后面就像天书一样了, 比较催眠.
    eaststarpen
        16
    eaststarpen  
       2023-02-01 09:26:12 +08:00
    不知道其他学校是咋样的, 江苏普通一本, 计算机非强势专业

    我们学校选课啥的都是笑话, 实际上开什么课早就定好了, 没有选择余地。 开放选课, 班长通知选什么, 选好, 结束。

    真的想学东西还是自己网上找吧(op 如果顶尖学府当我没说)

    附: https://csdiy.wiki/
    apake
        17
    apake  
       2023-02-01 09:39:06 +08:00
    函数式编程, 编程语言原理
    JamesR
        18
    JamesR  
       2023-02-01 09:56:48 +08:00
    计算机游戏设计与编程
    交互式移动应用程序设计和编程
    AI 实践:实验和应用

    选这几个就行了,计算机编程是门偏重实际应用的学科,尽量选择实际做开发项目的就行,弥补你缺乏编程项目的短板。
    JamesR
        19
    JamesR  
       2023-02-01 09:59:47 +08:00
    选修课那三个,专业课按别的学校的专业课或者上面回答即可。
    feather12315
        20
    feather12315  
       2023-02-01 10:00:04 +08:00 via Android
    计算机体系结构
    编译技术
    编程语言原理
    计算机图形学
    机器学习 / 计算机视觉 (选一)
    网络安全
    分布式和并行计算
    DeltaC
        21
    DeltaC  
       2023-02-01 10:18:54 +08:00   ❤️ 2
    选什么课,我觉得不太重要,有个高绩点,挺重要。
    此外,我比较认同楼上,从 https://csdiy.wiki/ 开始,没事去 leetcode 刷题。
    focux
        22
    focux  
       2023-02-01 10:22:24 +08:00
    《计算机体系结构》
    《编译技术》
    这两本一定要啃下来。。。
    bigbigbigbug
        23
    bigbigbigbug  
       2023-02-01 10:23:06 +08:00
    考研吗?考就选容易刷分的,问学长。不考?那你指望一个选修能带来什么?凭兴趣来吧,要不就看看老师,凭性癖来
    simplereasy
        24
    simplereasy  
       2023-02-01 10:31:50 +08:00
    我觉得没有意义,教的这些都没啥用.
    学好必修的数据库和数据结构,再应用好一门语言就可以了.
    其余可以看兴趣学.大部分教的都比较落伍
    chrosing
        25
    chrosing  
       2023-02-01 10:33:59 +08:00
    我高中毕业,培训出身,我老大曾经跟我说过,我业务理论没啥问题了.但是欠缺基础,叫我去学 计算机系统与编程相关的.关于系统的设计思想,算法逻辑的基础,还有一些比较底层的编译(了解要知道的程度),数据库相关的
    xhinliang
        26
    xhinliang  
       2023-02-01 10:49:38 +08:00
    感觉都挺好的,不知道能学到多少,具体可能跟学校以及授课老师关系很大。如果让我选我可能会选这些:

    高级数据库系统
    机器学习
    算法设计与分析
    高级算法分析
    算法博弈论
    函数式编程
    编程语言原理
    人工智能
    计算机体系结构
    分布式和并行计算
    jmc891205
        27
    jmc891205  
       2023-02-01 13:19:37 +08:00
    大一选基础的课就好,不用选那些偏应用的课
    计算机体系结构
    编译技术
    算法设计
    编程语言原理
    zerozerone
        28
    zerozerone  
       2023-02-01 13:37:37 +08:00
    别听他们瞎推荐, 这些课程是有发展路径的, 有游戏相关, 算法相关, 体系设计相关, 编程语言相关, 等等几个分支, 课程之间有前后学习顺序, 建议挑一个技能树挨个从前往后点, 乱选啥也学不好
    fiypig
        29
    fiypig  
       2023-02-01 13:41:55 +08:00
    这看都差蛮多的,有些硬件相关的有些是人工智能的,这个你要去跟老师核实清楚了,
    forgottencoast
        30
    forgottencoast  
       2023-02-01 15:31:06 +08:00
    如果是我,我选:
    计算机体系结构
    编译技术
    算法设计
    算法设计与分析
    函数式编程
    编程语言原理
    人工智能
    计算机图形学
    计算的法律方面
    机器学习
    高级数据库系统
    高级算法分析
    算法博弈论
    统计学习
    分布式和并行计算
    自然语言处理
    AI 实践:实验和应用
    数字取证
    工程质量软件
    科学计算
    物联网数据分析
    7gugu
        31
    7gugu  
       2023-02-01 15:36:16 +08:00
    二本和三本的请考虑容易通过的,特别是在三本中,这些都是水课。
    perfectlife
        32
    perfectlife  
       2023-02-01 16:00:23 +08:00 via Android
    其实选啥都差不多
    8355
        33
    8355  
       2023-02-01 16:16:19 +08:00
    算法设计
    算法设计与分析
    人工智能
    机器学习
    应用深度学习
    高级算法分析
    aw2350
        34
    aw2350  
       2023-02-01 16:19:17 +08:00
    就那些半吊子老师,你要是真想学,自己上网上找,要是刷分,找个最省事的
    z1645444
        35
    z1645444  
       2023-02-01 16:36:51 +08:00 via Android
    很负责的老师 + 你自己也感兴趣的课,直接选。或者选能直接通关的,时间分给其他事
    sadfQED2
        36
    sadfQED2  
       2023-02-01 16:48:01 +08:00 via Android
    选自己感兴趣+老师负责靠谱的。
    HarrisonLee
        37
    HarrisonLee  
       2023-02-01 17:06:30 +08:00
    如果你的学校一般,那么强烈建议自学,而且不要使用学校发的教材。如果能够时光倒流,我会在大学期间重点学习 Linux 内核,因为这综合了编程语言( C 语言)、数据结构、计算机组成原理、操作系统理论、计算机网络。不要单独学习这些学科,不然你学完就忘了,要把它们联系起来才不会。给你推荐一些资料吧:

    * 编程语言方面:《 C 语言现代方法(第二版修订版)》,学 Linux 内核,一定要把 C 语言学好,这本书讲的很详细,也很现代,不要看那种很老还很多错误的书。
    * 计算机组成原理方面:《 x86 汇编语言 从实模式到保护模式(第二版)》第一版是 10 前出的,第二版 2023 年 1 月才刚出版上市。虽然名字包含汇编语言,其实也讲了很多 cpu 的工作原理。只学实模式是不够的(王爽那本纯粹就在讲实模式下的指令),要把保护模式也学了,不然一些操作系统的概念不是很好理解(比如特权级与内核态用户态之类的)。要学就学现在正在被大量使用的架构,不要学学校教的那些老掉牙的计算机组成原理。此书作者李忠也在网易云课堂开设了 x86-32 和 x86-64 两门课程(不是打广告),可以作为书的扩展。
    * 数据结构方面:其实就用学校发的数据结构书就够了,不要轻易去看黑书《算法》!!!
    * 计算机网络:谢希仁的《计算机网络》,现在应该是第 8 版了吧;张彦飞的《深入理解 Linux 网络》。第一本是理论,第二本是实际系统中的实现,可以学到 Linux 的网络模块时再看。不要轻易去看《 TCP/IP 详解》!!!
    * 操作系统方面:《操作系统导论》(豆瓣链接是 https://book.douban.com/subject/33463930/,别选错了):理论层面就这一本就够了,结合 Linux 内核来理解理论中的概念。
    * Linux 内核方面:《 Linux 内核设计与实现(第三版)》,《深入 Linux 内核架构》:第一本比较简洁不会涉及太多细节,可以对整个内核有一个完整的认识;第二本会涉及一些细节,相对更复杂。Linux 内核学起来肯定是很难的,光看书也很枯燥,可以看一些视频或者博客。

    你去搜一下相应的豆瓣评分就知道这些书值不值得看了。

    基础方面就这些,大一打二把基础打牢,大三大四再去学其他编程语言和上层应用开发就容易得多。祝你学习顺利,少走弯路。
    fcten
        38
    fcten  
       2023-02-01 19:53:34 +08:00
    只知道课程名,以下建议可能不准确。建议查阅对应课程的教学大纲以及历年评价。

    // 基础课,建议选修
    计算机体系结构

    // 基础课,编译原理相关,建议选修
    编译技术
    编程语言原理

    // 基础课,算法相关,建议选修
    算法设计
    算法设计与分析
    高级算法分析

    // 基础课,数据库原理相关,建议选修
    高级数据库系统

    // 机器学习相关,可以说是目前最有钱途的方向了,建议选修
    // 不过本科的选修课可能比较水,想在这个方向找到工作 99%要读研
    人工智能
    机器学习
    应用深度学习
    自然语言处理
    AI 实践:实验和应用

    // 计算机安全相关,对黑客什么的感兴趣可以修
    网络安全
    密码学
    网络攻防
    数字取证

    // 计算机图形学相关,对游戏开发感兴趣的可以修
    计算机图形学
    计算机游戏设计与编程
    计算机视觉

    // 对移动 App 开发感兴趣可以修
    交互式移动应用程序设计和编程

    // 对服务端开发感兴趣可以修
    分布式和并行计算

    // 偏软件工程,对技术质量感兴趣可以修
    工程质量软件

    // 可能比较水的课(尤其是那些看上去就是多学科交叉的课)
    计算的法律方面
    量子信息与计算
    电子商务技术
    万维网上的现代技术
    函数式编程
    算法博弈论
    生物信息学
    物联网数据分析
    科学计算

    // 光看名字不好判断的课
    机器人学
    统计学习
    数据驱动计算机动画
    量子算法和计算机体系结构
    flyico
        39
    flyico  
       2023-02-02 10:37:32 +08:00
    本科阶段学这些也就是粗通皮毛,选学分好拿的就行了

    真正学习是工作后的事情,所以大学里最重要的是学会‘自学’的能力
    LXGMAX
        40
    LXGMAX  
       2023-02-02 14:41:04 +08:00
    越底层的知识越有门槛,工作中可替代性越低,数学要搞好,其他工作再学也不迟
    bnull
        41
    bnull  
       2023-02-02 16:21:25 +08:00
    也不太需要局限于自己学校的可,可以参考下别人的。 [csdiy.wiki](csdiy.wiki)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5507 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 08:56 · PVG 16:56 · LAX 00:56 · JFK 03:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.