2024年4月更新:
最新版本指南已经出炉!
敬请关注:0xFFFF 计算机入门专题 | 0xFFFF Wiki


2019 新版本入门指南已经推出,详情戳此链接


各位新朋友们,欢迎来到大学计算机的世界~ o(* ̄▽ ̄*)ブ

我是站长 0x0001,希望这个小站可以为你的大学计算机的探索生涯中,带来一点点助力吧。所以我现在在尝试写点儿入门的建议,其中有我个人的一些感触,也有许多热心的同学和老师的分享,也希望下面的这些文字,能为即将开启大学生活的你带来一点儿启发。

这是一篇信息量极大的长文,或许叫“索引”更加合适一些。我也花了一个多星期才整理出来,你可能需要花费较多的时间去理解和消化。

这篇文章的内容的编排,是从知识结构的角度去看待的,目标是让你对学习计算机大致需要初步培养的能力有一个大致的印象。

从结构的角度而不是从受众的认知背景的角度出发的话,会导致一个问题,就是这些内容可能与你当前的知识背景会有不接轨之处。这也牵涉到另一个层面的问题,我们各自的知识背景是不一样的,众口难调,显然一篇文章并不能同时满足所有人当前的需要,我也尽可能让它适合大众,这里也需要你主动地去适应。

所以,也希望看到这条帖子的你,能及时把你阅读过程中的疑问提出来,我会持续接受大家的反馈,反复地思考和修改本文,乃至于思考更合适的方案。

这是本文的目录:

1. 大学与高中的差异
2. 计算机学科的知识巨网
3. 一开始怎么入门?
   (1) 走在课程前面
   (2) 对学科建立大体印象
   (3) 着重培养三大能力(英语、数学、程序设计)
4. 折腾的重要性
5. 信息素养的重要性
6. 培养邮件交流的习惯
7. 推荐阅读的材料清单
8. 最后想说的

下面开始正文:

大学与高中的差异

来到大学,首先我们必须认识到高中升大学与初中升高中的差异。经过中考以后,迎来我们的是教育模式类似的高中。而经历了高考和专业录取的洗礼的我们来到的大学,是与以往的教育经历的学习方式是有很大不同的。

小学到高中的时候,学习的目标(要学什么),要怎么学,每天要上什么课,学什么已经早已设计好了,我们需要做的,也是跟着老师的课程,安心学习,刷题,写作业和考试,目标也很一致——高考。

到了大学,老师们的角色,仅仅剩下某门学科的引路人,以及我们学习之路的朋友,而没有了督促我们学习的义务。能为我们的学习负责的,只有我们自己,也只有我们自己才能了解自己的情况,决定自己要往哪个方向发展。

由此可见,我们个人的心中需要有自我的意识,我们来到大学,是在“求学”,而不是“等老师求我们学习”。

计算机学科的知识巨网

在众多研究与实践的积淀下,每一门学科都有着不断更新、错综复杂的知识网络,计算机也不例外。

入门一个学科,亦或是学习一门课程之前,我们需要对它有一个大体的理解,这样当我们在学习的过程中,才能知道自己在这个学科的巨网、或是课程的知识网络中处于什么位置。

进入这个网络的方式多种多样,不同的基础,不同的目标,从不同的路径进入,也可能面对着不一样的困难。但随着我们的深入学习,计算机的知识网络在我们的脑海中的反映越来越完善,最终都会殊途同归。所以我们也不必纠结通过什么方式入门,选择一个现有的,普遍认为较好的方案,不要停留,一直奋斗下去,就OK。

在学习的过程中,我们会遇到各种各样的困难。面对困难,千万别妄自菲薄,称自己是“小白”而否定自己所做的努力;也不应该以“大佬”自居,停留在知识巨网中的某个角落,故步自封。所谓“闻道有先后,术业有专攻”,每个在探索着的人,可能在这个知识巨网中的不同位置,并不像过去初高中时,有老师带着一群同学在知识巨网中预先铺好的跑道中奔跑。不在同一个轨道中的比较,自然不能说明什么问题,也难以界定所谓的“小白”还是“大佬”。

