[大二]23-数学->软件工程
录入信息
审核 | 彭杰(162304124)
转软件工程专业经验分享——以完全没有任何基础的编程小白为例
“迎着晨风想一想,今天该怎样努力?”——题记
零、个人概况
- 2023年底,从2022级数学系降级转入2023级软件工程
- 本人QQ:2550836595
- 欢迎学弟学妹们前来交流互动!
观前提示
- 本文仅根据2023年的转专业情况,为毫无编程基础的同学而作
- 每一年的转专业情况都有变化,请根据自己的实际情况而有取舍地阅读
一、前期准备
在正文开始之前必须明确,计算机的处境已经今非昔比,转专业之前,要想好,我真的喜欢这个专业吗,我真的可以接受它的高强度的激烈的竞争吗?如果答案是“Yes”,那就继续往下看吧。
我不排除2024年转专业考试形式和内容发生巨大改变的这种可能性。这种事情在之前发生过。所有内容都基于我今年的情况。
大二转软件工程,如果考试题型不在明年大改的话,考察的是上机做题,也就是在2h的时限内,完成八道略有难度的编程题。
什么是编程?在正式开始学习编程之前,我建议先看一看翁恺的对于编程的简介,尽管是基于C语言的,但是对于小白的入门很有帮助:
翁凯的C语言编程课 (P2-P3,P6-P8)
看完之后,就会对编程有一个基本的了解。
接着,需要安装一个IDE,也就是拿来写代码的东西。这里推荐Dev C++:
上面是下载链接。安装很简单,疯狂下一步就OK。
接下来需要注册一个PTA的账号:
这个注册很简单,按说明来就行。
那PTA是什么呢?简单来说,在线的刷编程题的网站。具体的介绍和使用可以看上面翁恺课程的P21-P22。
此外,要收藏好三个网站:
- 福州大学教务处:https://jwch.fzu.edu.cn/
- 福州大学计算机与大数据学院:https://ccds.fzu.edu.cn/
- 福州大学转专业交流网站: https://run.w2fzu.com/
大约从十月份开始,就应该时不时打开教务处与计算机学院的网站来查看是否有各种通知,一般来说转专业初通知是十月中下旬,各学院转专业细则是十一月初出来。
那个转专业交流网,是完全针对福州大学的转专业资料,强烈建议反复仔细浏览其中的所有的关于计算机的内容,不管是大一的还是大二的。尤其不应该忽略备考资源中的计算机部分的内容,它有近几年的机试题目,参考价值很高。
接下来要注册MOOC的账号。如果有的话,要去按这个网址:
https://www.icourse163.org/course/ZJU-93001
上的教程去绑定对应的习题集到PTA账号上,不着急做题,先把准备工作做好。
随后,看这一页的几个视频和教程,绑定这个课程的习题到你的PTA账号: https://www.icourse163.org/learn/ZJU-199001?tid=1471228462#/learn/content?type=detail&id=1256447767&cid=1289479847&contentid=1235274362
最后,加入这个QQ群:1136717485,时不时关注群里的消息,尤其是九月份之后。
至此,准备工作已全部完成。
二、正式行动
在此之前先问自己几个个问题:你的时间多吗?你下定决心为转专业牺牲一些东西了吗?能吃得了双倍学习压力的苦吗?
如果你的回答是:“是!”,那请继续往下看吧。
首先,扎扎实实地看完翁恺的C语言课程,上面那个链接是b站的课程,下面这个是MOOC的,内容大差不差,MOOC内容会全一点,还有讨论区;b站有实时弹幕解答疑惑,而且更方便,可以说各有千秋,按需索取。我建议视频看b站的,然后看MOOC里的一些文本教程和讨论区。
光看课,没用,对应的课后习题一定一定要按它的要求认认真真写掉,一定要做题!一定要做题!一定要做题!
https://www.bilibili.com/video/BV1XZ4y1S7e1
上面那个b站视频只有前十节,这个更完整,如果学有余力,全看完。
注意,在写题的时候,你应该在本地的Dev C++(为什么用这个不太好用的编译器,因为考试的时候只能用这个,而且它没有自动补全,对于新手打基础很好)先把代码写好,运行,能跑出大差不差的结果,再复制到PTA的答题框里跑,这是好习惯。
最好边看边做点题,这个题还是很简单的,有助于形成自信心: https://pintia.cn/problem-sets/994805046380707840/exam/problems/type/7
看完之后,你就成功入门编程,什么数组啦指针啦函数啦,判断素数啦求最大公因数啦这些东西应该都能掌握了。并且,如果有认真做题的话,PTA能踩应该踩了很多很多坑,这对于转专业考试非常有帮助。
打好了基础,就开始对转专业考试的特训了。 转专业考试可以用很多语言,但是绝大部分人都用C++。我也是。因此,开始学C++。有了C的基础,C++不会很难。学C++,看黑马的这个课: https://www.bilibili.com/video/BV1et411b73Z/?p=1 这个课的1-71P可以说是C语言基础,对于已经扎实学完翁恺课程的人来说看起来可能会很枯燥无味,我的建议是,这72P的内容,每一P,看到一半感觉完全都会,就跳过去不看吧,问题不大,如果做题遇到问题再回来看。
但是有一些内容,是C++和C的很重要的不同,大概有这些:
- 输入输出流cin和cout
- 常变量const
- 变量引用
- String字符串(string真的很重要)
- 动态内存new与delete
- 作用域 (以上非常重要)
- 函数重载
- 函数模板
- 函数默认参数 (以上了解即可)
接下来的内容,88-94(引用),185-263(STL库,很重要很重要很重要,没有它们基本上别想在短时间内写出算法题),是必须看的。面向对象那一块内容,有时间建议看看,实在看不懂就算了,问题也不是很大,就是看别人的一些代码的时候可能会有一些不理解。
当然,如果有时间的话,想要自己打下更扎实的基础,让自己上考场不慌,我建议看从1-263的所有内容。如果跳着看的话,做题的时候遇到一些问题会很绝望,甚至不知道要怎么去搜索这些问题。当然,里面有几个实际案例,这个可以根据个人的需要跳过。
有时间的话,最好跟着视频,把视频里的代码都在电脑上敲一遍。(虽然我没有这样做,但这是因为我之前已经有比较好的C和Python基础)。(STL部分必须跟着敲,前72P比较无所谓)。
然后,边看边做题。STL看完vector容器部分之后就必须开始做题了。
做什么题呢?
https://pintia.cn/problem-sets/994805260223102976/exam/problems/type/7
最好做这个,也就是PAT乙级。 这个题难度五题一组,每一组难度逐渐上升(每组的难度也是在逐渐上升的,所以从头开始做,不要倒着做),就是说: 5k+1题(第一题,第六题,第十一题这样的题目)最简单, 5k+2题(第二题,第七题,第十二题这样的)会难一点, 5k+3更难一点, 5k+4再难一点, 5k题(第五题,第十题,第十五题这样的)最难。 5k+2到5k+4题和考试难度差不多(考试八道题里有一两道较难的算法题比5k还难得多,做不出来正常,考场上不要慌)。
答案也有,但是不要一直看,先自己写,写不出来可以放一放,做点别的。 https://liuchuo.blog.csdn.net/?type=blog
这个前辈的博客里,直接搜PTA的题号(PTA乙级1020这样的数字)就有对应的C++写的答案。她的代码风格很好,而且用了很多STL,很适合学习。
如果觉得太难了,可以先做一点这个,团体天梯赛: https://pintia.cn/problem-sets/994805046380707840/exam/problems/type/7
找找手感,但是要尽早切换到难的那个,这个对于考试太简单了。(在看翁恺C语言课的时候拿来练手是很好的)。
看完上面黑马的课,你就学会C++啦。
然后,把青春投入到PTA乙级的刷题上吧。考前,做完每道题,最少最少做一次,有时间最好做完之后再从头到尾复盘一次。
STL库的内容,string和vector的(尤其是用vector构建二维数组、用vector构建动态数组、string的各种处理)用法以及一些常见排序算法和函数必须烂熟于心。
计算机学院官网说转专业考试考面向对象程序设计和数据结构与算法。
但摸着良心说,数据结构与算法的内容至少今年真的没怎么考。
如果时间有限,优先刷题吧。一些常见的数据结构,去知乎搜搜,看看,了解一下就好,防止面试问。
但是如果时间充足,还是要学一下的。因为谁知道明年出题风格会怎么变呢?
数据结构与算法是计算机专业的一门课程,也是转专业文件里明确写出的考察内容之一。虽然我没学完,只学到了树的定义。我真的感觉没考,但也许它考了,只是我刚好没有意识到或者我不会做。
总的来说,评价最高的数据结构与算法的课程是浙大的陈越教授的课: https://www.icourse163.org/course/ZJU-93001
上面是慕课的网址,你可以按它的教程去绑定对应的习题集到你的PTA账号上,这样就可以同步做题了。 https://www.bilibili.com/video/BV1H4411N7oD/
这是一模一样的课程,只不过是b站的。我个人一般在b站看,弹幕可以解答我的很多疑惑。
事实上,这门课程是基于C语言的,而我们考试用的是C++,其中的STL库可以方便快捷地帮我们解决很多数据结构的问题。所以我建议,在看的过程中,不用过分纠结于其中的用C语言对各种数据结构的实现。(但是不应该忽视对算法的实现,尽管STL也能实现一部分算法,但面试可能会问,机试也可能会考,这种思维方式的养成对于刷题也很有帮助)
配套的习题不会做很正常。也不全需要做完,大概感受一下就可以。这门课算计算机专业里的比较难的课程了。更多地要注意对概念的理解,还有对算法的抽象的掌握。
不管怎么样,刷题是重中之重,今年考了两道PTA乙级原题的。
三、临阵磨枪
“行百里者,九十而半。” 距离正式的转专业考试只剩下很短的时间了,前半年已然付出了那么多汗水和努力,现在可千万不能轻言放弃。
1. 取舍
首先,如果你现在连C++的课程都没有完全看完,那么,应该要做一些取舍了。
首先,确保你的最基本的编程的基础知识没有问题:数据类型、基本运算、if、for(break、continue)、while、switch、数组、函数、指针(基本的一维指针)、最基本的类(创建一个类、给类添加一些数据成员和函数)。如果上述基础知识还有问题的话,那问题就比较大了,平时就要更多花时间在这上面了。
其次,如果你确保了上述最基本的知识没有问题,那么,现在要立刻、马上、迅速地去把黑马的教程里的STL部分(P185-P263)扎实地看完、学完。转专业考试的题目相对来说还是比较有难度的,所以一定一定得学会这些容器的用法,才能比较好的做出一些题目。
举个例子,比如,我现在告诉一个数组的长度为n,但是这个n的数据是由用户自己输入的,你应该怎么创建这个数组,怎么读取用户的输入?(输入样例:第一行输入一个整数n,为数组长度;第二行输入n个整数,中间以空格分隔)。再难一点,如果我现在要输入一个根本不知道有多长的数组,你应该怎么创建这个数组,怎么读取用户的输入?(输入样例:第一行输入若干整数,中间以空格分隔,整数的个数未知)。如果现在的你还不会写上面的题目,那么就需要敲敲心里的警钟了。
最重要的容器是string、vevtor、map以及它们对应的方法(函数)。一定一定要牢牢掌握这三个容器。它们的创建、添加、删除、清空、查找、判空,读取、写入、输出、遍历、排序(由小到大、由大到小)、截取、复制、转换。这些是最基本的操作。
各种头文件的写法,也至少要背下来。
2.刷题
刷题,刷题,刷题。争取把乙级的题目全做一遍。现在就好像是高考冲刺的时候,一定要多做题来测试自己的知识掌握程度、发现漏洞。特别是在这个过程中掌握对STL的使用方法。黑马的STL只是入门,做题的话,还不太够,还是得在实践中碰一碰。
做题,可以参考这个博主的,她貌似把乙级的题做的差不多了,直接在搜索栏里把题号输进去(比如:1005)就可以 https://liuchuo.blog.csdn.net/?type=blog
下面这篇文章可以算考前总结 https://blog.csdn.net/qq_63691275/article/details/128057977
做题的时候一定要注意积累,可以用txt文本、word文档甚至手写,把一些重要的东西记下来。比如我上面说的不定长数组的输入。在做题的时候,其实相当一部分难度都来自数据的读取和输出,特别是读取。算法的难度反而不是很高。再强调一遍,string、vector非常非常非常重要,一定要把它们熟练掌握,它们是破局的关键。Map也很重要,但是相对于前面两个来说没有那么重要,但也要认真掌握。
3.面试的注意事项
面试其实不是特别重要,除非你竞赛拿过奖或者是ACM队的(服外和西二我不知道有没有用),不然笔试成绩基本上就等同于最终成绩。如果笔试成绩够高,只要不骂老师,都不会被刷掉的(我们去年面试进了6个,最后录取的就是笔试成绩从高到低跑排下来的四个)。
面试的时候,老师可能会对你上强度。去年老师就拷问我的大物成绩和数分高代的成绩,问我是不是理科很差,是不是数学学不下去了才转来计算机。这种时候千万不能破防(其实我当时挺破防的┭┮﹏┭┮)。如果你已经明确了成绩单上会有某些科目成绩不太理想,可以提前心里先准备一些理由。
再强调一次,面试没有那么重要,机试才是核心,机试成绩够高,面试无所谓的。(应该不太可能出现你机试第一名但后面全都是A爷然后你被顶下去了吧……)
四、最后的话
最后冲刺的那段时间,每天三点睡七点起,白天有本专业的学业,深夜要顶着困刷题。现在想来,那段日子委实痛苦。但看着如今在新专业的仍然辛苦但倍感充实的生活,又觉得当初的付出是值得的。
又是一年深秋,看着转专业群里的学弟学妹们热烈的讨论,百感交集。
大胆往前走吧。
功不唐捐,玉汝于成,与卿共勉。
版权声明 © 本网站内所有文章著作权归作者所有,禁止转载。