CS1120 Computer Science II (Spring 2017)

Class Information

Lab Sessions

Philosophy in Computer Science

Computer science has developed so fast in the past decades. New computing concepts and models such as Clouding Computing have been proposed. So, more and more people are afraid to study computer science since words such as "my knowledge will become obsolete pretty soon", "I am too old to learn a new concept" can always be heard. However, many people ignore an important Philosophical Principle in Computer Science: In Pursuit of Absolute Simplicity. This Philosophical Principle in computer science actually allows one to adapt to new computing concepts and models quickly and completely.


CS1110 - CS1110 - Computer Science I or equivalent with a grade of C or better (prerequisite); Math1220 or Math 2000 (CO-requisite).


This is the standard Computer Science II course using the Java computer language. The emphasis is on designing and programming object-oriented computer solutions to problems, as well as on the data structures used for this purpose. An introduction to the analysis of algorithms is made. Students must register for both a lecture section and a laboratory section. More importantly, to demonstrate the Philosophical Principle in Computer Science, we will use a simple example in our daily life and show how object oriented concepts can be simply and absolutely reduced to this example.


The objective of this course is to introduce the basic concepts behind modern programming languages. It includes how to :

  1. Learn about various concepts about software development.
  2. Understand the concept of recursion and structured programming.
  3. Understand the concepts of classes and object oriented programming.
  4. Understand the concepts of polymorphism.
  5. Learn exception handling.
  6. Learn common complex data structures.
  7. Learn about interfaces, generics and collections.
  8. Learn about searching and sorting, and learn basic mathematical techniques for analyzing their complexity.
  9. Learn working in a pair or team-programming environment.
  10. Learn and use version control and documentation tools.


When finishing this course, students should be able to:

  1. To write well-structured, well-documented Java programs that follow relevant phases of the software life cycle.
  2. To use recursive solutions for problems that are appropriate for the recursive strategy.
  3. To design, create and use class and object hierarchies.
  4. To use polymorphism (incl. abstract classes and methods).
  5. To design complex data structuresªincluding two-dimensional arrays, linked lists, stacks and queues.
  6. To use generics or collections to perform operations on complex data structures.
  7. To program various searching (linear, binary) and sorting (e.g., insertion, selection, bubble, merge, quick) algorithms, and be able to analyze their efficiencies.
  8. To work in a pair or team programming environment.
  9. To utilize version control and document generation systems.

Programming Assignment And Late Submission

Lab assignments will be given on a regularly scheduled basis. Many of these assignments will need to be worked on outside of the regular scheduled labs.

Each assignment will have a due date/time. For each day an assignment is late, 10% of the total possible points for the assignment will be deducted. (If any assignment is submitted 7 days after the deadline, it is NOT graded and you get ZERO point. The only exception is that you have some unexpected reasons with proof) Weekends and holidays are all counted when calculating lateness. No assignments may be submitted after 11:59 PM on the day preceding the last day of the classes (before the Final Exam Week). By this time all work should be complete and submitted.

Quiz and Exam

There will be several regular quizzes given in the lectures with prior notification. If you miss a quiz for any reason, you will receive a 0 on it. But, we will drop the lowest one at the end of the semester.

If you miss an exam (a Midterm Exam or the Final Exam), the decision as to whether or not it is made up and how it is made up will be made on an individual basis. To be excused there must be significant circumstances beyond the student¯s control. Generally this will require documentation, such as a doctor¯s note in the case of an illness. Normally, if your absence from an exam is excused, you will have to take a make up exam. Contact the instructor asking for a make up exam as soon as it is possible (if possible inform the instructor even before the exam that you will miss).

Programming Skills Mastery Test (PMT)

During the last lab session of the semester, students will be given the Programming Skills Mastery Test (PMT). The test will consist of a short programming problem. Students must program the solution in an essentially complete and correct form in the allotted time. This problem must be solved within the allotted time to earn a passing grade in the course. Students that fail the PMT on their first attempt will be given the second, and last, chance with a different problem. You must pass the PMT to pass the course.

Grading Policy

The final grade has the following composition:

Labs 40%
Midterm Exam I 15%
Midterm Exam II 15%
Quiz 10%
Final 20%

letter grade:

[100,90]: A

(90,85]: BA

(85,80]: B



(70,65]: CD

(65,60]: D

(60,0]: E

Useful Links

This class requires the following software systems or plugins:

  1. Eclipse Mars is installed in the Lab.
  2. WindowBuilder.
  3. EGit: 1

You can find more useful information about the class in the following:

  1. How to submit a programming assignment.
  2. How to include a jar file.
  3. How to import and export Java projects in Eclipse.