在这个网络的探索过程中,由于每个人的认知和理解不同,互相之间的交流也显得尤为重要,互相之间知识的碰撞,常常可以为你脑海中知识的网络添加不同维度的更加完善的联系,可以说非常有价值了。本站建设的初衷,也是希望能为大家提供一个交流和沉淀的平台。

一开始怎么入门呢?

走在课程的前面

引用斌头老师的建议

你们在未来的一年将迎来史无前例繁忙的功课,我非常严肃地!说了无数次,考上大学就轻松了,那是你妈骗你的好吧?大一第一学期:高等数学、线性代数、程序设计语言,任意一门都有可能压得你喘不过气,而学这些连计算机科学的门都没摸到呢......任何一个有志的学子,请听我第二个建议:不要被课程追着屁股赶着走,要走在课程的前面。也就是:要预习,要预习,要预习。

对学科建立大体的印象

之前说过,入门计算机,需要对计算机这个巨网有一个大体的印象。在我们的课程体系中,《计算机导论》这门课程充当了一个建立大体的印象的角色。我们可以事先找到计算机导论的课本,提前预习一下。CSI讲义0-- 2017级《计算机科学技术导论》导学

另外,专业的培养方案,也是围绕着计算机的知识体系而设计的。我们可以通过关注我们的培养方案,了解在我们学校的计算机专业的要求下,我们必须学习这个知识巨网中的哪一些部分,从而对计算机专业有一个大体印象。

这里也推荐阅读部分计算机类的科普读物,例如《浪潮之巅》、《数学之美》。

培养三大能力

在了解这个体系的同时,我们需要重点培养三大能力:英语数学编程

英语

英语在计算机中具有重要的地位,不得不承认的是,国内的计算机水平是落后国外较多的,许多较好的资料只提供了英文版。克服了英语这一关,你才能接触到这个世界上最好的资料,才能更好地看英语教材,听英语专业课,以及进行国际交流。

需要注意的是,我们在中学时代的英语学习中非常强调各种各样花式的英语语法,相信这里在强调英语的重要性的时候,很多同学第一反应就是这些,但这些奇奇怪怪的规则在计算机教材的阅读中并不是重点。语言的目的是传递信息,而不是用来卖弄技巧。

一般来说计算机的书籍和课程的英文表达都比较简洁和直白,高中英语的水平,在词典和翻译工具的帮助下,基本可以驾驭,不必担忧,只需耐住性子,做起来(连高考英语100+,CET-4低分飘过的站长都能hold住,相信你们肯定没问题)。

衷心推荐这篇文章:
英语学习也可以“做中学” - CSDN博客

引用其中一段话:

回到大学生英语学习的话题上。说学英语没有用的人,我不想再浪费热情写些什么了。身处在这个发展最为迅速、交流最为广泛、国际化最为迫切的重要学科与行业,如果还在这么认为,也算是“无畏”的勇士了。在编程中声称看不懂英文错误提示的同学,我和他一起看时,很多人惊奇地发现,原来耐住性子是可以看懂的。遇到不认识的词,蒙一蒙,基本靠谱;有些词,用在线词典查一下,意思很明确;省事的办法,直接用搜索引擎搜,错误的解释是能对应上的。原来看不懂的原因非常简单,是没有看!没有看的原因不是看不懂,而只是觉得看不懂!潜意识中有个名叫“看不懂”的小人,就这样吓唬住了十八、九的大姑娘、小伙子!

数学

数学是计算机许多规律的理论基础。主要有:

  • 高等数学(一元和二元微积分等)
  • 线性代数
  • 离散数学(数理逻辑、集合论、图论、群论、数论等等)
  • 概率论

推荐阅读:CS2013第6章选译: 计算机科学的数学要求 - 简书

我们可以先从线性代数开始,推荐MIT的《线性代数引论》,网易公开课有对应的视频可以观看和学习。

