20182305 2019-2020-1《程序设计与数据结构》课程总结

20182305 2019-2020-1《程序设计与数据结构》课程总结

每周作业链接汇总

自认为写得最好一篇博客是?为什么?

我觉得写的最好的一篇博客应该是总结博客了,因为这篇博客虽然没有什么具体的学习内容,但是这博客的文字中包含了我对这门课的热爱和不舍。每一行文字都流露着我的真情实感、是对这学期所有内容的回忆、总结、提炼、升华。

作业中阅读量最高的一篇博客是?谈谈经验。

  • 作业中阅读量最高的是预备作业,也就是第一篇提交的博客。也不能说有什么经验吧,因为这是第一篇提交的博客,大家都有新鲜感,就会互相看看。阅读量自然而然就刷上来了。

实验报告链接汇总

实验一

  基于命令行和IDE [IntelljIDEA简易教程](http://www.cnblogs.com/rocedu/p/4421202.html)进行简单的Java程序编辑、编译、运行和调试。(本次实验主要使用命令行的方式)
  练习Linux基本命令;
  学习Java程序的JDB调试技能:https://www.cnblogs.com/rocedu/p/6371262.html
  编写简单的Java程序。

实验二

  编写简单的计算器,完成加减乘除模运算。
  从键盘输入两个数,使用判定语句选择一种操作,然后使用判定和循环语句选择继续计算还是退出。
  计算结果后输出.编写测试代码,测试验证。

实验三

  下载安装并使用IDEA,完成下面实验(https://www.cnblogs.com/rocedu/p/6371315.html)
  初步掌握单元测试和TDD
  理解并掌握面向对象三要素:封装、继承、多态(自己去学!)
  初步掌握UML建模。
  完成蓝墨云上 (1)-(5)实验。

实验四

(一)Java Socket编程

      1.学习蓝墨云上教材《Java和Android编程》“第16章 输入/输出 ”和“第22章 网络”,学习JavaSocket编程
  2.结对编程。结对伙伴A编写客户端SocketClient.java,结对伙伴B编写服务器端。
  3.截图加学号水印上传蓝墨云,代码push到码云,并撰写实验报告。

(二)Java和密码学

  参考 http://www.cnblogs.com/rocedu/p/6683948.html
  以结对的方式完成Java密码学相关内容的学习(帖子中所有代码和相关知识点需要学习)。提 交学习成果码云链接和代表性成果截图,要有学号水印。

(三)编写有理数/复数计算器

  结对编程,结对伙伴A编写有理数计算器。结对伙伴B编写复数计算器。截图加水印上传蓝墨云,代码push码云。

(四)远程有理数计算器

  结对编程,结对伙伴A编程实现客户端,结果伙伴B实现服务器端。
  客户端通过键盘输入一个有理数计算的公式(例如:1/4 + 1/6 = ),并把该公式以字符串的形式发送给伙伴B(服务器端),
  服务器端根据字符串计算出结果为5/12,并把结果返回给客户端A,A收到结果后输出结果。
  截图加水印上传蓝墨云,代码push码云。

(五)远程复数计算器

  结对编程,结对伙伴B编程实现客户端,结果伙伴A实现服务器端。
  客户端通过键盘输入一个有理数计算的公式(例如:1/4 + 1/6 = ),并把该公式以字符串的形式发送给伙伴A(服务器端),
  服务器端根据字符串计算出结果为5/12,并把结果返回给客户端B,B收到结果后输出结果。
  截图加水印上传蓝墨云,代码push码云。

实验五 Android程序设计

1.Android Stuidio的安装测试:

  参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十四章:
  参考http://www.cnblogs.com/rocedu/p/6371315.html#SECANDROID,安装 Android Stuidio
  完成Hello World, 要求修改res目录中的内容,Hello World后要显示自己的学号,自己学号前后一名同学的学号,提交代码运行截图和码云Git链接,截图没有学号要扣分
  学习Android Stuidio调试应用程序

2.Activity测试

  参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十五章:
  构建项目,运行教材相关代码
  创建 ThirdActivity,在ThirdActivity中显示自己的学号,修改代码让MainActivity启动ThirdActivity

3.UI测试

  参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十六章:
  构建项目,运行教材相关代码
  修改代码让Toast消息中显示自己的学号信息

4.布局测试:

  参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十七章:
  构建项目,运行教材相关代码
  修改布局让P290页的界面与教材不同

5.事件处理测试:

  参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十八章:
  构建项目,运行教材相关代码
  提交代码运行截图和码云Git链接,截图要有学号水印,否则会扣分

实验六 线性结构之链表

 1.链表练习,要求实现下列功能:

  通过键盘输入一些整数,建立一个链表;
  这些数是你学号中依次取出的两位数。再加上今天的时间。例如你的学号是20172301今天时间是 2018/10/1, 16:23:49秒
  数字就是20, 17,23,1,20,18,10,1,16,23,49打印所有链表元素,并输出元素的总数。
  在你的程序中,请用一个特殊变量名来纪录元素的总数,变量名就是你的名字。
  例如你叫 张三, 那么这个变量名就是int nZhangSan = 0; //初始化为0.
  做完这一步,把你的程序签入源代码控制(git push)。

 2.链表练习,要求实现下列功能:

  实现节点插入、删除、输出操作;
  继续你上一个程序, 扩展它的功能,每做完一个新功能,或者写了超过10行新代码,就签入代码,提交到源代码服务器;
  从磁盘读取一个文件, 这个文件有两个数字。
  从文件中读入数字1, 插入到链表第 5 位,并打印所有数字,和元素的总数。  保留这个链表,继续下面的操作。
  从文件中读入数字2, 插入到链表第 0 位,并打印所有数字,和元素的总数。 保留这个链表,并继续下面的操作。
  从链表中删除刚才的数字1. 并打印所有数字和元素的总数。

3.链表练习,要求实现下列功能:

  使用冒泡排序法或者选择排序法根据数值大小对链表进行排序;
  如果你学号是单数, 选择冒泡排序, 否则选择选择排序。
  在排序的每一个轮次中, 打印元素的总数,和目前链表的所有元素。
  在(2)得到的程序中继续扩展, 用同一个程序文件,写不同的函数来实现这个功能。 
  仍然用 nZhangSan (你的名字)来表示元素的总数。


4.在android上实现实验(1)和(2)

5.在android平台上实现实验(3)


实验七 查找与排序

1.定义一个Searching和Sorting类,并在类中实现linearSearch,SelectionSort方法,最后完成测试。
要求不少于10个测试用例,提交测试用例设计情况(正常,异常,边界,正序,逆序),用例数据中要包含自己学号的后四位
提交运行结果图。

2.重构你的代码
把Sorting.java Searching.java放入 cn.edu.besti.cs1823.(姓名首字母+四位学号) 包中(例如:cn.edu.besti.cs1823.G2301)
把测试代码放test包中
重新编译,运行代码,提交编译,运行的截图(IDEA,命令行两种)

3.参考http://www.cnblogs.com/maybe2030/p/4715035.html ,学习各种查找算法并在Searching中补充查找算法并测试
提交运行结果截图

4.补充实现课上讲过的排序方法:希尔排序,堆排序,二叉树排序等(至少3个)
测试实现的算法(正常,异常,边界)
提交运行结果截图(如果编写多个排序算法,即使其中三个排序程序有瑕疵,也可以酌情得满分)

5.编写Android程序对实现各种查找与排序算法进行测试
提交运行结果截图
推送代码到码云(选做,加分)


实验八 树

1.参考教材PP16.1,完成链树LinkedBinaryTree的实现(getRight,contains,toString,preorder,postorder)
  用JUnit或自己编写驱动类对自己实现的LinkedBinaryTree进行测试,提交测试代码运行截图,要全屏,包含自己的学号信息
  课下把代码推送到代码托管平台

2.基于LinkedBinaryTree,实现基于(中序,先序)序列构造唯一一棵二㕚树的功能,比如给 出中序HDIBEMJNAFCKGL和后序ABDHIEJMNCFGKL,构造出附图中的树
  用JUnit或自己编写驱动类对自己实现的功能进行测试,提交测试代码运行截图,要全屏,包含自己的学号信息
  课下把代码推送到代码托管平台

3.自己设计并实现一颗决策树
  提交测试代码运行截图,要全屏,包含自己的学号信息
  课下把代码推送到代码托管平台

4.输入中缀表达式,使用树将中缀表达式转换为后缀表达式,并输出后缀表达式和计算结果(如果没有用树,正常评分。如果用到了树,即使有小的问题,也酌情给满分)
  提交测试代码运行截图,要全屏,包含自己的学号信息


实验九 图

(1) 初始化:根据屏幕提示(例如:输入1为无向图,输入2为有向图)初始化无向图和有向图(可用邻接矩阵,也可用邻接表),图需要自己定义(顶点个数、边个数,建议先在草稿纸上画出图,然后再输入顶点和边数)(2分)

(2) 图的遍历:完成有向图和无向图的遍历(深度和广度优先遍历)(4分)

(3) 完成有向图的拓扑排序,并输出拓扑排序序列或者输出该图存在环(3分)

(4) 完成无向图的最小生成树(Prim算法或Kruscal算法均可),并输出(3分)

(5) 完成有向图的单源最短路径求解(迪杰斯特拉算法)(3分)


(按顺序)团队项目报告链接汇总

第一周:
第二周:

代码托管链接

  • 目标6k行,已经达到目标。

加点代码,改点代码是理解的最好方式,参考编程的智慧,谈谈你的心得:

程序设计和数据结构这门课程更像是一门实验课,只有看书是不可能学会学懂的,一定要用代码去实现它。在敲代码的过程中总结规律、改正错误,一点一点提升自己对这门课程学习到的知识体系的理解,进而获得更多的收获。

积极主动敲代码做到没?教材实践上有什么经验教训?

基本上做到了积极主动,虽然说更多时候是太多的作业和实验逼着我去积极主动敲代码!教材实践的经验不多,但是教训很多。教材年代久远,好多代码其实是不适用的,无法在现在的IDEA上运行,比如ArrayIterator类就无法运行,需要替换成ArrayList类。好多时候不如自己去理解书上知识然后自己去编写代码。

课堂项目实践

课堂实践对提高应用能力有帮助吗?

  • 有一说一,这个课堂实践啊……还挺牛!因为它及时检验了我们的课堂学习效果,并运用到实际中得到了更好的学习。

课堂实践上自己有什么经验教训?

  • 经验的话就是认真听多理解,多动脑去思考。教训就是。。。。别开小差,不然一下子就跟不上。

课堂实践上对老师有什么教学建议?

  • 求求宁少整点任务,太多了赶着上一下节课的我们也很不容易啊。

课程收获与不足

  • 这门课程收获很多,学到了Java语言的面向对象编程思想,学到了数据结构的知识,更重要的是收获了更高效的学习能力,缜密的逻辑思维,细致的思考能力,以及一定的自学能力。收获多多,感觉好好哟。不足之处在于,在基础理论占用了过多的时间导致实践时间不多,出现错误有时候只顾着解决,不去探究深层次的因素,学习不够深入。

自己的收获(投入,效率,效果等)

学习真是投入和汇报呈正比的工作,付出越多的时间和经历在上面,就能得到越多的回报。

自己需要改进的地方

我觉得需要改进的地方主要就是提高学习效率吧。毕竟时间都是有限的,学习效率越高,学到的东西就越多。

问卷调查

  • 你平均每周投入到本课程有效学习时间有多少?

         每周大概有20-30个小时,任务量大的时候会更多,反正这个学期就感觉一直在敲敲敲。
    
  • 每周的学习效率有提高吗?你是怎么衡量的?

           难以衡量,每周都有新的知识,几乎每周都是从零开始。
    
  • 蓝墨云班课的使用对你的学习有促进吗?有什么建议和意见吗?

       蓝墨云的运用还是挺好的,点个赞!
    
  • 你觉得这门课老师应该继续做哪一件事情?

     继续多多敲代码吧,敲代码确实很有效果,很直接很有用的提升实践能力。
    
  • 你觉得这门课老师应该停止做哪一件事情?

     减缓教学进度,别弄的大家理解一个知识点还没理解透彻,就又开始学新的知识,同时还有一大堆作业,有时候会适得其反导致学习效果下降。
    

其他任意发挥

暂无

码云项目链接:

posted @ 2019-12-27 22:21  20182305孙铭泽  阅读(423)  评论(0编辑  收藏  举报