I collect the following questions I have received from the previous semesters. Hopefully, these questions help you finish this course with success.

  1. Q: Why does the course require the PMT exam at the end of the semester? Answer: The PMT exam ensures that you have the basic programming skill. However, the basic programming skill does not mean that you can receive C or better grade at the end of the semester.
  2. Q: If I receive A for each programming assignment, why I cannot get C or better at the end of the semester? Answer: First the programming assignment consists of 40% of your final grade. Second, while each programming assignment is designed to cover some important programming concepts, many programming concepts and skills cannot be well tested via programming assignments. For instance, the Java compiler can tell you many mistakes in your Java program. So questions in quizzes and exams help you understand why the Java compiler complains about the errors you get.
  3. Q: How can I survive from this course? Answer: In addition to finishing all programming assignments, you need to understand all basic Java programming concepts such as inheritance, polymorphism and subtype substitution as well as grasp some basic programming skills such as using the debugging feature in Eclipse. These basic programming concepts and skills will be tested in quizzes and exams. If you do well both in the programming assignments and quizzes and exams, you will definitely survive from this course. Good Luck and Let us row the boat together?

Daily Lecture Topics

Date  Schedule Reading  Exercise 
Jan 10






Jan 12 Review of CS 1110 notes

Here is the guidelines about the project name and package name used in Java programming.

You can save the project in a zip format. See "How to submit a programming assignment". Also, you can import the project in another eclipse environment according to "How to import and export Java projects in Eclipse".

Here is the Java project I used in my class.

PA1 out this week and due at in two weeks.

Jan 17 Recursion (chapter 15 of book [1])
Here is the code you need to do for the last class.  
Jan 19 Recursion (chapter 15 of book [1]) Here is the Recursion Examples I wrote during class.  

Jan 24

Recursion (chapter 15 of book [1]) Here is the Recursion Examples including the Hanoi tower problem. PA2 out this week and due at in one week
Jan 26 Object Oriented Programming via Design Patterns
Han 31 Class vs Object Inheritance Here is the example of computer and usbmemory.Read Chapter 6 and 9 in book[1]  
Feb 2 Subtype Substitution Principle   PA3 out.
Feb 7 Review of Midterm 1    
Feb 9 Midterm 1 Here is the revised version of computer and usbmemory showing the "first write first dominate" principle.  
Feb 14 Interface & Abstract Class read chapter 11 in book[1]  

Feb 16

Interface & Abstract Class Read Chapter 12 in book[1]. Here is the example I used during the class.


Feb 21 Binary Files and RandomFileAccess Here is the project you need to write.Read Chapter 11.3 in book[1]. PA4 out and due in a week.
Feb 23 Random File Access Exercise Here is the project you need to start with.Read Chapter 11.3 in book[1].Here is the project you need to finish.Read Chapter 11.3 in book[1]. Here is the Words.dat file.  
Feb 28 this and super in Java Here is the example I used for this/super in class.  
Mar 2 Exception Handling, & Stack and Queue    
Mar 14 Stack and Queue Here is the example I used for exeption.  
Mar 16 LinkedList Here is the example I used for stack/interface. LA6 out and due in a week.
Mar 21 LinkedList    
Mar 23 Exam 2    
Mar 28 Generics Search and Sort    
Mar 30 Search and Sort & Review of Midterm 2   LA7 out and due in a week.
Apr 4 Graphical User Interface (GUI) on the example Here is the example I use in the class. Here is the sample PMT problem.  
APR 6 More discussion Graphical User Interface (GUI)

Here is the PMT Practice Problem. Here is the program. Read [1] Chapter 17.1 and 17.2

APR 11 Collection Read [1] Chapter 17.1 and 17.2  
APR 13 Collection Chapter 19. Here is the comparison between Comparable and Comparator in Java. Here is the project using Collection Types in Java.  
APR 18 Collection Here is the example I show in the class.  
APR 20 Summary of Java Programming    


Regrading Policy

The regrade procedure is intended to correct serious errors in grading. It is not intended as a opportunity to argue about each judgment call made by the graders. If you feel that a regrade request is justified, you have 7 days AFTER a grade is released to request a regrade. After 7 days, no regrade request can be accepted. This policy aims to have you review each grade after the grade's release and not at the end of the semester.


Academic Integrity and Dishonesty

You are responsible for making yourself aware of and understanding the policies and procedures in the Undergraduate (pp.271-272) [Graduate (pp. 24-26)] Catalog that pertain to Academic Integrity. These policies include cheating, fabrication, falsification and forgery, multiple submission, plagiarism, dishonesty, you will be referred to the Office of Student Judicial Affairs. You will be given the opportunity to review the charge(s). If you believe you are not responsible, you will have the opportunity for a hearing. You should consult with the course coordinator if you are uncertain about an issue of academic honesty prior to the submission of an assignment, report or test. Students found responsible in academic dishonesty charges may automatically receive an "E" grade in the course in addition to other punishments allowed by the university rules, procedures and policies.