另外,推荐 3Blue1Brown 的 《线性代数的本质》系列视频,作者是前 可汗学院 的讲师,他从图形的角度生动地描绘了线性代数的规律,非常值得一看!你可以在B站找到中文翻译版本。

3Blue1Brown的个人空间 - 哔哩哔哩 ( ゜- ゜)つロ 乾杯~ Bilibili

有的同学可能会被这些课程“高大上”的名字吓到而陷入“我好菜啊”的状态不愿动手,但其实在好的学习材料的面前,它并没有别人所说的那么恐怖,而且还可以很有趣😊不信的话可以看一看上面分享的两个线性代数的系列视频。

学习数学,最关键的是,给自己留足够的专注时间以及大量地做题巩固!有了时间,其它都不是事儿~

程序设计

要在计算机的大网中灵活穿梭,程序设计是你必不可少的技能。

推荐大家通过C语言来入门编程,目标是对程序设计有一个初始的印象。

学习C语言,推荐跟着 Think-C 教材(《How to Think Like a Computer Scientist - C version》)体验一轮,具体可以参考 斌头老师的 Think-C 指南 来操作,大概花一到两周的时间完成。

若你在挣扎过后仍未摆脱英语的阴影,可以试试经典书籍 K&R 的中文翻译版 《C程序设计语言》

无论中英文课本,你需要做的是,跟着写代码,把每个例子、小节后的习题都试着运行一遍,给自己一个感觉和肌肉记忆。

在看书的同时,也可以跟着翁凯老师的C语言课,多管齐下,多个角度去看同样的东西,可以让我们对这个东西有着更全面的认识。
程序设计入门——C语言_浙江大学_中国大学MOOC(慕课)

通过C语言入门,除了一些程序设计的概念外,还能为初学的我们带来一些额外加成:

  • 我们可以以最快的速度,了解与硬件中一个个内存单元对应的最基础的数据结构:数组
  • 了解构造能处理更复杂信息的更高级的数据结构所需要的基本概念:指针

折腾

在计算机世界中生存,决不会一直停留在舒适区,所以,“折腾”在计算机领域绝对是一个绕不开的词汇,所以这里也强调一下。

至于什么是折腾,如何折腾,请看推荐阅读的文章:

推荐阅读:【转载】聊聊【折腾】的重要性

(由于不可描述的关系,这里只是贴一份转载的博文)

最具性价比的折腾

最具性价比的折腾,莫过于安装和使用 Linux 系统以及 Vim,Emacs 等编辑器了,刚开始入门推荐先折腾 Linux,由于 Vim 需要较多的时间折腾,可以在熟悉 Linux 的环境以后再考虑上手。

若需要了解如何 Linux 的安装使用和 Vim 的折腾,可以:
新生盒饭 | 诟屍 (新手学习 Linux 推荐从 Ubuntu 起步)
鸟哥的 Linux 私房菜

了解 Linux 命令行,除了鸟哥的 Linux 私房菜外,也推荐这本书:
快乐的 Linux 命令行

了解Emacs的话,可以参考 ManateeLazyCat文章
Emacs是什么? - 简书
Emacs 折腾之旅起航 - 简书
Emacs 最基本的一些配置说明 - 简书
Emacs:我已经十年没有按过保存按键了(附带 auto-save.el 源码解析) - 简书

信息素养

我们生活在信息社会,且如今信息越来越繁杂,能够判断什么时候需要信息,并且懂得如何去获取信息,如何去评价和有效利用所需的信息。已经成为了现代社会的人们需要的一项基本的能力。

然而,从小学到高中的《信息技术》课程,在很多学校常常会因为一些缘故被换成自习或文化课,不知道在各种教育资源的竞争压力下,又有多少同学掌握了这门课程本该传达的技能?

在大学,在学术界,特别是计算机类的专业,我们尤其需要重视这项能力的培养。我们的编程生涯中,可能会遇到许多各种各样大大小小的问题,在互联网上,有许许多多的前辈其实已经踩过你现在正在踩的坑,并且留下了记录。这些记录分散在互联网的各个角落。如何快速准确地找到它们,这样的意识和技巧综合起来,着实是一门学问。这门学问所体现出来的,也叫作“信息素养”。

