迫于挂科压力,大一女生如何掌握学习编程的姿势

2022-01-20 12:26:30 +08:00
 logiclee
目前是一所普通大学的计算机专业的大一女生,上大学前没有接触过编程。
目前只学习了一些线性代数,微积分,离散数学,c 语言的课程。
所有的课都学的不咋地,尤其是 c 语言的课,非常严格,要求当场写出程序。
一个学期下来我只能写出一半左右,感觉要挂科了。

请问课上如何才能快速写出题目呀,愁死了,感觉不是吃编程这碗饭的料。
11879 次点击
所在节点    问与答
163 条回复
Immortal
2022-01-20 13:47:03 +08:00
我觉得是对计算机还没有一个整体的概念和理解 .
除了平时多写多看多思考以外,如果真有想法做这一行,建议业余时间一边阅读下<现代操作系统>或者<深入理解计算机系统>等这类书籍,对计算机有个整体概念,知道变量\程序在系统中到底是什么,是如何运行的,你现在苦恼的这些问题都会自然而然的找到答案.
就像很多大学,培训机构等等,很多时候只倾向于告诉你"怎么做",却没花很多心思在"为什么这么做"上.
isBitter
2022-01-20 13:52:56 +08:00
我当时是刷 杭电 OJ ,大约一百道题(什么简单什么开始刷,不会就搜解答),就能 90 左右过 C 的期末了
对我个人来说,在初学阶段做题的效果非常显著,更何况现在 leetcode 条件好太多了,题解很详细很全面还有引申,上面也应该有入门的刷题顺序推荐,几十道题左右就能掌握基本的编程思维(分支顺序循环递归..),不过适不适合还是因人而异吧。

需要注意的是不应刷太多(基本上了解大概的编程思维就差不多了),这个建议是作为简单的入门实践了解,知识点比较散。

