软件工程实践寒假作业

作业基本信息

这个作业属于哪个课程<福州大学-202302软件工程实践>
这个作业要求在哪里软件工程实践寒假作业
这个作业的目标回首过去、立足当下、展望未来、思维导图和学习路线
其他参考文献《构建之法》、菜鸟教程

1. 准备工作

1.1 学习Markdown语法

Markdown是一种轻量级标记语言,与传统的富文本编辑器相比,Markdown更加简洁和直观。我通过附件链接学习了Markdown语法,并撰写博客内容。

1.2 创建GitCode仓库

仓库地址在这里插入图片描述
在这里插入图片描述

2. 回首过去

2.1 当初你为什么选择软件工程这个专业?

我选择软件工程专业有几个重要的原因。

首先,从小时候开始,我就热衷于折腾能接触到的电子产品,也喜欢给游戏打各种mod和补丁,那时就觉得能使用电脑开发和设计游戏的程序员很酷,希望自己以后也能有机会尝试。

其次,我对软件工程专业的选择还源于它能给我带来较大的成就感。通过编程,我可以创造出功能丰富的应用程序和网站,将创意和想法变为现实。

此外,我受到了这个领域的就业前景和发展潜力的吸引。随着数字化转型的加速和对技术的不断需求,对软件工程师的需求愈来愈大,薪资待遇也相对较高。正如企业家雷军所说:“站在风口上,猪都能飞起来”。我相信选择软件工程专业将为我提供广阔的就业机会和职业发展空间。

最后,我还受到了多方的建议。高考结束后父母亲戚帮我分析和斟酌了许多专业,又连麦了网红张雪峰老师,结合自己相对普通的出身和比较宅的性格,他们也都建议我选择软件工程这一专业。

2.2 当初对软件工程这个专业的期待和想象是什么?

当初选择软件工程专业时,我对它抱有很多期待和想象。我期待自己能够深入学习并掌握软件开发的核心原理和方法,参与创新和前沿技术的研究和应用,具备开发大型应用软件和游戏的能力,做一些自己想做的事,毕业后成为一名出色的软件工程师。我也想象过之后在该专业的学习过程中会遇到各种痛苦和挑战,后来果然如此,debug就是一个常见但也具有挑战性的环节。当遇到问题时,debug 的过程会带来一些痛苦,但成功解决问题后的喜悦和成就感也是难以言喻的,通过不断地解决遇到的问题,我的逻辑思维和解决问题的能力也得到了提升。

2.3当初希望自己是如何投入这个专业的学习的?曾经做过什么准备,或者立下过什么FLAG吗?

被软件工程专业录取后,我希望自己能全身心地投入学习,并取得优秀的成绩。为了准备这个专业的学习,我在b站上自学了翁凯的C语言教程,并在网友的推荐下,开始阅读《深入理解计算机系统(CSAPP)》这本书并结合相关lab进行更深的巩固,以此来快速入门和理解整个计算机系统。

因为我有想从事科研的想法,因此给自己定下了读研的目标。在得知学校有保研名额后,我立下了拿到保研名额、多参与学科竞赛和参加学校实验室的FLAG。

3. 立足当下