所以站长建议大家开学以后积极参与学校图书馆开设的相关讲座和培训,也推荐大家大二的时候选修图书馆开设的《信息检索与利用》公选课。

中国大学MOOC 也有一门相关的MOOC课程(感谢软件学院 黑色旋风 师兄的推荐):
信息检索_武汉大学_中国大学MOOC(慕课)

培养邮件交流的习惯

邮箱是我们大学乃至职业生涯决不可忽略的东西。

为什么使用邮件,而不是只使用即时聊天工具?
两个关键词:记录存档

还有一个神奇的东西:邮件列表

推荐阅读这篇知乎回答:
学生还有必要使用邮箱吗?QQ 已经够用了吗? - 知乎

以及 ISCNU 关于邮箱使用的推送
电子邮件的那些事儿

推荐阅读的材料

计算机的体系那么繁杂,站长不可能凭着一己之力,一篇东西就能让你有着很深的理解。所以也希望大家多多阅读前人留下的想法,这里推荐一些我认为非常值得一看的。看在站长整理得那么辛苦的份上,一定要看喔◔◡◔

0xFFFF 其它的伙伴的建议:
各位已经不再是新生的老友们,你们有没有什么想法分享给新生们的?

来自知乎著名的开发者轮子哥写给新手的入门建议:
vczh的日常 - CS新手如何以正确的态度开始学习(分享自知乎网)

心系大家的斌头老师的博客:
Bintou老师的简书主页

这里是老师关于计算机初学者的一些建议:
斌头老师的FAQ - 简书

写给华南师范大学计算机学院准大一新生的一封公开信 - 新闻通知 - 华南师范大学计算机学院

英文教材的阅读方法及策略 - 简书

写在专业分流之后 - 简书

除了我们身边的斌头老师外,还有一位为我们IT人的成长写下了很多很多建议的贺利坚老师,他在CSDN开设了一个指导计算机人成长的专栏。

贺利坚老师的专栏:
关于“IT学子成长指导”专栏及文章目录 - CSDN博客

另外,贺利坚老师还写了一本同样可以对我们很有启发的书:
《逆袭大学——传给IT学子的正能量》

这本书可以在我们学校的图书馆里找到(很多很棒的计算机书籍在学校的图书馆都有馆藏!),推荐开学之后借回来看一看。新生教育周,军训的时候,最适合思考人生了有木有!

最后

路很长,这篇试图概括的帖子,还有推荐的阅读材料的信息量都很大,消化起来可能不太容易。

讲了这么多,如果不动起来的话,再完美的理论都是白说。

我们不可能一口吃成一个胖子,唯有一步一个脚印不断地探索和发现。

所以,掏出你的键盘,打开编辑器和 Think-C 开始干起来吧!!

如果有什么想法或者疑惑,可以在楼下回复,或者是另外开帖子提出噢。

学习中若有问题,如果短时间内自己解决不了,一定要向外界求助!!

Bintou 老师出现了啊啊啊!!!
我相信会有的 ? ? ?

以上讲得够具体详细了,如果非要从务虚的角度,我补充一句,从高中生转变为大学生,需要做到:认识社会、认识自我。

这八个字很虚,然而我思前想后很久还是把它敲出来赠给各位,新生或者老生。一个很现实的问题,建议那么多,都摆在哪里,你听谁的?你必须自我判断。转念一想,不对啊,我都没上大学,我怎么知道怎样才对?似乎我感觉,在大学里面还是咸鱼一点更舒服,比如,多交朋友多吃饭,扩展人脉多扯淡......甚至有新生很明确对我说,我大一已经决定了(铁了心了)不能用功学习专业,这一年我要享受生活,我不要做学霸,我只需要保持不挂科就可以了。如果你听到这个建议,你会接受吗?不知道,但是现实告诉我,大部分的同学并没有把精力重点放在学习上,这是一个事实。

