NKUCS.ICU icon indicating copy to clipboard operation
NKUCS.ICU copied to clipboard

COSC0022 Java语言与应用

Open Emanual20 opened this issue 3 years ago • 10 comments

https://nkucs.icu/#/courses/grade-2/COSC0022

NKUCS,一个充满了「神仙」和「神仙」课程的专业,本网站旨在记录 NKUCS 的信息以及历届学生的评价

Emanual20 avatar Dec 02 '21 08:12 Emanual20

在前几年的时候是龙哥上的这个“Java 语言与应用”课程,不过据说后面几届换老师了,怀念龙哥hhh。

a-fake-admin avatar Dec 14 '21 08:12 a-fake-admin

上课时间:2020年秋

授课教师:刘嘉欣老师

课程感受:

刘爷的大招会在期中退课之后放出,不过上课还是很有料的,可以见到实验课他现场手写代码,也能学到一些经验性的东西。期末大作业看似是简单的五子棋,要是想好好写的话还是要用到一些多线程、应用层协议的设计的方法的。期末上机考试,1小时6道题,只要上机课听过,下来自己也写过一些java代码,运气好再没遇到太大的bug,写完是没有问题的。

ashun989 avatar Dec 22 '21 09:12 ashun989

@ashun989 上课时间:2020年秋

授课教师:刘嘉欣老师

课程感受:

刘爷的大招会在期中退课之后放出,不过上课还是很有料的,可以见到实验课他现场手写代码,也能学到一些经验性的东西。期末大作业看似是简单的五子棋,要是想好好写的话还是要用到一些多线程、应用层协议的设计的方法的。期末上机考试,1小时6道题,只要上机课听过,下来自己也写过一些java代码,运气好再没遇到太大的bug,写完是没有问题的。

想问一下上机题具体考些什么东西呀,你还记得吗

water-00 avatar Dec 23 '21 06:12 water-00

@water-00

@ashun989 上课时间:2020年秋

授课教师:刘嘉欣老师

课程感受:

刘爷的大招会在期中退课之后放出,不过上课还是很有料的,可以见到实验课他现场手写代码,也能学到一些经验性的东西。期末大作业看似是简单的五子棋,要是想好好写的话还是要用到一些多线程、应用层协议的设计的方法的。期末上机考试,1小时6道题,只要上机课听过,下来自己也写过一些java代码,运气好再没遇到太大的bug,写完是没有问题的。

想问一下上机题具体考些什么东西呀,你还记得吗

去年是,发了一个jdk1.5的文档,我只记得3道题的内容,一个是文件拷贝/读写,一个是多线程求素数,还有一个是给UML图,看你会不会使用快捷键快速生成getter和setter等(hhh)

ashun989 avatar Dec 23 '21 06:12 ashun989

20级,上课时间:21年秋。 相关情况:平时作业非常多。大作业是五子棋,要求8k字论文。大作业的答辩给分较为随意。整个课的任务量很大,会占用太多平时的时间。雷人发言包括但不限于:“每周(后来发展到每天)用20个小时写JAVA”“作业多和我有什么关系”“期末考试的难度是极难”。总之,慎选,雷课。建议选PYTHON,关于PYTHON的具体内容,可以看我在PYTHON中的介绍。

TephrocactusHC avatar Dec 24 '21 11:12 TephrocactusHC

建议不选,否则这可能是你大学拿的最痛苦的2.5学分。如果选了你将要在考试周这两周时间内面对写8000字格式正确的毕业论文这种毫无意义、浪费时间的事情,以及平时(尤其是在期末附近)特别多的作业。@TephrocactusHC 说的情况属实。 如果你不幸选了这门课,且不幸地没有在期中退课,那就看一看21年的上机考试题聊以慰藉吧(B卷):

  1. 输入一个字符串,统计其中的大写字母和小写字母个数并输出。
  2. 随机生成10个整数,把它们拼成一个字符串,并把这个字符串写入当前路径下的"IOTest.txt"中。
  3. 写一个Memo类,内有String变量,实现Out和In接口,完成读取输入字符串,保存到String变量中,并输出该字符串的功能。
  4. 初始money有20000元,启动第一个线程+8000,然后sleep(1000),启动第二个线程-10000,然后sleep(1000)(模拟每月的发工资8000和还房贷10000),钱不够还房贷了就结束程序。
  5. 给一个UML图,大概就是考察一下LinkedList的add、remove功能和快捷键创建setter、getter的方式。

