| 选课类别:计划内与自由选修 | 教学类型:理论实验课 |
| 课程类别:本科计划内课程 | 开课单位:计算机科学与技术系 |
| 课程层次:专业选修 | 学分:2.0 |
这是一门面向全校本科生的计算机编程实践课程。该课程面向有一定编程知识的本科生,通过有针对性的几个专题编程训练,进行问题求解的实践,加深学生对问题求解与程序设计的理解与认识,使得学生具有通过编写一定规模的程序求解问题的实践能力。作为一门以实践为主的课程,采用以课堂内讲授与课堂外实践相结合的授课形式。
《面向科学问题求解的编程实践》主要使用Python进行科学问题求解,课程内容包括科学算法、机器学习、模拟、以及物理随机模拟等。这门课不讲解Python语法,而是从问题出发进行编程实践,涉及内容广泛但不深入,适合作为通识课。教材使用MIT的“Introduction to Computation and Programming Using Python”,但有学生反馈这本书对初学者并不友好,特别是在数学原理解释上略显不足。
考核由四次平时作业和一个期末大作业组成。平时作业相对简单,多数基于教材,提交报告即可。大作业选题自由,用任意语言解决科学问题,需提交报告,但选题水平对分数影响较大,有同学建议选题时注意科学性。部分学生表示大作业有一定挑战性,尤其对复杂选题要求更高的解决能力。
普遍反映给分慷慨,许多学生获得优秀或接近优秀的成绩,有“GPA之父”之称。但也有反馈指分数的获益差异大,可能因选题水平和报告完成情况不同。一些学生觉得评分标准模糊,报告和项目完成度是主要考核依据。
课程对有编程基础的学生较友好,但对Python初学者要求自学。多数学员反馈课程教师孙广中讲解平实,教学氛围轻松,但对一些学生吸引力不足,尤其后期到课率下降显著。课程虽不点名,但非例外的点名会提前告知,助教负责且积极解答问题。同时,有学生表示若无强力选题成果,竞争中可能压力较大。
适合已经具备一定编程基础、尤其是自学能力强的学生,尤其是对Python感兴趣或需要学Python的同学。大一自学能力较强者可以尝试选修,课程内容对提升编程实践能力有效,同时给予较高分数,相对友好。高年级和具备相关项目经验的同学在选题上会有优势。
很好的课 唯一不爽的是现在我还没知道这个算公选课还是自由选修。。。
上课主要讲用py解决各种有趣的问题
老师也玩project euler这我是没想到的
考核方式是自己解决一个自选的问题
我用python写了个Oblivious Transer使得两个学生可以在互相不知道对方GPA的情况下得知谁的G更高(((
感兴趣的同学可以看看多方安全计算有关的话题
给分超好,直接满了。。。
这门课就是学python然后用python讲如课程名的内容,五等级制。好像没查到能算公选课,所以可能只能当自由选修。(我倒是公选已经够了所以不重要) 作业只有刚学python的一次多种方法求fibonacci数列和一次大作业。 群里会发电子版的《程序设计导论:python语言实践》,自学+前几周上课来速成python。然后就开始讲各种算法和例子,然后我就没上过课了……后半学期我基本整天都在睡觉或者打pcr公会战。不过就我还在听的课看来课程内容质量应该还不错的。 大作业是用任意语言解决一个任意问题,要写报告。我用python+gurobi写了个pcr公会战排刀程序(抽象成一个整数优化问题,直接使用gurobi优化)……报告里说整数优化是经济学问题,硬扯到“科学问题求解”。可能因为老师和助教都是二次元(助教也玩pcr),也就算是“科学问题求解”了。 我认识的选这门课的几个人总评都是A+
课程主要内容好像在讲机器学习, 但是我好像没听课, 而且基本都翘了()
有四次平时作业, 难度中规中矩, 实验报告也不需要太卷, 我用markdown简单的写了一下都给了我10分.
大作业就是自己写一个程序去解决某个问题, 貌似可以随便用什么语言, 不过我还是用python写的, 而且不局限于课程名的"科学问题", 有点用就行. 我一开始用opencv+pygame做了个很唐的物理模拟, 然后去课堂分享凑热闹被助教拷打了(), 然后我又推翻重开用langchain做了一个小玩意.貌似老师不太希望看到过于理论(太物理的?)的东西,更希望项目有实际作用吧
出分之后再来更新
2025.07.21
出分了,远超预期。故加1分到10分
没有在课程出分时及时评价,是因为当时正沉浸于3.3的悲痛与自责之中。现在从逆流成河的悲伤中恢复过来后,那就“实事求是”(扯淡)地评价这门课程吧。
孙广中老师讲课中规中矩,至少在我看来是这样的。虽然没有非常吸引人的片段,但老师还是把一些基本事物的原理说出来了。但是可能有些同学认为太难或者讲的不是很清楚,我也非常理解他们的想法,毕竟我经历了从开课的人满为患到后几节课的不足50人的变化——可以说明老师的讲课对于相当的一部分人来说,是缺乏吸引力的,这可能与课程的跨度过大有关。老师的目的可能是授人以渔,在课上介绍了几个网站供我们了解,但是这对一开始连Python的语法都不清楚,再想去解决一些比较难的科学问题的学生来说,就不是很友好了。
对于教材我不是很满意,虽然是MIT的教材,但是由于定位的原因,重点放在了“如何运用Python方法解决问题”上,而对“方法背后的数学原理”和“Python作用的原理”解释较少,导致在看后面几章时会比较吃力。并且大部分同学学的是“面向过程”的C语言,突然跳转到“面向对象”的Python,难免会有“水土不服”。最后,这本书的难度跨度较大,章节编排也不甚清晰,示例也没能做到一般性。如果先安排更多的章节在前清晰地介绍Python的语法特点和类的构建,再在后面的特定科学问题章节中总结出泛用性的模板,那大家看这本教材的时候也不会太过难懂。
助教比较尽心尽责,每节课后都会留出一个小时在班上解答同学的问题。
比较令我不满的是作业的布置和给分。由于老师没有点到(第一节课和后面几节课反复说明如果人数较少就会点名,但最后还是放过了),平时分完全来自四次小作业与大作业。四次小作业布置的基本上是(其实应该说是“完全”)书上的原程序,不能体现学生的思考能力(或许排除掉那些懒得翻书的人?);大作业是用任意语言写一个科学问题求解的程序,除此之外几乎没有任何要求。理论上来说游戏是可行的,但在给分上不会太出众。
5月15日是最后一份小作业提交截止时间,而直到7月份学期结束后小作业的给分才姗姗来迟,并且每人都是满分,这说明这门课的绩点完全取决于大作业的完成度。但大作业的给分标准恰恰就是没有说明清楚的,导致在出分时一些人凭借几乎没有花费精力的程序就获得了高分,而某些费劲心力准备几个月的同学写出的大程序没有得到期望的分数。
也许有些人会说“不符合要求”,“3就满足吧”,“水学分的课不要那么卷”之类的话,但是与其定下模糊的标准,一开始就制定严格的评价标准不是更好,更令人服气吗?与其明面上是针对低年级非计算机专业的学生开设的课程,实际上引来许多高年级的计批卷绩而挤压了其他学生的优秀率,还大跨度地教授了其他非专业学生根本不懂的内容,一开始把课程标准放严不是更有利于计院学生学到专业知识,放松不是更容易吸引对Python一窍不通的学生了解如何利用程序求解专业问题吗?
孙老师提到这门课之前开过两次,但由于目标不清晰而中断过一次。我想说的是,直到现在这门课程的定位仍然是不清晰的,仿佛是第一次开课,处于懵懂且幼稚的摸索之中。希望孙老师可以找到合适的讲课方法和内容,更好地面向更多的非计算机专业的学生教授这门课。也许某位学生上完后,真正熟悉Python语言并感受其带来的便利,进而更好地解决其专业中出现的科学问题。
这门课会教你怎么用python设计程序,由浅入深,会从语法开始逐渐介绍。python本身也是一门很简单的语言,上手起来十分容易。课程内容涵盖科学算法,机器学习,模拟等等。 课程会上一学期,没有作业,期末会要求一项大作业,用python(或者其他语言?)设计程序解决一个'科学问题'。选题十分自由。 然后需要交一份报告,介绍选题、思路、解决方案、代码设计等等。五等级制,应该完全只看最后交的报告给分。 ddl线比较宽松,今年好像为了照顾大一新生的数分ddl特地往后拉了几天。 纯调包+解释原理,解决一些看上去有趣的小问题应该能拿不少分。 实在想不到选题可以从Euler Project里面选题解答,不过给分就不太清楚了。 我今年也不知道做什么,干脆随便弄了个机器学习的小项目。用蹩脚的英文写了一坨报告交上去了。神经网络训练结果费拉不堪,我干脆直接摆烂,写上训练结果不尽人意。 出成绩发现给了A+,给分真的神仙(起码我认识的选了这门课的(包括去年选的)都是A+)。 直接给十分。
先谈讲课吧。可以看出孙老师功底还是很nice的,但是不知道是不是因为到课人数极少的原因,课堂氛围有点偏向于平淡。但是如果认真听还是可以有一定的收获的。课程内容的话感觉是大杂烩,不会专门去讲python的基础语法,而是介绍了一些算法(线性规划、遗传、机器学习等),但又没有特别深入,也算是符合“通识课”的定位吧。
给分的话基本上是看大作业给的分,但是嘛...作为大一非oier...大作业个人感觉不是很好写(毕竟要求是“面向科学问题求解”嘛,但大一er对科学问题的了解不是那么多,再加上课堂上只学过C码力有限,所以说对大部分大一非oier来说其实不太友好)我是自己把python基础语法看了一遍,然后学了一些基本的机器视觉工具,然后搭了个GUI做了个图片处理的工具。自认为做的不大好,最后bb系统上是90,教务系统上还没出,出了再补上评分吧。
————————————————————————
确实是A,那确实是给分相当好的,好像优秀以上就会有A了,最差都是B,老师也是很努力在给大家高分了
总评没有在教务系统发布,但已经出了。利益相关:A
前人和老师的意见是这门课只要上过C语言就可以选,对此我不是特别赞同,我的建议是最好是对python有一定基础的低年级同学或者高年级同学来选。 从本学期开始,这门课增加了四次平时作业,基本都是用python解决一些问题,(当然源代码书上都有),然后完成相应的实验报告。一般只要按时交了基本都会给满。还有就是期末大作业,这也是我为什么建议有基础的同学来选:首先上课老师是不会教python的基本操作的,这得自学;其次大作业是要求就一个科学问题用python解决,其中选题的水平高低很大程度上决定了最后的得分,高年级的同学往往能做出更加“高端”的选题,得高分的机会也更大。
不过这门课不会给3以下的绩点,想水学分的也能选。而且似乎是核心通识(?)
以及如果有想挑战一下自己的大一同学也可以选,确实能收获一点东西
总评4.3,给分比预想的要好
本人python语言基础比较薄弱,在这门课之前基本就是只能读简单代码的程度,所以刚开始有所担忧。但是后来发现认真读推荐教材+临时补一些语言知识完全够用,所以体验还是比较爽。
成绩构成是四次报告+大作业,给的时间都很充裕。报告主要基于教材代码,认真读教材花点时间按时交基本都会给满。大作业个人感觉要认真参考前几年的优秀选题方向,一些太简单、太主观或者太学科性的选题可能很难拿到好的分数。
上课没有点过名,老师给分一直可以的,总之就是可以无脑入!
这门课对于人工智能专业的同学是专业选修,对其他同学可以作为自由选修。
课程所需语言是 Python,参考教材是 MIT 的教材 Introduction to Computation and Programming Using Python。课程讲解内容包括:枚举、模拟、分治、物理随机模拟、统计数据分析、机器学习应用、高性能计算 / 并行计算 / 超级计算等等,内容相当丰富。正如课程名,主要涉及求解科学问题的实践,而不讲解 Python 的基础语法知识,所以有一定基础要求。想学习后者可以移步隔壁 Python科学计算基础 或者自学。考核方式:4 次课程实验(需要提交报告)+ 选做作业(人工智能专业必做)+ 期末大作业(无字数要求)。因为我是旁听,给分这一项我随便选的,不过根据课程群里反馈,应该是不错的。
一些参考链接:
2024 春 4 次课程实验:
期末大作业选题参考:
先说给分:A+,大作业做的是TSP问题的有关算法实现与比较。
作为一门python通识课,如果这门课面向的对象是没接触过或者不是以python为主要编程语言的学生的话,那么这门课是成功的;但是我看了一下群里面的同学,大多数是信智学部的(虽然我也是),这样就导致这门课的卷度爆炸,对于小白很不友好,所以建议限制这门课的选课对象。
出分后群里有人狂喷助教和老师,我的看法是助教只能从你的代码和报告去推断你的工作量和完成程度,报告也是一个完整的实验很重要的一部分。
另外一点就是选题很重要,注意这门课的名字中的“科学”,我觉得这门课程更多偏向于基础科学,对于计算机方面来说更关注的是传统的算法,而不是机器学习或者深度学习(当然这也是科学),所以大家在选题的时候可以更多考虑一下。
大一下选的,很不错的课,任务量比较小,但是课上收获很大。
课上不讲语法,直接讲算法,所以对于有一定编程基础的同学(如 OIer)还是很友好的,但是对于其他同学,可能就需要自学 Python 了。
给分确实超级好,欢迎来选。不过 40% 优秀率的限制是死的,所以也必然有一些同学只能得到 3.3,但是基本上只要正常完成任务分数应该不会差。
作为一名纯python小白,老师没有讲语法是我没有想到的(悲)
作业主要是四次实验和大作业,四次实验都很简单并且严格符合教材(所以完全可以自学),大作业选题极为宽泛并且给了充足的时间,感觉认真把作业坐下来会有很大收获
老师给分真的超级好!!!四次实验基本都是给满,大作业的话,虽然自己的代码很原始(毕竟初学者),但老师总评给了4.0,真的远远超出我的预期
课程本身所用的教材是MIT的《python编程导论》第2版,书本内容与平时作业的关系比较大,主要介绍了python的matplotlib库以及一些基础的应用。四次作业分别是:绘图、二维随机游走、使用蒙特卡洛模拟求圆周率和理解实验定律(胡克定律)。基本上都可以在教材中找到对应的源代码,实在不行抄一下改一下变量名。每次写完后要在bb系统上提交源代码和实验报告(不超过4页),总体而言任务量不大。
大作业的话专门为大四毕业生提早开了一个窗口,不过非大四学生也可以选择提前交。主题不定,老师在一节课上专门展示了上学期同学们的选题,同时介绍了几个优秀案例。个人感觉老师对大作业选题与科学有关很在意,所以最好还是不要写游戏。
课程内容介绍了很多算法相关的内容,但是并不深入,也算是符合通识课的要求吧。老师上课时很期待跟大家互动,但是课上来的人并不多,老师想要互动的想法就很难实现了。
就个人而言这门课我并不推荐大一就来选,当然如果你的基础很好,已经熟练掌握python就当我没说。这门课相当于基础班的一个提升,老师并不讲任何与python语法有关的内容,所以看评课社区时要理智,大一选课要慎重。(别像我这样大一还没基础就过来上课)yysy,老师给分是真的很好,今年貌似绩点最低是3.0,优秀的人中最低是4.0。
最后祝这门课越开越好,越来越完善。
非常好的课,事少不点名(劳动节前老师说明显人没到齐但还是不点名,真正体谅学生的老师)。但是改培养方案这门课不算ai专业选修了😭,我缺的学分这块谁给我补啊😭😭😭
学期一共点过一次名,而且提前在课上预告过。就算这样,整个21级没一个同学来上课😄😄
虽然我本人就是大一选的这门课,而且获得了让我非常满意的绩点,但是我还是不太建议大一的同学来上,因为这门课的大作业允许“一稿多投”,这样有过更加成熟科研经历的人可以把他们其他做的项目交过来,同时这门课能学到的东西比较有限(),对一些毫无基础的同学来说可能竞争压力较大。
老师会讲一些经典的算法以及吹水,不会教你基本的Python怎么写
给分拉了😭,感觉不太好,也可能是很多人用很复杂的什么大创,课题降维打击我这种大一没什么工程经验的渣渣的缘故
四次平时作业+选写作业(人工智能专业必写,因为这是他们选修课)+期末大作业,平时作业简单但还是要稍微费一丢丢时间的(代码+报告),给分主要看大作业。
本学期点了一次名,我睡过了没去QAQ,最后下课后交了请假条。期末写了选交作业,大作业选题较简单——选了一个经典的数学问题然后用多种思路实现并进行比较(因为只有大一接触不到什么高端的问题研究QAQ)。选题不难但完成得比较认真,给了4.0,给分真的好!
最后,感谢老师和助教!推荐大家来选这门课。
给分确实很好,本来以为自己能恰到优秀率就算成功了,结果是A。
本人大一选课,之前仅有C语言基础。老师上课比较沉闷,声音也小,去了几次后,本人越来越难以在周三下午说服自己从床上爬起来(樂),遂摆,导致完全不知道有点名的事。因此这门课本身的收获并不大,但是为完成大作业本人也基本自学完了老师推荐的Python教材和另一本相对基础好懂的教材,因此怎么不算收获颇丰呢(
大作业本人是做的多种EM聚类算法效率对比(和老师展示的往届大作业比起来真的朴实无华)。从基本原理出发推出公式然后实现。由于技术有限不会优化,经常出现跑一晚上不出结果的现象,报告如实写上即可。
总结:给分不错,Programming基本得靠自学,推荐选。
据说有一次点名,在点名前一节课通知了,但我全程翘课自然没点上。一共4次作业+大作业,人工智能专业多一个报告。大作业在最后一次课上汇报有加分。作业和报告都是ai写的,大作业是从别的课简并来的,给分是极好的。
很好的课程,推荐作为组内科研代码的附加值,上课不点名(本壬一学期只去过一次,匿了)。有一些问题是最后的成绩评判标准有些模糊,似乎有顶会佬也只拿了3.3,可能报告占比在评分中有相当大的比例,要选课的学弟们想拿高绩一定要做好可视化和报告
大一上过一次3.3不是很理想,但是确实对于当时的水平也很合理,大三重修。感觉选择大于努力,选题真的要很有科学性,利益相关,唯有感恩!