怎么样做,怎么高效地进步,缺的不是建议,缺的是思考与决断力(或者智慧)。有时候我在想,其实他们新生根本不需要思考,需要的是相信,相信我!这句话在多数场合是不能说的,这分明是独裁者的逻辑。怎么办?回归“守望者”的角色,静待花开咯。或者传统而言,曰无为之教。或俗气一点说,偷个懒,做条咸鱼。

Hello,大家好,我是咸鱼之友!

那暑假剩下的时间应该做什么呢?
我看到有人已经买了C++ Primer Plus这本书了

    Huck 先完成再说,线性代数应该需要蛮多时间的 ?

    Huck 搞完 Think-C ,有了一个基本概念的话,再上手 C++ 或者 python 什么的应该都可以,(个人更推荐看看CSAPP这本书),不要停留在一个小点就好了。

    另外,数学的话,我觉得是可以和编程同步进行的,比如在一天中,花两个小时学C语言,花一小时看一集线性代数课程,保持一定的专注最好?

    没有什么定死的学习路径,最关键是动起来!

    Sweedy 纠正一个概念。18年入学的称“18级新生”,18年毕业称”18届毕业生“。

    新华字典. 届,量词,略同于“次”,用于定期的会议或毕业的班级等。例:应届(指本期的,用于毕业生)。

    另外推荐一下语言专家王垠的博客 yinwang.org
    对于入门者来说,他写的《解谜计算机科学》也挺值得一看的。
    文章的阅读需要自觉付费,读之前注意一下,觉得这种支持作者的方式还是挺赞的2333

    就是有一丢丢贵。。
    photo_2018-07-23_19-25-38.jpg

    • Kaye 回复了此帖

      新手应该先从thinkc上手吗 如果那些计算机的硬件 系统之类的知识(初高中信息课学习的)也不清楚要怎么办?

        hanling2-6 刚开始的话主要的目标是

        目的是让阅读者对程序设计有初始的认识,了解C语言的基本特性,为后续课程打下基础。

        推荐 Think-C 主要是因为它是从程序设计的思维的角度来出发的,比较简单,也比较直戳重点(结构化程序设计、函数、数组、指针等概念),避免长时间陷入一些不是非常重要的特定语言的特性的细节中不能自拔,总体来说也贴近上面所说的基本目标。

        之前看到一篇文章:如何掌握所有的程序语言 ,讲了学习程序语言需要关注的地方,以及初学者的一些误区。

        作者的观点是:

        初学者应该专注于语言里面最关键的特性,而不是被次要的特性分心。

        然后因为程序设计本身也是在计算机知识的大网中通行的基本技能之一,所以也建议从程序设计开始入门计算机啦~

        了解其它方面的知识可以随后再来的,与入门程序设计这个过程并不冲突嘛,大概有了一些C语言的基础以后,我们再去看别的书籍,相对也没那么吃力了。了解硬件、系统等各方面的知识推荐看《深入理解计算机系统》(CSAPP),以后的《计算机组成原理》课程也会有相关的内容。

          Kaye 具体可以读一读作者博客关于这书的介绍,他到目前为止才发表了一章

          http://www.yinwang.org/blog-cn/2018/03/21/csbook-preface

          这本书不是固定不变的,它会不断地完善和发展。有人看我写的东西就是我最大的动力,所以为了使我自己有动力写书,我会采用“快速迭代”的方法。我是一个很懒的人,我不会等书完全写完才发布它,那样我会打瞌睡以至于不能继续,所以我会分章节发布书的内容。每一章发布之后,还会经过成百上千次的修改。每一章的内容,我会在它“基本可读”之后就进行发布,而不会等到它完美。之后我会反复的思考和修改,接受人们的反馈。

          hanling2-6 补充一下,跟着Think-C练代码,应该也可以作为一个适应英文资料的阅读的一个过程

          0x0001 置顶此帖

          © 2018-2025 0xFFFF