学号 2017-2018-2《程序设计与数据结构》课程总结
每周作业链接汇总
预备作业01:对大一上学期进行总结:包括本学期的收获(课内+课外)、本学期存在的问题及反思,对本专业的认识和期望,对师生关系的期望。
预备作业02:体会做中学(Learning By Doing)谈谈你自己的技能以及学习经验,确定对《程序设计与数据结构》的具体目标,以做中学的方式去实现目标。
预备作业03:课程基础,给自己笔记本虚拟机上安装Linux操作系统,学习Linux命令。
第一周作业:了解了计算机的基本构成,Java的格式及其意义,vim的使用方式和Linux的一些常用命令,蓝墨云班课的使用,码云的使用以及Markdown语法。对课本第一章的学习。
第二周作业:对课本第二章的学习,习了字符串还有变量常量,数据的类型,还有运算符,还有Scanner类的使用
第三周作业:对课本第三章的学习,学习了创建对象,String类,Random类,Math类等基础的类型。还有Numberformat、DecimalFormat类等
第四周作业:对课本第四章和第七章的学习,学习了类的定义和概念,了解如何编写类的相关内容,简单了解了UML类图。还有静态变量和静态方法。以及接口等。
第五周作业:对课本第五章的学习,学习了一些判断和循环语句的一些基本的类型和使用方法。例如:if、while、switch、do等。
第六周作业:对课本第八章的学习,学习了数组的内容。如何创建数组、数组的一些基本形态还有使用的方法、对象数组,还有二维数组等。
第七周作业:对课本第九章的学习,学习了继承,protected修饰符、super的引用,多继承,影子变量,还有抽象类和接口的联系等。
第八周作业:对课本第十章的学习,学习了多态性的内容,还有排序(选择法排序和插入法排序),还有搜索(线性搜索和二分搜索)。
第九周作业:对课本第十一章的学习,学习了try—catch、finally、还有I/O异常,递归,递归和迭代的区别。
第十周作业:对课本第十三章的学习,学习了集合的概念、集合与数据结构、集合的同构与异构,Java的集合类API。
第十一周作业:学习《Java和Android开发学习指南》第23-26章。Android初识、Android简介,对于Android的简单的应用,活动,插件(气泡)。
The best and the most
-
自认为写得最好一篇博客是?为什么?
第七周博客,因为从那篇博客开始,我开始使用markdown的各种插件,让博客变得更加多彩。而且那次的博客我对知识点的总结比以往的更全面。
-
作业中阅读量最高的一篇博客是?谈谈经验
说实话,这个问题让人很纠结,因为我博客被阅读量最大的那篇十预备作业01,这就让我没法总结啊,所以,除了那篇,我就说我的第六周博客吧,总体来看,大家的第六周博客都访问量比较高,根据我分析,因为那一周的数组学习比较难,所以大家在学习过程中遇到的问题比较多,在写博客时,都希望从别人的博客中找到一些相同或类似的问题,从而成为自己的突破口。说说我的博客吧,我想我的并没有亮点,但我将一些常见的概念进行总结和对比,所以会对其他人有所帮助的。
实验报告链接汇总
实验一 实验名称:学习Java的开发环境和安装IDEA
简要内容:安装调试IDEA,JDK
运用IDEA编写程序 (pp2.5,pp3.3,pp3.5,pp3.8)
实验二 实验名称:面向对象的程序设计
简要内容:
1.初步掌握单元测试和TDD
2.理解并掌握面向对象三要素:封装、继承、多态
3.初步掌握UML建模
4.熟悉S.O.L.I.D原则
实验三 实验名称:敏捷开发与XP实践
简要内容:安装alibaba 插件,解决代码中的规范问题。完成重构内容的练习
实验四 实验名称:Android程序设计
简要内容:Android Stuidio的安装测试,Activity测试,UI测试,布局测试,事件处理测试。
实验五 实验名称:网络编程与安全
简要内容:基于Java Socket实现客户端/服务器功能,传输方式用TCP,用3DES或AES算法加密,用DH算法进行3DES或AES算法的密钥交换,计算明文的MD5值,和客户端传来的MD5进行比较。
团队项目报告链接汇总
四则运算
第一周:简要内容:思路的构造,uml类图的制作,部分代码的实现
第二周:简要内容: 继续进行四则运算,已经到了最难的地方。
第三周: 简要内容:修正与调整,最后的项目总结
代码托管链接:
20172327马瑞蕃
statistic.sh的运行结果
说明本学期的代码量目标达到没有
达到了,看到自己这个学期的任务圆满的完成了,我还是蛮开心的,我打字速度并不快,敲代码也没有别人那么细心,经常因为敲错字母而重复查验,所以,我最后能完成代码量,当然很开心。有些人认为敲书上的代码很无聊,没意义。其实并不是这样,在动手去输入的同时,你自然可以了解代码的构造和原理,这对代码的理解有很多好处。
加点代码,改点代码是理解的最好方式,参考编程的智慧,谈谈你的心得。
对于《编程的智慧》这篇文章,我读过之后有很多新的认识,这篇文章主要说的是编程过程中的很多重构优化的建议。对于一个对编程入门不久的新人来说,编程学习和代码的实现其实有时就会做的很麻烦,所以就需要更好的指导和更好的思维方式从而使你所实现的代码优雅可读好用。
文章提到了反复的推敲代码,其实任何东西都应该有艺术性,当你的代码通过不断的推敲感悟,如同画家对于画作的不断修改,才能将最美的一面展现给大家。优雅的代码在我看来,就应该整整齐齐的放在一个一个的盒子中,而完美的逻辑就应该像树状结构,将每个盒子串起来。
对于代码的可读性,真正优雅可读的代码,是几乎不需要注释的。如果我们充分利用了程序语言的表达能力,你完全可以用程序本身来表达它到底在干什么,而不需要自然语言的辅助。有少数的时候,你也许会为了绕过其他一些代码的设计问题,采用一些违反直觉的作法。这时候你可以使用很短注释。这可能对于现在的我们来说有点困难,但是我想,你在你代码中使用有意义的函数和变量名字,局部变量名字应该简短,简短的配合上下文,就可以简洁明了的表达代码逻辑了。
这篇文章其实是非常实用的,对于以后的学习和交流,都有很多帮助。
积极主动敲代码做到没?教材实践上有什么经验教训?
对于书本的例题我是有主动去敲代码的,以前用虚拟机,敲一个例题就要改好久,可能是我太粗心,经常打错,后来用idea,就好多了,自己会报错,这就很让人开心。教材中的实践有很多,其实我并没有像有些人那样把所有的实践都敲了,这可能和我懒惰的习惯有关,其实我做过的实践都对我的后来的项目编程有帮助的,有时哪个语法忘了我都可以想起来在哪个实践上用过,然后随便一查就出来了。
课堂项目实践
实践一 实验名称:无名
实践内容:
- 生成[-10,10)之间的随机数PseudoNumber,并输出PseudoNumber;
- 输出PseudoNumber的二进制、十六进制形式;
color="#0000dd">实践二 实验名称:无名
实践内容:
- 编写一个Book类,其实例数据分别表示书名、作者、出版社以及版权日期。
- 定义一个Book构造方法,接收并初始化实例数据;为所有实例数据定义获取和设置他们的方法
- 定义一个toString方法,返回几行描述该图书的字符串。
- 创建一个Bookshelf驱动类,其main方法实例化并输出一些Book对象。
实践三 实验名称:编译运行PP7.4
实践内容:
- 编译并运行PP7.4,提交源代码截图和运行截图。
- 将代码托管到码云。
实践四 实验名称:计算n!
实践内容:
- 使用for循环计算n的阶乘,并截图上传。
- 使用while循环计算n的阶乘,并截图上传。
实践五 实验名称:命令行参数测试
实践内容:
- 从命令行传入学号、课程的成绩,计算平均成绩,并输出
例如:输入 java computeAverage 20172301 98 99 100
输出:2017 2301' average score is :99 - 使用边长参数列表实现。
实践六 实验名称:继承练习
实践内容:
- 已知抽象类Animal
public class Animal { private String name; private int id; public Animal(String name, int id)
{ this.name = name; this.id = id; } public abstract void eat(); public abstract void sleep(); public abstract void introduction() ; } - 定义Cow类和Sheep类,继承Animal类,并测试
实践七 实验名称:排序
实践内容:
- 使用选择和插入排序法,写出第3次排序的结果:3 1 9 3 6 2 10
实践八 实验名称:IO操作及异常处理
实践内容:
- 从键盘可以输入任意个整数(int);
- 写入文件;
- 从文件读取所有的整数;
- 使用插入排序对读取的整数进行排序,并将排序的结果写入原文件。
- 使用try-catch语句处理IO异常,例如文件创建异常
实践九 实验名称:递归
实践内容:
- 使用递归实现;
- 输入一个数n;
- 使用递归计算F(n)的值;
- 写入文件中。
实践十 实验名称:链表插入和删除
实践内容:
- 完成P397页例题中的节点删除和插入操作,并测试(满分3分,插入删除各1分,测试1分)。
public void insert(int index, Magazine newMagazine){}//在index的位置插入新节点newMagazine
public void delete(Magazine delNode){}//删除节点delNode - 完成插入、删除功能
- 加分项:用Magazine类实现Comparable接口,并对链表中的杂志按照字母顺序排序,并输出。
实践十一 实验名称:数据库操作实践
实践内容:
- 下载附件中的world.sql.zip, 参考http://www.cnblogs.com/rocedu/p/6371315.html#SECDB,导入world.sql
- 编写程序,查询世界上超过“你学号前边七位并把最后一位加到最高位,最高位为0时置1”(比如学号20165201,超过3016520;学号20165208,超过1016520)的 所有城市列表,运行并截图上传(Java代码截图、运行结果)。SQL语句:SELECT * FROM city WHERE city.Population>5000000
- 编写程序,查询哪个国家的平均寿命最长,哪个国家的平均寿命最短,并截图上传(Java代码截图、运行结果)。
- SQL语句:SELECT * FROM country WHERE country.LifeExpectancy=(SELECT MAX(country.LifeExpectancy)FROM country)
- SQL语句:SELECT * FROM country WHERE country.LifeExpectancy=(SELECT MIN(country.LifeExpectancy)FROM country)
- 编写程序,查询世界上的所有中东国家的总人口SQL语句:SELECT SUM(Population) FROM country WHERE country.Region="Middle East"
实践十二 实验名称:Android课堂实践
实践内容:
- 在Android平台上开发移动程序,模拟栈的操作:Push、Pop。
实践十三 实验名称:Android中缀转后缀
实践内容:
- 开发一个Android应用程序,要求:输入一个中缀表达式,输出后缀表达式。
实践十四 实验名称:Android表达式计算
实践内容:
- 开发一个android应用程序,完成以下功能:
- 随机生成一个中缀表达式,并使用控件显示。
- 将该表达式转换为后缀表达式,并使用控件显示。
- 计算后缀表达式的值,并使用控件显示。
- 显示每一步操作数栈和操作符栈的变化过程。
实践十五 实验名称:Socket编程
实践内容:
- 伙伴1编写服务器端程序,接收客户端发送的数据(形式如下:12 15 8 100 25 34 19),将其排序后,发回给客户端。
- 伙伴2编写客户端程序,将一串字符串(形式如下:12 15 8 100 25 34 19)发送给服务器端,接收排序后的程序,并显示。
课堂实践对提高应用能力有帮助吗?
当然有帮助啊,课堂实践在有限的时间内,让我们就近运用课堂所学的知识,独立去解决问题,不仅复习了所学的知识,而且锻炼了我们的逻辑思维能力和动手操作能力,虽然我们的代码称不上优美,但我们的代码质量再每次实践过后都有提升。 |
课堂实践上自己有什么经验教训?
首先,上课要认真听讲,课堂实践都与这节课上所讲的关系密切,而且,要对以前的知识不断复习,指不定那次课堂实践就给你出上了,到时候用书和笔记去查,显然来不及。 |
课堂实践上对老师有什么教学建议?
课堂实践嘛,你的实践基本上都是把代码上课讲时都打到了屏幕上,以致于很多学生只要拍下一些照片就做出来了,所以以后要我建议给学生留更大的空间去思索,时间也可以适当的延长。 |
课程收获与不足(不要抄上学期的,否则会扣分)
自己的收获(投入,效率,效果等)
+ 经过一个学期对的学习,收获肯定有很多啦,Java的初步认识,Android的初步了解。这个学期,我认为我们全班包括我对于Java学习的投入是非常多的,我感觉前半学期的热情,都有点吓人,每个,每天自习都是抱着Java书,而且好多人每天回寝室都超过了11点。我感觉我和他们一样,有一次居然留到912学到3点,也不知当时哪来的那个想法,或许是那周要弄的东西真的太多了。我感觉我对于这门课的确投入了很多,但效率其实真的不尽如人意,我反正是这样认为的,或许对其不敏感,也或许对其真的不感兴趣。由于这门课的计分方式不同其他科目,是累计分制,因此,我需要做好每一次作业,每一次实验才能取得高分,但是同学们都很努力,每次“千帆竞发图”发出来时,我就会发现每个人都在进步,而且每次累加的分都比我的多,这样让人追赶起来真的很难。这是大学接触的第一门语言,也是我第一次接触的程序语言,所以对于我这个菜鸟来说,要学的东西还很多,我依然要投入更多到这门语言上。 |
自己需要改进的地方
不足有很好更多,知识的不扎实,以致于有些代码里的某些部分我不知道是干嘛用的,项目做的少,对于知识没法巩固和复习,而且经常将以前所学的东西忘了,就像虚拟机用的少了,我连Linux命令都忘了。每次考试,那些英语题目,其实对我一个英语并不好的人来说,蛮吃力的,所以我会再假期尽可能多的记住一些常用计算机词汇,对下学期的学习有帮助。 |
结对学习是不是真正贯彻了?写一下你提供的帮助或接受了什么帮助,并对老师提供参考建议
结对学习是个好东西,但我其实并没有怎么参加结对学习,小组我感觉并没有建好,也没用真正的分配工作和完成项目,看着别的小组都弄得很有成就,我感觉很遗憾。小组中蒋子行同学能力真的很强,但我想他可能不愿意同别人沟通,所以我和李闻洲同学并没有和他配合的很好,我们其实都有责任。 |
问卷调查
你平均每周投入到本课程有效学习时间有多少?
每天平均应该有3个小时时间在学习Java,所以一周大概20个小时左右,有时一周项目难一点,章节多一点或许可以达到30个小时。 |
每周的学习效率有提高吗?你是怎么衡量的?
每周的任务不同,难度不同,所以学习效率真的感觉没法评定。 |
蓝墨云班课的使用对你的学习有促进吗?有什么建议和意见吗?
有的,资料很多,有些还是有用的,而且通过其布置作业,提交作业都很方便,手机端,pc端都挺好用的。 |
你觉得这门课老师应该继续做哪一件事情?
对关键代码的解释,对每个人不同问题提供帮助。 |
你觉得这门课老师应该停止做哪一件事情?
没啥需要停止,都挺好的。 |
你觉得这门课老师应该开始做什么新的事情?
上课能够讲再细致一点,因为有时候没有完全听懂。 多开导我们的思维方式。 |
总结中涉及到的!
链接的二维码