Object Oriented Programming in Java

Welcome Aboard

Welcome to the online modules used in the Object Oriented Programming for Information Technology offering taught in the BS in Information Technology Program from the Department of Computer Science & Engineering at the University of South Florida.

This course is intended for students who already took an introductory programming course such as the pre-requisite COP2512 Programming Fundamentals for Information Technology. It is therefore assumed that you already known how to program in a given programming language, preferably Java, and that you are therefore ready to dig deeper into Object Oriented Programming techniques.

If you need to check the material covered in COP2512 to ensure you are ready for this course, you may find it available freely online at http://cereal.forest.usf.edu/edu/COP2512/.

  • Video - Welcome Aboard
  • Video Link: YouTube
  • This video will help you get your bearings in this online course. We will review the organization of both the course' Canvas site and this website. If you have any questions, please post on the "support forum" available in Canvas. As is usual for longer videos, here are links to the main parts;

What Topics are we going to Study?

The course is structured in three parts. Later parts are dependent on the material studied in the previous ones so do not skip things you do not understand but seek help early instead.

Part #1 - OOP Fundamentals
This part will introduce the primary object oriented techniques and their usage in Java.
  • Objects & Classes
  • Object Oriented Thinking
  • Inheritance & Polymorphism
  • Exceptions & Text I/O
  • Abstract Classes
Part #2 - Applications
Once done with the fundamental techniques, we are going to spend a few sessions applying this newly acquired knowledge. To this end, we will develop JavaFX applications since this framework illustrates nicely OOP techniques and their usage in realistic projects
  • JavaFX Basics
  • Event-Driven Programming
  • User Interface Controls
Part #3 - Java Collections
We will then conclude by investigating the tools available in Java to handle higher-level data structures.
  • Generics
  • Lists, Stacks & Queue
  • Sets & Maps
  • Implementing Lists

How will you learn and study in this course?

Now that you have an idea of what skills and topics we are going to study, let us discuss briefly about how we will do so. In each module, we are going to use the same set of learning activities;

Lecture Videos and Reading Assignments

These are where the learning will start but they most likely won’t teach you how to program. They will instead prepare you to learn that skill and teach you about programming. This is necessary but not sufficient to succeed in this offering.

The module forum is where you will be able to ask for help in studying this material. You will then be able to assess your understanding of this material via the Practice Quiz - PQ - available in each module. You will then get an evaluation of your understanding when you take the Graded Quizz - GQ - also available in every module.

Weekly Modules’ Forums

As an online learner, it is your responsibility to reach out and communicate with others. It is easy to just passively read the material but that will not provide the kind of learning you need to be ready for the exams. No one ever got a degree by watching the discovery channel, ever wondered why?

Make sure you use the forums to ask questions about anything you need help with in the study material;

  • If even slightly unsure that you understood something, post to explain what you think you understood and get the instructor to confirm.
  • If you see questions from other students, chime in! Explain what you think the response ought to be; the instructor will correct you if you are wrong or confirm that you are right. Everyone, almost, think they understand something until they have to apply it or explain it.
  • ...

Homework

Learning about programming via lectures is the first step. Learning by watching someone else program is also useful. However, ultimately, you will never be able to program if you do not spend a lot of time programming every week in this offering.

To help us with this need for regular practice, we will use some of the textbook's exercises. With every module, you will have a small selection of exercises that you will have to implement. At the end of the module, the TA will announce a random exercise that you will be able to upload for credit. You must complete all exercises before this announcement as you will not have enough time otherwise to just work on the one that has been selected for grading. Yes, the intent is for you to work on all exercise so as to prepare for the exams.

Please note that there will be no solutions provided for these exercises. However, the instructor and the TA are there to help you reach your own solutions to these by helping you identify things you misunderstood and provide explanations about the part of the study material that is related.

To benefit from this help, work early and often during the week on your homework. Attend office hours and TA online sessions.

For whom is this material suitable?

The material on this website has been used for an undergraduate, semester-long, second programming course at the University of South Florida. It is suitable to support either a face-to-face flipped classroom setting, or an online offering - whether it is synchronous or asynchronous.

While the material is also suitable for independent learners who want to use this website for self-study, it is worth mentioning that the learning activities were designed to be used with an instructor. Therefore, you will find that many practice activities are meant for students to ask questions to their instructor instead of simply working on them in isolation. If you are browsing this material without such support you might find it benefitial to work with others in order to make the best out of our practice assignments or discussion activities.

Enjoy your learning!

The complete syllabus for this course will be made available by your instructor the first day of classes on the Learning Management System used by your University; i.e. Canvas for USF. You are expected to read thoroughly the entire syllabus as soon as the course starts and post questions on the "support forums" so as to ensure you understand it. The following information is just provided to you in this format so that you may refer to it more easily.

You will find below a copy of the syllabus. An updated version of the syllabus will be made available by your instructor the first day of classes on the Learning Management System used by your University; i.e. Canvas for USF.

Textbook

The videos provided on this site are meant to supplement the following textbook;

Introduction to Java Programming, Comprehensive Version, 10E. Daniel Liang.

Please note that you do not need to subscribe to any online services associated with the textbook. We will be using freely available practice software that has been developed and used nation wide by the computing education research community instead.

