Course Description
This course covers a broad range of topics in Object Oriented Programming through Java. This course teaches the fundamentals of Object Oriented design and development. This course also covers a few key tools and techniques necessary to build a complete and robust web application in Java using the Eclipse IDE.
What am I going to get from this course?
At the end of this course students will have the knowledge necessary to engineer and build a software application.
They will have a solid understanding of Objected Oriented Programming which can be applied to any OO language.
They will know how to use the Eclipse Integrated Development Environment (IDE).
They will be able to build a Java application.
They will be able to build a Java web application with the MVC framework Java Server Faces (JSF).
They will know how to access local and cloud based resources through a Java application.
Prerequisites and Target Audience
What will students need to know or do before starting this course?
It would be a good idea if you have at least some basic programming knowledge but is not required. Even with no prior programming experience the lectures are tutorials on java and object oriented application development so anyone will be able to pick it up.
Who should take this course? Who should not?
Anyone who wants to learn Java or about Object Oriented programming should take this course. If you have some experience programming in other languages this course will teach you what you need to know about Java development. If you want to learn Object Oriented programming this course will teach you core concepts in OO development.
Curriculum
Module 1: What is Object Oriented Programming
This lecture introduces the course.
Lecture 2
Course Resources
This lecture provides a brief overview of the materials you will need for this course.
Lecture 3
Procedural vs. OO Programing Languages
This lecture gives a brief history of the evolution of object oriented programming languages and Java. This lecture explains the advantages of object oriented programming languages over procedural languages.
Lecture 4
What is Good Software
In this lecture I talk about elegant software.
Lecture 5
Cohesion and Coupling
A short quiz to test your knowledge of the topics covered in this module.
Module 2: Getting Started with Java and Eclipse
Lecture 6
Introduction to Java
In this lecture I talk about Java's history and introduce the core component of Java.
Lecture 7
Setting up Your Machine
This lecture is a tutorial where I will show you how to set up your machine for Java development.
This lecture is a tutorial on how to create your first Java program with Eclipse.
A short quiz to test your knowledge of topics covered in module 2.
Module 3: A Basic Web Application
Lecture 9
A Basic Web Application in JSF
In this lecture you will learn how to start a Java Server Faces web application.
Lecture 10
Create an Interface
In this lecture you will learn how to add a web page that will be used as an interface for a JSF web application.
Lecture 11
Create a Managed Bean
In this lecture you will learn how to create the class that will be used as the code behind the JSF interface.
Lecture 12
Documenting Code
In this lecture you will learn how to use Eclipse to document java and xhtml code.
A short quiz to test your knowledge of topics covered in module 3.
Module 4: Programming with JSF
Lecture 13
Client Server Architecture
In this lecture I explain how the clients and servers interact with one another.
Lecture 14
Java Server Faces and the MVC Architecture
In this lecture I discus the MVC and JSF architectures.
Lecture 15
JSF Naviagation and Events
In this lecture I explain how to navigate between pages and handle client side event with JSF.
Lecture 16
JSF User Interface Controls
In this lecture I will show you how to receive and process information from the user in your JSF application.
Module 5: The Core of Object Oriented Programing
Lecture 17
Classes and Objects
In this lecture I will talk about the core construct of object oriented programming.
Lecture 18
The Constructor
In this lecture I will go over the Constructor method of a class.
Lecture 19
Class Variables
In this lecture I will talk about what class variables are and how they are used.
Lecture 20
Static Class Variables
In this lecture I will talk about the static key word and what a static class variable is as compared to a regular class variable.
In this lecture I will go over the syntax and usage of class methods in java.
Lecture 22
Class Properties
In this lecture I will go over how JSF implements class properties and talk briefly about how other OO languages implement class properties as well.
A short quiz to test you knowledge of topics covered in Module 5.
Lecture 23
Reserved Words
This is a short lecture about reserved words in Java.
Lecture 24
Variables and Scope
In this lecture I talk about the different types of variables and explain what scope is.
Lecture 25
Access Modifiers
This lecture is about Java Access Modifiers.
Lecture 26
Enumerated Types
This lecture is about Java enumerated types.
Lecture 27
If Else and Switch
This lecture is about decision making in your code.
Lecture 28
Overloading Methods
This lecture is about overloading Java methods.
Lecture 29
For While and Do
This lecture is about the looping constructs in Java.
This lecture is about recursive methods.
A short quiz to test you knowledge of topics covered in Module 6.
This is a short lecture which introduces the concept of Inheritance in Object Oriented Programming.
Lecture 32
Interface and Abstract
In this lecture I talk about special types of classes used in inheritance.
Lecture 33
Final and Overriding Methods
This lecture is about inherited class methods.
Lecture 34
Type Casting and Polymophism
This lecture is about type casting of both primitive types and classes and polymorphism.
A short quiz to test you knowledge of topics covered in Module 7.
Module 8: Exception Handling
Lecture 35
Error Handling
This lecture introduces error handling and the need for exception handling in Java.
Lecture 36
Try Catch and Finally
In this lecture you will learn how to use the try catch and finally code blocks to handle exceptions.
Lecture 37
Throw and Throws
In this lecture you will learn how to use the throw and throws keywords to generate java exceptions.
In this lecture you will learn how to use native Java classes to log events and errors that may occur in your application.
A short quiz to test you knowledge of topics covered in Module 8.
Module 9: Data Structures
In this lecture I will give you a detailed explanation of arrays and how memory is allocated for arrays and other data structures.
In this lecture, you will learn about a programming construct called Generics. Generic classes are used to implement complex Java data structures.
Lecture 41
Java Collections Framework (JCF) Overview
In this lecture you will learn about the many different interfaces and classes that have been implemented to support data structures in Java.
Lecture 42
Coding with the Java Collections Framework
In this lecture I will show you how to use a JCF generic class in your application.
Lecture 43
Introduction to Refactoring
In this lecture I will introduce you to the concept of refactoring as is applies to object oriented programming languages.
Lecture 44
Extract an Interface
In this lecture I will show you how to use the Eclipse IDE to extract an interface from an existing class.
Lecture 45
Rename a Class
In this lecture I will show you how to use the Eclipse IDE to rename an existing class.
Lecture 46
Extract a Method
In this lecture I will show you how to use the Eclipse IDE to extract a method from existing code.
Lecture 47
Restructure the Application
In this lecture I will show you how to use the Eclipse IDE to restructure an existing application.
Module 11: Design Patterns
Lecture 48
Introduction to Design Patterns
This lecture introduces the concept of design patterns in object oriented programming.
Lecture 49
Design Patterns in Your Application
In this lecture I will show you several design patterns you are already using.
Lecture 50
Using the Singleton Pattern
In this lecture I will show you how to use the singleton pattern in your program.
Lecture 51
Using Dependancy Injection
In this lecture I will show you how to use dependency injection in your program.
A short quiz to test you knowledge of topics covered in this module.
Module 12: Complete the Application
Lecture 52
Refactoring for Multiple Data Sources
In this lecture I will show you how to refactor your existing model code to utilize multiple data sources instead of a single data loader.
Lecture 53
Web Resources as a Data Source
In this lecture I will show you how to connect to an online source of data which can be downloaded and stored.
In this lecture I will show you how to set up SQLite which is a popular database engine for mobile computing.
Lecture 55
Databases as a Data Source
In this lecture I will show you how to build a class which can utilize the SQLite database engine setup in the previous lecture.
Lecture 56
A Composite Data Source
In this lecture I will show you how to build a single data source which is a composite of multiple data sources.
Lecture 57
Enhanced User Interface
In this lecture I will show you some improvements you can make on your user interface to improve the user experience.
Module 13: Software Engineering
Lecture 58
Software Engineering
In this lecture I will introduce software engineering.
In this lecture I will talk about the requirements phase of software engineering.
In this lecture I will talk about the design phase of software engineering.
Lecture 61
Implementation
In this lecture I will talk about the implementation phase of software engineering.
In this lecture I will talk about the testing phase of software engineering.
In this lecture I will talk about the deployment phase of software engineering.
In this lecture I will talk about the maintenancephase of software engineering.
This quiz includes questions from the entire course. You should go back and review all the previous quizzes before taking this exam.