总体来说还是很简单的,不用对上机考试过于担心。今年没有考swing和网络通信,不过考前老师在群里说有可能会考这两玩意儿,所以复习的时候也准备一下吧。

water-00 avatar Dec 28 '21 10:12 water-00

今天刚考完。。。 缺点:

  • 总的来说,这学期答辩的过程是比较痛苦的。老师有点子挑刺的意思了:人家说得少说是“对自己的项目不了解”,大讲代码的说是“缺什么就硬要表现什么”……
  • 八千字很鸡肋,费时间而且没用,而且本科生写的这个东西完全没有任何学术价值,我觉得就单纯是老师比较强调仪式感吧。 优点
  • 老师讲课讲得很不错,也很有激情,本学期是全程录屏,走神了可以听录屏也是一样的。
  • 最后上机考试其实不难,考前在群里说得比较含糊,都以为要考GUI之类的,但是难的都没考。 其他:
  • 会点名,实验课要签到。

smallHappyPerson avatar Dec 28 '21 14:12 smallHappyPerson

期末只有上机考试,一百分钟,分为AB卷,共有五道题。2021年A卷考题为:

  1. 创建一个数组,存100个10以内的随机整数,统计其中奇数和偶数的数目。你需要会创建数组,用包函数批量创建随机整数。
  2. 从控制台获取字符串放在指定文件。你需要会控制台IO和文件IO。
  3. 你有1000张票和两种买票方式,其线程名、方式名、每次买的票数不同,开两个线程,同时开始卖,卖一次睡一秒,余票不足为止。你需要会开线程和沉睡,输出要符合规范,可以把不同的地方直接在构造函数传进去。
  4. 创建两个接口,分别包含一个函数,创建一个类完善它们,用这两个操作“实现一个记事本”。说实话我到现在也没明白这题想干什么,希望有同学能帮忙补上。你需要会IO,StringBuffer和接口的最基本的一点概念。
  5. 创建一个手表类,有四个属性,就这四个属性完善它的getter, setter, equals, toString和hashcode。创建一个手表库类,维护一个LinkedList保存手表,实现添加、移除和按某一属性排序输出。你需要会用容器类,知道怎么用Eclipse自动生成那些函数。排序输出最好做成有序存储。多文件做成一个包。类的成员由UML图给出,你只需要知道+代表public,-代表private,#代表protected。 会给你一个文档,所以如果一些包里的东西比如输入输出流你只需要记得它长什么样子,具体的用法都可以去文档里查。

FaridatZiyu avatar Dec 29 '21 03:12 FaridatZiyu

2023Fall B卷

  • 基本题:创建一个浮点数数组,存储100个随机生成的0-1内的浮点数,计算总和并输出结果(保留小数点后4位)
  • 输入输出流问题:用输入流从电脑D盘的指定目录下读取文件,统计文件中的大写和小写字母的个数并输出
  • 多线程问题:小明手里有原始资金10000元,想要攒钱买100000元的车,创建两个线程:每月工资收入x元和每月正常支出y元,按月的顺序交替输出(Thread0和Thread1交替)小明每月收入后/支出后所剩的钱,直到他成功有钱买车
  • 派生类的问题:父类有三个:存钱类,取钱类,另一个忘了。需要构造的派生类是继承了上述三类的银行类,拥有对应的三种功能,测试输出基本的存取钱的过程就行
  • UML图:还是只需要看懂基本的+和-表示public和private就行,和2022Fall的题基本完全一样,会用快捷键生成各种需要的函数就行,考的存储结构依然是最简单的LinkedList。稍微需要注意的一点是,输出全部蔬菜信息的时候需要按照价格高低排序输出。

SailBro avatar Jan 20 '24 09:01 SailBro

@1973315112, 2023Fall:

总体评价:强烈建议不要选!!! 授课老师:刘嘉欣老师,王子纯老师。

给分:很好(本人 90+),但性价比非常非常低,作业实在太多了

分数构成:期末40+作业25+大作业30+出勤5

上课签到:理论课有抽签签到(每次3-5个)+实验课偶尔雨课堂签到(3次左右)

上课内容:两位老师都是男老师,刘老师看上去比较成熟。主要由刘老师进行授课,王老师实验课会进行一定辅助。在这门课上,在技术上你可以学会java的一些知识,包括但不限于基础语法,面向对象编程,MVC架构,图形化界面,多线程和网络编程,以及使用ChatGPT编写java程序的能力。如果你认真学习的话可以学习到计算机学科跨层次的方法。(难度很大,非常晦涩,计网实在太卷了,如果不选 yjf 的数据结构,不选汇编,不选数据可视化并且认真听课有可能做到)