个人信息
学号222100409在这里插入图片描述
姓名任思泽
昵称rsz9
出生年月2004.05.05
爱好折腾电子产品、打游戏、敲代码
专业水平
编程语言C/C++,Java,C#,HTML,CSS、JavaScript,PHP
技术框架Yii2.0
开发软件Visual Studio Code,Visual Studio,Dev C++,IntelliJ IDEA
累计代码量40K
成果与获奖经历
2021-2022学年2021-2022学年第一学期一等奖学金、2021-2022学年第二学期一等奖学金
2022-2023学年2022-2023学年第一学期一等奖学金、2022-2023学年第二学期一等奖学金、SRTP科研训练项目一项
2023-2024学年世界大学生超级计算机竞赛(ASC24)二等奖、全国大学生数学建模竞赛省三等奖、全国大学生数学竞赛省三等奖
项目经历
学生信息管理系统(C语言)通过使用C语言,设计教师端和学生端,实现登录管理、对学生信息进行增删查改等功能,注重身份证验证和班级参数设定等检验。
消防救援系统(C++)利用C++和QT设计一个具有图形用户界面的应急救援力量调度程序,支持用户设定地图的大小和用户设定各项参数,即各个地点的个数、位置、各救援点的车辆数、各疏散点的人数等,所有车辆可同时实施救援。该程序以动画显示车辆调度方案,并统计出疏散完所有群众所用的时间。
DIY计算器(Java)使用Java GUI编程写一个计算器,具有较为美观的界面设计,实现了进行四则运算、清除、检错等功能。
炮打飞机游戏(C#)通过Winform进行页面设计,实现了飞机的飞行、炮弹的控制和碰撞效果的模拟,并加入了关卡的设计和通关的判定。
个人博客系统(Yii2.0)基于Yii2.0框架的Advanced模板进行个人博客的编写,在该模板的基础上,后端对文章管理等功能进行优化,优化为更符合用户使用的界面,同时添加了文章分类、附件管理、用户权限管理等功能,可进行增删改查等操作,整体上使用MVC模式对前后端功能进行数据交互以及管理。

4. 展望未来

4.1 阅读《构建之法》,并阅读构建之法社区中前人提出的问题,选择5个及以上的问题写下思考。

Q1:代码量与个人的编码能力有直接关系吗?

在我看来,编写更多的代码通常能够提升一个人的编码能力。通过多次解决类似问题,我们可以快速掌握解决方法,提高工作效率。然而,我们也不能一直局限于相似的问题领域。一旦我们对某个方面足够熟练,就应该尝试主动解决其他类型的问题。练习的过程需要逐步深入,编写更多代码只是提升编码能力的一个方面,不断学习和拓宽视野同样重要,这样我们才能在编码领域不断进步。

Q2:如何让自己能够跟上软件工程发展,做一个永不落伍的开发者呢?

我认为可以采取以下措施。首先,持续学习和自我提升是至关重要的。通过阅读技术书籍、参加培训课程和参与在线教育平台,增加自己的知识储备。其次,积极参与开发社区和技术圈子,参加技术会议、研讨会和社区活动,与同行交流和分享经验,了解最新的技术动态和方法工具。此外,要勇于实践,将学到的知识应用于实际项目中,尝试使用新的编程语言、框架或工具,参与新领域的项目,通过实践来巩固和提升自己的技能。最后,制定职业发展规划,明确长期目标和短期目标,定期评估自己的技能和知识,寻找提升的机会,并不断调整和完善职业规划。

Q3:低层次的问题能依赖工具解决么?

工具的高效性、准确性和时间节省确实是它们的优势,可以帮助工程师更好地完成工作和项目。工具的存在旨在提高生产效率和项目完成度,这是不可否认的。现如今,AI工具的智能化发展让它们不仅局限于解决低层次问题,甚至能够生成代码。这种方便和快捷的工具不仅提高了开发效率,也推动了行业的革新。对于经验丰富的工程师来说,他们可以利用工具来提升效率、减少错误并将时间用在更有意义的事情上。

然而,对于初学者和学生来说,低层次问题的重要性也不容忽视。拿我个人的经历来说,当我刚开始学习编程时,常常在一些基础问题上犯错,比如数组的创建、循环的编写等等。一开始我使用的是纯文本编辑器,需要自己手动编写所有代码。但后来,我开始使用像VS Code这样的集成开发环境,配合插件,我发现这些工具的功能确实非常强大。它们不仅提高了效率,还帮助我避免了许多小错误。然而,我也开始担心,这样是否会影响我今后理解底层的原理和机制?这种理解可能需要对底层的算法、数据结构、编程语言特性等有着深入的知识和经验,想要建造房屋,应当先打好地基,这种理解能够帮助我们在专业领域走得更远。在这种情况下,依赖工具可能会限制你对底层问题的理解,并且可能无法提供足够的灵活性和控制力。

我们应该适当利用工具的便利性,但也要重视细节和基础知识的掌握,以保持竞争力和适应行业的变化。

Q4:如何区分一个好的程序员和不好的程序员呢?

我本人对于一名“好”的程序员的理解,首先程序员应具备扎实的专业知识和编码能力,能够灵活运用知识解决问题,编写高效、可读性强的代码,并符合最佳实践。其次,程序员应具备良好的逻辑思维能力和独立解决问题的能力。能够精准理解需求,设计合理的解决方案,并有效地排查和修复错误。此外,程序员应具备较强的团队合作和沟通能力,能够与团队成员有效沟通和协作,理解自己在团队中的职责范围,并为整个团队目标贡献力量。最后,程序员应坚持持续学习和适应新技术,保持学习状态,关注行业趋势,不断提升自我,将新技术应用于实际问题,提高工作效率和质量。

Q5:对于一名工程师而言,究竟应该是更”专“一点好,还是更”广“一点好呢?

依我所见,对于担任核心技术角色的工程师而言,专一性更为重要。专注于特定领域能够使他们成为该领域的专家,具备深入理解和解决复杂问题的能力。这使得他们在竞争激烈的岗位上保持核心竞争力,并能够在项目推进过程中深入开展工作,积累更多经验并取得突破。相反,对于担任领导和协调角色的工程师而言,广泛性更重要。了解各个方面的知识和技能可以帮助他们更好地协调团队成员,合理分配工作内容,避免资源浪费,推动项目的顺利进行。广泛性的知识背景也使他们能够更好地与不同领域的人员进行沟通和协作。因此,在职业发展中,需要根据自身所处的工作位置和职业目标来平衡专一性和广泛性的发展。

4.2 未来的职业规划

现阶段,我希望先提升自己的Java语言水平,通过保研进入理想的研究生院校,专注于科研工作,目前比较感兴趣的研究方向是计算机系统,如高性能计算等。在研究生阶段,我将跟随导师学习,积累更多的项目经验和提升编程能力,并在该领域持续深入研究,争取取得一定的成果。待研究生毕业后,我计划根据个人情况决定是否继续攻读博士学位。若自己更适合从事科研,我将考虑攻读博士学位,进一步拓展我的学术能力和知识深度。如果在研究生阶段发现自己更适合进入工业界,我将寻找适合的工作岗位,进入公司上班,并继续发展我的职业生涯。

4.3 对于软件工程实践课程的理解和期望

理解:我认为软件工程实践是一门强调实际操作的科学课程,将使我们完整理解和参与软件项目的各个阶段,培养好软件工程的思维,为未来的工作打下坚实的基础。

期望:我期待通过这门课程的实践学习,能够提升自己的编码水平和逻辑思维能力,最终完成一个功能完善、高质量的软件产品。我也希望在课程学习中,能够遇到专业素质高、经验丰富的老师和助教提供指导和支持,解答我们在学习过程中的疑惑和困惑。

5. 思维导图和学习路线

5.1 思维导图

在这里插入图片描述

5.2 学习规划

在这里插入图片描述

  • 31
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
基于Tensorflow、OpenAI搭建的强化学习框架,训练机器自动操盘 强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一。它主要用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。强化学习的特点在于没有监督数据,只有奖励信号。 强化学习的常见模型是标准的马尔可夫决策过程(Markov Decision Process, MDP)。按给定条件,强化学习可分为基于模式的强化学习(model-based RL)和无模式强化学习(model-free RL),以及主动强化学习(active RL)和被动强化学习(passive RL)。强化学习的变体包括逆向强化学习、阶层强化学习和部分可观测系统的强化学习。求解强化学习问题所使用的算法可分为策略搜索算法和值函数(value function)算法两类。 强化学习理论受到行为主义心理学启发,侧重在线学习并试图在探索-利用(exploration-exploitation)间保持平衡。不同于监督学习和非监督学习,强化学习不要求预先给定任何数据,而是通过接收环境对动作的奖励(反馈)获得学习信息并更新模型参数。强化学习问题在信息论、博弈论、自动控制等领域有得到讨论,被用于解释有限理性条件下的平衡态、设计推荐系统和机器人交互系统。一些复杂的强化学习算法在一定程度上具备解决复杂问题的通用智能,可以在围棋和电子游戏中达到人类水平。 强化学习在工程领域的应用也相当广泛。例如,Facebook提出了开源强化学习平台Horizon,该平台利用强化学习来优化大规模生产系统。在医疗保健领域,RL系统能够为患者提供治疗策略,该系统能够利用以往的经验找到最优的策略,而无需生物系统的数学模型等先验信息,这使得基于RL的系统具有更广泛的适用性。 总的来说,强化学习是一种通过智能体与环境交互,以最大化累积奖励为目标的学习过程。它在许多领域都展现出了强大的应用潜力。
尝试用基于值函数逼近的强化学习方法玩经典的马里奥游戏,取得了一定成果 强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一。它主要用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。强化学习的特点在于没有监督数据,只有奖励信号。 强化学习的常见模型是标准的马尔可夫决策过程(Markov Decision Process, MDP)。按给定条件,强化学习可分为基于模式的强化学习(model-based RL)和无模式强化学习(model-free RL),以及主动强化学习(active RL)和被动强化学习(passive RL)。强化学习的变体包括逆向强化学习、阶层强化学习和部分可观测系统的强化学习。求解强化学习问题所使用的算法可分为策略搜索算法和值函数(value function)算法两类。 强化学习理论受到行为主义心理学启发,侧重在线学习并试图在探索-利用(exploration-exploitation)间保持平衡。不同于监督学习和非监督学习,强化学习不要求预先给定任何数据,而是通过接收环境对动作的奖励(反馈)获得学习信息并更新模型参数。强化学习问题在信息论、博弈论、自动控制等领域有得到讨论,被用于解释有限理性条件下的平衡态、设计推荐系统和机器人交互系统。一些复杂的强化学习算法在一定程度上具备解决复杂问题的通用智能,可以在围棋和电子游戏中达到人类水平。 强化学习在工程领域的应用也相当广泛。例如,Facebook提出了开源强化学习平台Horizon,该平台利用强化学习来优化大规模生产系统。在医疗保健领域,RL系统能够为患者提供治疗策略,该系统能够利用以往的经验找到最优的策略,而无需生物系统的数学模型等先验信息,这使得基于RL的系统具有更广泛的适用性。 总的来说,强化学习是一种通过智能体与环境交互,以最大化累积奖励为目标的学习过程。它在许多领域都展现出了强大的应用潜力。
GPT, 通常指的是“Generative Pre-trained Transformer”(生成式预训练转换器),是一个在自然语言处理(NLP)领域非常流行的深度学习模型架构。GPT模型由OpenAI公司开发,并在多个NLP任务上取得了显著的性能提升。 GPT模型的核心是一个多层Transformer解码器结构,它通过在海量的文本数据上进行预训练来学习语言的规律。这种预训练方式使得GPT模型能够捕捉到丰富的上下文信息,并生成流畅、自然的文本。 GPT模型的训练过程可以分为两个阶段: 预训练阶段:在这个阶段,模型会接触到大量的文本数据,并通过无监督学习的方式学习语言的结构和规律。具体来说,模型会尝试预测文本序列中的下一个词或短语,从而学习到语言的语法、语义和上下文信息。 微调阶段(也称为下游任务训练):在预训练完成后,模型会被应用到具体的NLP任务中,如文本分类、机器翻译、问答系统等。在这个阶段,模型会使用有标签的数据进行微调,以适应特定任务的需求。通过微调,模型能够学习到与任务相关的特定知识,并进一步提高在该任务上的性能。 GPT模型的优势在于其强大的生成能力和对上下文信息的捕捉能力。这使得GPT模型在自然语言生成、文本摘要、对话系统等领域具有广泛的应用前景。同时,GPT模型也面临一些挑战,如计算资源消耗大、训练时间长等问题。为了解决这些问题,研究人员不断提出新的优化方法和扩展模型架构,如GPT-2、GPT-3等,以进一步提高模型的性能和效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值