一,未来规划

两条主方向:就业,科研升学.

短期目标上,也就是本科阶段是按自己要走的箭头选择要学习的内容,计算机专业本身是包罗万象的专业,学校教学内容与科研内容与就业应掌握技能,三者完全不相干。

关于计算机专业素养:b站随便搜关键词去就行,一大堆升学承担的风险——学历贬值,时间成本.

二,学习方法

多种学习方法选适合当前自己的混合学:

  1. 计算机专业经典自学指北: (csdiy)[https://www.csdiy.wiki]

  2. 博客,技术论坛:前期可以用csdn这种,专业性很强会有专门的论坛: csdn网址: https://www.csdn.net/ 利处:便捷,基本什么都有,全中文,而且有时有相关笔记 弊处:什么神人都有,内容良莠不齐,一些好的资源要收费

  3. 看书,看技术文档: 看书(线下水课的学习) 注意,真正0基础新大一看不了大部分有“入门”含义的专业书籍 这里推荐一下入门c语言的书籍(应对第一学期计算思维) 《21天学通c语言》 当然除了c语言更多书籍也可以去图书馆借阅

    (微信公众号常用:扫码借书,馆藏查询) 看技术文档或教程(线上学习)

  4. 关于技术文档: 比如cpp :cppreference, cplusplus; 关于教程类网站 比如关于vue3 事实上github也有相当多教程类

  5. 查询检索: 这部分往往关于具体问题的更多挖掘,或者学一个东西前的调研追问,或了解某些特定信 视频网站:国内bilibili 国外Youtube (其他视频网站学习内容质量较低) 咨询平台:如知乎 校内讯息:校内群聊,校园集市等,部分学校官网比较难找(现在有AI小橙还好些) 文章查询: 国内:知网(注意校外访问输入学号登录下载文章就不花钱) (多看些会发现不少灌水,已经相对的失去专业性了) 国外:https://liblsp.hrbeu.edu.cn/space/database 右侧栏 SCI,IEEE,ACM还算比较常用的,但后期基本都上arXiv 上找了( https://arxiv.org/ ) 其他查询:AI(ai往往可以承担你一无所知领域或内容的查询) 直接用: Kimi, Deepseek 当然,外国的GPT,Claude等也很好用(在写代码上Claude感觉更不错)

  6. 上手项目实践练习 自己的一些想法,转变为有目标需求

三,编程语言与开发工具

编程语言非常之多,分为高级语言,汇编语言,机器语言(对计算机不同层次视角说)
现在高级语言也非常多,首先认识的一点是 你学的语言经常不是你学习工作使用的,要习惯这一点,语言只是载体,意识与思想才是根本。不同语言间大体还是一致的,语言的部分特性注意一下即可。

机器语言

0/1 编码, 人类不可读形式, 一般做芯片设计, 体系结构的人员会偶尔遇到, 了解即可.

汇编语言

本质是将机器语言符号化, 变为人类可读的符号. 其本身足够底层, 因此做底层优化, 编译加速, AI算子优化等领域会使用, 尽管计算机已经发展了大几十年, 但是只要人类对算力的需求还未被满足, 汇编语言就依然会是必须的语言. (编程语言热度常年前15).

主要包含: 机器汇编, llvm ir, web assembly, java bytecode(各种虚拟机语言的ir).

高级语言

  • 种类最丰富的level.

可以按照多种方式将其分类: 语言范式, 语言层级, 运行方式 等.

语言范式

  1. 面向对象OOP => 最流行的范式之一; 程序是由对象和附加在对象上的 (方法和属性) 组成的, 封装, 多态, 继承是三个核心思想. 常见的OOP语言有: c++, java, python, c# 等.
  2. 命令式(面向过程式) => 最常见的范式, 几乎所有语言都支持;
  3. 函数式(FP): 为了通过机器符号描述人类的逻辑, 产生了第一个函数式语言(lisp) 函数式语言中, 函数是一等公民, 函数可以被传递, 被赋值, 被修改, 一切函数都是纯函数. 现代语言中的 Lambda 表达式就来源于 Lisp. 常见的FP语言有: Lisp, Haskell.
  4. 宏: 通过代码产生代码的语言, 诞生于 Lisp, 被许多现代语言吸纳, 如: C/CPP, rust, LaTeX

语言层级

  1. 系统编程语言, 能直接操作计算机最底层的资源, 如寄存器, 内存, io设备, 存储设备, 网络等, 常用于编写系统级软件和性能极度敏感的软件, 如: 操作系统(OS), 数据库管理系统(DBMS), 驱动(Driver), 嵌入式应用. 系统级语言较少, 包括: C/CPP, rust, zig, 汇编.
  2. 非系统编程语言: 不与硬件直接交互, 运行在特定环境下(操作系统, 虚拟机, 浏览器), 一般用于应用开发, 性能一般比不上系统编程语言, 但是大部分应用的瓶颈在各种io上, 简单, 方便, 移植性 对于软件开发更为重要.

运行方式

  1. 解释型
  2. 编译型

常见语言及其应用场景

  1. C语言,编译语言,适合入门的高级语言,也是学校计算思维使用的语言
  2. C++, cplusplus,C的延申扩展,加上了面向对象编程的思想,基础东西不难,细枝末节的语法学不完 地位:悠久的C/C++至今仍因其运行效率的优势作为后端开发的主要语言 适合的IDE:小规模Dev,更大一些 visual studio 2022 ,vscode也可(配置环境变量对新人并不友好) (IDE:集成开发环境,就好比写word文档而不是记事本一样)
  3. Python,解释型语言,一行一行运行,因为各种可用库量大管饱,是现在科研(人工智能类)主要用的语言 IDE:pycharm,vscode等
  4. Java 也是当今就业所常用的语言之一

线上开发工具:
如colab (jupytor上云端)
(jupytor notebook 交互式开发)

四,算法

  • Q: 怎么看待算法?

  • A: 取决于你的目的,就业——笔试面试的算法,考研——考研题目,科研——特定场景深入应用,可能时一些理论的基础,可能是可以作为使用的方法,竞赛——竞赛算法,团队合作.

  • Q: 如何练习算法?

  • A: 看书/看视频学习+实际练习

线上练习

(虽然说学了上面的检索本领之后你应该能自己查询相关网址)
更专业的算法训练/学习流程?
去学校ACM校队看看吧 ❤️

与算法有一定关系的课程

大二上 数据结构,大二下 算法设计与分析

注:课程所学相当浅薄,实验也是是个人就能写,不必作为重点

五,了解本地电脑设备与终端

(我不是很熟练,该部分待完成)
(可以讲一点电脑设备怎么去管理,电脑硬件基本参数,了解,管理工具,可以扩展到计组和操作系统到linux等一点点知识)
(啥是终端,终端间区别,熟悉终端这种模式)

六,开源

一种软件开发形式, 秉持着开放共享的精神, 允许任何人在开源协议的约束下自由 查看, 修改, 分发, 软件及源代码, 通过更高效的用户反馈和透明的代码. 开源软件有着较高的安全性和漏洞修复速度(用户可以参与修改代码). 同时对于学生, 开源软件非常有利于学习(如linux, llvm, ffmpeg等).

必备软件 (GIT)

Git: 一个免费、开源的版本控制软件

基本使用操作:

git add .          # 把改动放进“暂存区”——拍照前摆好姿势
git commit -m "描述" # 按下快门,生成一张快照
git push           # 把本地快照上传到远程仓库(GitHub/Gitee)
git pull           # 把远程最新改动拉回到本地
git checkout [-b]  # 签出分支
git branch []      # 分支操作
git stash          # 暂存

其他git操作有些可用于项目代码协作等

git 远程托管

GitHub: 基于 Git 的云端仓库托管站 + 开源社区。服务器在国外。
Gitee(码云):中国版“GitHub”
其他开源社区:往往有更强的专业性

七,科研

  • Q: 什么人做科研?

  • A: 对升学有需求/吃这碗饭的人

  • Q: 什么时候能开始做科研?

  • A: 取决于你学个别专业能力,跟学校课程正常走的话,至少要大一下之后的数学及专业素养
    (人工智能方向需求大一下高数,概率论与数理统计,线性代数)
    (偏硬件或体系结构方向需求大一下计算机组成原理等及其他专业内容)

  • Q: 怎么理解科研?

  • A: 无意义/低意义科研:最新理论的工程应用
    较有意义的科研:先射箭再画靶的炼金术
    更高意义的科研:理论,架构,基础性开创性工作
    注:科研能力与实际做的有无意义无关
    科研=理念发现+设计提出+实验验证+归纳总结

科研工具?找自家导师,学长

八,就业

  • 待补充

九,计算机专业课程关系参考

(画一个流程图表明他们关系)
(具体应该看导论)

十,其他

  1. 翻墙: 我也不知道这是什么, 但是这俩 utf-8 编码就是出现在了这;
  2. Markdown: 程序员搞的笔记本语言;
  3. How to STFW(search the friendly website) and RTFM(read the f**k manual).
  4. 如何科学的提问
  5. linux 以及常用的软件使用(ssh, ftp, frp, git, core-utils)