作业: 比较小的作业有10次作业,内容很少,30min以内可以搞定(ChatGPT甚至可以1s解决) 比较大的作业有:文字版五子棋,文字版CD商店,图形化计算器,图形化画图软件(难度比较大,老师会给基础代码,需要补充剩余部分,在使用ChatGPT后每份需要10h+)(平时作业的分是拿不满的,王老师每次会扣0-5(标准未知)) 大作业:图形化五子棋(要求按照毕业设计的要求,完成五子棋还需要完成8000字的论文以及答辩,即使非常敷衍的完成代码,完成论文也需要大量时间,本人花费了100h+,以及太卷了,感觉所有人卷出了所有和五子棋相关的功能,完全做不到出彩)(偷窥得到一部分给分一般在20-25) 综上所述:作业量实在大的离谱,导致性价比极低,非常非常不建议选这门课

期末:每年差异不大,ICU里的题认真复习后做对4题+难度不大(裸考有一定难度) 2023Fall A卷:

  1. (15分)创建一个类MinMax,含大小为50的int型数组,初始化为100以内的随机数,编写函数minmax()输出最大值和最小值,在main函数里测试。(考察随机数和基本语法)

  2. (15分)在main函数读取指定.txt文件,统计文件元音字母(a,e,i,o,u)的个数并输出(考察文件输入输出流)

  3. (15分) 编写程序,实现图形面积计算功能: (1) 定义抽象类Shape,包含抽象方法:void printArea(),void printPerimeter (); (2) 定义Shape的派生类Circle,包含一个int型radius字段,用于描述圆形的半径长度;实现printArea和printPerimeter方法,计算并输出圆形的面积和周长(PI=3.14); (3) 定义Shape的派生类Square,包含一个int型sideLength字段,用于描述正方形边长;实现printArea和printPerimeter方法,计算并输出正方形的面积和周长; (4) 定义ShapeTest类,在main方法中使用多态的形式测试上述printArea方法。 (考察抽象类和继承)

  4. (15分) 编写类Petroleum Dealer,利用多线程模拟油厂生产与售卖。 (1) 定义油厂类Petroleum Dealer,初始化油库储存量为0升; (2) 线程0模拟进货工作,每天生产油2000升; (3) 线程1模拟售卖工作,每天售出油1000升。 (4)油库大小为10000升; (5) 编写程序,模拟油厂的经营活动,当油库为满时程序停止。输出格式要求: Thread-0: 第1天生产2000升,油库储量2000升。 Thread-1: 第1天售出1000升,油库储量1000升。 Thread-0: 第2天生产2000升,油库储量3000升。 ... Thread-0: 第n天生产2000升,油库储量11000升。 Thread-1: 第n天售出1000升,油库储量10000升。 油库已满! (考察多线程)

  5. (40分) 编写程序,模拟手机超市信息管理系统。 (1) (20分) 定义手机实体类 Phone,如UML图所示: ======================================== ! Phone | ======================================== |-id: int | |-name: String | |-type: String | |-price: float | ======================================== |+ Phone (int, String, String, float)| |+getId(): int | |+setId(int): void | |+getName(): String | |+setName(String): void | |+getType(): String | |+setType(String): void | |+getPrice(): float | |+setPrice(float): void | |+equals(Object): boolean | |+hashCode(): int | |+toString(): String | ========================================

(2) (20分) 定义市场类Market,如UML图所示:

| Market |

|-id: int | |-name: String | |- PhoneList: LinkedList(Phone) | |- PhoneCount: int |

|+Market(int, String) | |+getId(): int | |+setId(int): void | |+getName(): String | |+setName(String): void | |+getPhone List(): LinkedList< Phone> |+getPhone Count(): int | |+addPhone (Phone): void | |+deletePhone (Phone): void | |+showInfo(): void |

该类的属性和主要方法说明: · 属性PhoneList为LinkedList类对象,用于多种品类手机组成的列表。 · 方法getPhoneList用于查询手机列表。 · 方法getPhoneCount用于查询手机品类总数。 · 方法addPhone用于添加新品种的手机类型对象至列表。 · 方法deletePhone用于从手机列表中删除某类型的手机。 · 方法showInfo用于输出手机列表中的全部手机信息,要求按照price从大到小输出。 请在Market类中编写main方法,测试addPhone、deletePhone、getPhoneCount、showInfo方法的运行效果。 (考察快捷键生成get和set,以及链表排序)

1973315112 avatar Jan 26 '24 11:01 1973315112