Minimal Technological Requirements

During the first week, you will have to install software in order to be ready to start working and writing program as soon as our first module is released.

In order to be able to work in this offering, students are expected to have;

  • Access to a Windows 8 machine
  • Fast & reliable internet connection
  • The ability to install and test, by the first week deadline, all the software that will be used in this course
  • A microphone and webcam to engage in online live meeting as necessary

If you have technical problems, post on the "Support Forum". While we can not guarantee that we will have the resources to troubleshoot every single student's personal systems, we will certainly try to give you a hand.

If you feel that you need more experience with computers before to learn how to program them, talk to your academic advisor about taking a 1000 or 2000 level course on computer technology.

Please note that, since incompatibilities between the required software & your personal systems, or individual technical issues, will not constitute acceptable excuses during the semester. Therefore, you are required to ensure that all necessary software works on your system before the first week's deadline. If your system is not operational by this deadline, we recommend you drop and retake the offering when ready.

This page will detail what you have to do during the first week of class in order to be marked as "present" for purposes of first day attendance policy.

The following subsections will detail the various tasks you have to completed by the first week deadline that will be posted by your instructor as the course starts

Task 1 - Make sure you have a compatible web browser

When taking exams or quizzes in Canvas, especially the ones proctored online by Proctorio, you will need to use exclusively Google Chrome.

Task 2 - Troubleshoot Blackboard Collaborate

Use the "Blackboard Collaborate" link in the course page on the Learning Management System. Enter the "Students Virtual Lounge" virtual room and make sure that both your microphone and webcam are working properly.

If you need assistance, contact help@usf.edu immediately.

Task 3 - Install & Test Java

The first step is to make sure you remove older versions of Java from your system.

  • Remove previous versions of Java
  • URL Link: http://java.com/en/download/faq/remove_olderversions.xml
  • The above link is a tool from Java.com which will allow you to remove old versions of Java you might have already installed. Sometimes, having several JRE & JDK installed on a system leads to conflicts; e.g. is your browser using a Java 7 or Java 8 plugin?

The next step is to install the Java Software Development Kit, or JDK, on your machine.

Task 4 - Install & Test JGrasp

Next, we will need a tool to write, run and debug our programs. When working with Java, we will use a development environment which has been designed to support learning & teaching programming; JGrasp.

  • Download & Install the latest JGrasp
  • URL Link: http://www.jgrasp.org/
  • Download & run the Windows installer from the above website

We are now ready to test both our installation of the Java JDK & of JGrasp.

  • Test Java & JGrasp
  • File Link: YouTube

Task 5 - Take the First Week Quiz

Before the deadline posted by your instructor, you will have to;

  • Complete the First Week Quiz on the Learning Management System
  • Ensure that you obtained 100% of the available points
This quiz is not like the other we will use in this course;
  • It does not count toward your course letter grade
  • It does not have a time limit
  • You are allowed to take it multiple times until you get it 100% right

From the above you can probably tell that the point is not to test you but rather to provide you with a sort of "checklist", a way for you to confirm that you have done what is expected of you during the first week.

Failure to complete the quiz and obtain maximal score by the first week deadline will result in you being marked as "absent" for the purpose of USF first day attendance policy, and therefore dropped from the course.

Task 6 - Take the Pre-Requisites Self Assesment Quiz

In order to help you assess if you are actually ready to take this course, you will then take an auto-graded quiz that is based on the material taught in COP 2512. While the score you will obtain on this quiz will not count toward your final grade in this course, you must contact the instructor immediately if you achieve a low grade (80 percent or below of the maximal score) as it strongly suggests that you should drop this course, review the material of its pre-requisite, and re-enroll only when you are ready to perform well.

This page is not mandatory reading but is instead meant to provide some additional information for those of you who are curious about how this course was developed, the reasons behind the structure we will be working with, or simply who their instructor is.

Instructor Information

Dr. Alessio Gaspar is an Associate Professor with the University of South Florida’s Department of Computer Science & Engineering, director of the USF Computing Education Research & Adult Learning group, and coordinator for the USF BSIT Linux Technologies specialization tracks.

He received his Ph.D. in computer science in 2000 from the University of Nice Sophia-Antipolis (France). Before joining USF, he worked as visiting professor at the ESSI polytechnic and EIVL engineering schools (France), then as postdoctoral researcher at the University of Fribourg’s Computer Science department (Switzerland).

Dr. Gaspar is an ACM SIGCSE, SIGITE and SIGEVO member and regularly serves as reviewer for international journals & conferences and as panelist for various NSF programs.

His research interests include Evolutionary Algorithms and Computing Education Research, with applications to Intelligent Tutoring Systems / Computer Assisted Learning. His teaching interests include System Administration with Linux, Programming, Web App Development in JavaScript and open source in general. For more information feel free to visit his webpage or email him directly at alessio@usf.edu.

Development History

This material has been developed and taught to both USF Information Technology & Computer Science students at the University of South Florida by Alessio Gaspar. This is the first version of this course.

This online asynchronouse version was certified in 2018 by the USF Innovative Education team as "meeting all minimal and exceptional standards" of their Quality Matters (tm) based online course evaluation process.