另外,如果觉得学习难度很大的话,可能是教材本身的问题。
Tink
2022-01-20 13:53:47 +08:00
多练
xdeng
2022-01-20 13:53:59 +08:00
加我微信 我来教
ferock
2022-01-20 13:56:18 +08:00
买个树莓派,搞点实战
wonderfulcxm
2022-01-20 13:58:57 +08:00
好好学习,天天向上
长路即捷径
ruxuan1306
2022-01-20 13:59:17 +08:00
@IGJacklove #19 确实,我当时 C 语言上机考试前,机房有几天考试系统的模拟练习,我去抓了抓题库和窗口类名标题,做了个后台 F1 一键搜题库复制答案到剪贴板,然后宿舍几个都是 90 多。
iMiata
2022-01-20 13:59:47 +08:00
@logiclee 光看贼吃肉 不见贼挨打的典型了
lightjiao
2022-01-20 14:01:11 +08:00
加我微信,我手把手教( doge
我加密后的微信号:aWxpZ2h0amlhbw==

*这个微信号怎么用?
用这个网站: https://tool.oschina.net/encrypt?type=3
把字符串粘贴到右边的输入框,然后点击 [base64 解码] 就可以看到真实的微信号
iloveayu
2022-01-20 14:03:03 +08:00
标准答案:女留微信,男自强。
freeup
2022-01-20 14:11:11 +08:00
记语法和关键字+建立程序逻辑 就和写作文一样 写出自己所想就行
wtf12138
2022-01-20 14:11:40 +08:00
刚开始学都这样,我大一也差点挂 C 语言,主要是一些概念如果上大学之前没有接触过编程,真的挺难理解的,教材不说人话
hhyvs111
2022-01-20 14:13:49 +08:00
建议转专业吧,不然很痛苦的
zhchaos
2022-01-20 14:16:05 +08:00
多花时间,或者抱大腿。
wtysos11
2022-01-20 14:19:46 +08:00
刚作为 TA 监考完大一新生的程序设计期末考试,对你这个问题算是有一点想法吧,稍微写一下我觉得可能有用的点
第一个是方法论的问题,首先要对自顶向下的面向过程开发有初步的了解。我觉得初学者应该领会一下这个基本思想,写简单程序的时候先做一下分解,写一下伪代码,把大的程序分解成若干个小的模块,再一点点完善下去。我经常是能看到有同学一把梭哈,for 循环套 if 套 for ,主函数打个上百行跟我说不知道有什么问题,我看到都头大。如果是这种情况就应该好好改进一下思考习惯,慢慢练练。
第二个是积累的问题。这个是跟任课老师聊的时候他提出来的,就很多同学不会分解的原因是他不知道分解之后程序是个什么样子。这个只能多做题了、多积累了,有一个不太相关的例子是当年打 ACM 的时候我们都是自己带打印好的代码进场的。但其实这个是相同的,对于新人来说也可以考虑记忆一些比较简单的代码范式,背一些伪代码,比如说递归、二分、二维数组的一些基本操作之类的。我就经常看到有些同学回回都能错同一个地方……好歹也是应试教育刷题刷上来的,贝叶斯搜索都能根据先验知识调整自身参数,大一新生入学半年就退化得连错题本都没有了。
现在比当年有很多很优秀的资源,比如说 B 站上的公开课质量比很多老师讲的不知道好多少个数量级。在线编程平台的话我们同学有用一个[dotcpp]( https://www.dotcpp.com/),其他的像牛客网、leetcode 之类的也可以挑一些简单题目来写写。
第三个就是自身学习方法的问题。程序设计本质上还是一个刷题的学科(或者说大一的所有基本科目都是刷题可破的)。这里可以借用强化学习的探索-利用问题。在程序设计中,所谓的“探索”意味着刷新题,“利用”意味反复学习过去的题目学透知识点。可以把对应的知识点的题目的完成情况记录下来,就基本能发现自己的问题了。反面例子就是有一位沉迷刷题的同学,很喜欢做自己会做的题目,不会做的题目问完我之后基本就不管了,从期末考试的结果来看这种学习方式应该是有些问题的。
刷题的时候总是会遇到一些比较困难 /不熟悉的题目,调试也很费劲,有一个比较笨的方法是直接单步手动把题目的所有过程算出来(当然,可能需要自己做一个简单的样例),然后写伪代码,然后一步步把伪代码改成真实代码。执行的时候如果有问题,就一步步把中间变量的结果全部算出来,然后看一下真实情况和线下到底那个有问题。这个方法是能够 100%起效果的,我就是这么教的,唯一的问题是做题速度极慢,但至少是能够做出来的。就,学会跑之前还是先走熟练了比较好。
总体而言,不要有太多的心理负担,大一级别的 C 语言编程只要学习时间上去了,谁都能搞定的。从个人的经验来说,在大一大二这个阶段,即使在 985 甚至是浙大、上交之类的学校,只要拿出高三时期八成的刷题功力都是能直接杀穿的,国一要看人品,但一般拿个二等奖学金真的是没什么难度。个人的建议是好好反思一下平时时间都花在哪里了,先把学习时间堆上去,把学习习惯找回来。
hambers
2022-01-20 14:22:04 +08:00
额,找个高年级的师哥做 bf ?
enchilada2020
2022-01-20 14:28:57 +08:00
别听楼上有些人瞎说 一个个站着说话不腰疼 气得我特意爬起来开电脑写回复

推荐你去听三门课 都是浙大非常有名的公开课:

1. 翁恺 C 语言 可以搭配 K&R C 作为教材 https://www.icourse163.org/course/zju-199001
2. 陈越何钦铭 数据结构 可以搭配 维斯 数据结构与算法分析 C 语言描述 https://www.icourse163.org/course/ZJU-93001
3. 翁恺 Java 语言 https://www.icourse163.org/course/ZJU-1001541001https://www.icourse163.org/course/ZJU-1001542001

以上按序学习 你会掌握主流编程语言的主要概念及对基本数据结构和算法的理解 这些是最重要的基础 无论怎样强调重要性都不为过 要踏踏实实把课跟下来 把课后题完成 之后就可以去 PTA/PAT/LeetCode 上刷题啦 刚开始先只做 PAT 乙级 /LeetCode Easy 手熟之后可以尝试 甲级 /Medium

之后还可以学一些 Python 做些实用的小玩意儿来 体会一下编程带来的乐趣和成就感 这也很重要

如果没能走到这里 或是到这里还是感觉对 CS 提不起兴趣 学起来很吃力很痛苦 那你就真的应该停下来问问自己 是不是非得吃这碗饭不可

如果一切顺利的话 恭喜你已经初步有了科班生最基本的功底 之后的路该怎么走 自然你会有进一步的想法

祝好!
georgema1982
2022-01-20 14:31:46 +08:00
没经验的话建议用传教势的姿势
admin9
2022-01-20 14:32:45 +08:00
妹子学计算机,可以考虑学好英语进外企,,,
mx8Y3o5w3M70LC4y
2022-01-20 14:34:10 +08:00
编程语言学习,最好不要看中文文档,比如 c 语言千万不能和谭浩强学。

还有,很同意#7 @felixin 的观点,每个人入门编程的进度都不一样,不要害怕。加油!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/829431

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX