20,182,305 2019-2020-1 "Programming and Data Structures" Lessons Learned

20,182,305 2019-2020-1 "Programming and Data Structures" Lessons Learned

A weekly summary of the job link

I think the best written a blog is? why?

I think it's best to write a blog should be a summary of the blog, this blog because although there is no specific learning content, but this blog contains text I love this course and dismay. Each line of text will reveal my true feelings, memories of this semester is all content, summary, refining, sublimation.

MOST READ job of a blog is? Talk about the experience.

  • MOST READ job is a job preparation, blog submission is the first chapter. Can not say what experience it, because this is the first blog submission, we have fresh, we will look at each other. Amount of reading will naturally come up brush.

Link summary test report

Experiment one :

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

Experiment two :

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

Third experiment :

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

Experiment 4 :

(A) Java Socket Programming

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

(B) Java and cryptography

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

(C) preparation of rational / plural Calculator

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

(D) Remote rational calculator

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

(E) Remote plural Calculator

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

Experiment 5 Android programming :

1.Android Stuidio installation test:

  参考《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 test

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

3.UI test

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

4. Test layout:

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

5. Test Event Processing:

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

Six experimental linear chain structure :

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

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

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

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

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

其他任意发挥

暂无

码云项目链接:

Guess you like

Origin www.cnblogs.com/Java-cn/p/12011013.html