Dr. Massoud Ghyam currently teaches several Computer Science courses at the University of Southern California (Ed.D). In the Educator Java series, Dr. Ghyam covers Java Syntax, Object Oriented Programming, Program Analysis, Data Structures, and Search Algorithms. By coupling his programming experience and interest in learning through technology, Dr. Ghyam guides you through both understanding the fundamental programming concepts and mastering the art of effective coding. Quick summaries of important concepts, common mistakes, and coding examples underneath each video complete this exemplary course.
| I. Introduction to Programming |
| |
Introduction to Java |
32:57 |
| | |
Intro |
0:00 | |
| | |
Process of Programming |
0:07 | |
| | |
Computer Systems |
0:38 | |
| | |
| Hardware |
| |
| | |
| Software (System and Applications) |
| |
| | |
| Users |
| |
| | |
Object Oriented Programming |
3:57 | |
| | |
| Classes |
| |
| | |
| Data Hiding |
| |
| | |
| Encapsulation |
| |
| | |
| Inheritance |
| |
| | |
Procedural Programming |
7:05 | |
| | |
| Sub-Programs |
| |
| | |
| Top Down and Bottom Up Design |
| |
| | |
| Data Passing and Processing |
| |
| | |
Key Benefits of java |
9:56 | |
| | |
| Platform Independence |
| |
| | |
| Object Oriented |
| |
| | |
| Threading |
| |
| | |
| Networking |
| |
| | |
| Distributed Computing |
| |
| | |
Using Java |
13:44 | |
| | |
| Application |
| |
| | |
| Applet |
| |
| | |
| Embedded Code |
| |
| | |
Defining and Running Java Programs |
15:53 | |
| | |
| Software (Editor, Compiler, Interpreter) |
| |
| | |
| Integrated Development Environment (IDE) |
| |
| | |
Simple Application |
19:12 | |
| | |
| Hello World |
| |
| | |
Compiling |
21:34 | |
| | |
| Source File |
| |
| | |
| Imported Objects |
| |
| | |
| Compiler |
| |
| | |
| Bytecode |
| |
| | |
Executing Applications on the Command Line |
23:10 | |
| | |
| Bytecode |
| |
| | |
| Interpreter |
| |
| | |
Creating, Compiling, and Running a Program |
24:25 | |
| | |
Applets |
25:25 | |
| | |
| HTML |
| |
| | |
| Applet Viewer |
| |
| | |
Java File Structure |
29:39 | |
| | |
| Source File |
| |
| | |
| Bytecode Files |
| |
| | |
| HTML Files |
| |
| II. Java Syntax from the Ground Up |
| |
Java Syntax |
34:57 |
| | |
Intro |
0:00 | |
| | |
Primitive Data Types |
0:13 | |
| | |
Numeric Data Types |
4:00 | |
| | |
| Double |
| |
| | |
| Float |
| |
| | |
| Long |
| |
| | |
| Int |
| |
| | |
| Short |
| |
| | |
Character Data Type |
5:14 | |
| | |
| char |
| |
| | |
Boolean Data Type |
8:20 | |
| | |
| True and False |
| |
| | |
Unicode Formats |
10:25 | |
| | |
| ASCII |
| |
| | |
| Plain Text |
| |
| | |
Comments |
15:26 | |
| | |
Reserved Words |
18:17 | |
| | |
| Import |
| |
| | |
| Class |
| |
| | |
| Private |
| |
| | |
Identifiers |
23:17 | |
| | |
| Variables and Constants |
| |
| | |
Declaring and Initializing Variables |
25:28 | |
| | |
| Data Type |
| |
| | |
Constants |
33:31 | |
| | |
| Static Final |
| |
| |
Operators |
51:20 |
| | |
Intro |
0:00 | |
| | |
Operators |
0:32 | |
| | |
| Arithmetic Operations |
| |
| | |
| Modulus/Remainder |
| |
| | |
| Combo Operators |
| |
| | |
| Increment and Decrement |
| |
| | |
Assignment Statements |
7:14 | |
| | |
| Memory Space |
| |
| | |
Unary Operators |
11:05 | |
| | |
Arithmetic Operators |
14:12 | |
| | |
More Operators |
24:10 | |
| | |
| Increment and Decrement |
| |
| | |
Mixed/Similar Mode of Operation |
29:29 | |
| | |
Type Conversion (Cast) |
31:54 | |
| | |
Relational Operators |
35:30 | |
| | |
Boolean Operators |
37:37 | |
| | |
| Truth Table |
| |
| | |
Operator Precedence |
43:30 | |
| | |
Examples |
44:29 | |
| |
Statements |
49:20 |
| | |
Intro |
0:00 | |
| | |
Java Statements |
0:27 | |
| | |
| Assignment Statement |
| |
| | |
| Semi-colon |
| |
| | |
Statements and Expressions |
4:25 | |
| | |
Arithmetic Expressions |
9:58 | |
| | |
| Integer Arithmetic |
| |
| | |
| Integer Division |
| |
| | |
| Real Number Arithmetic |
| |
| | |
Operator Precedence |
10:52 | |
| | |
| Changing Precedence |
| |
| | |
Storing Data to Primitive Data Types |
18:38 | |
| | |
| Assignment Operator |
| |
| | |
| Storing Using = |
| |
| | |
| Reading an Input Value |
| |
| | |
Input Output |
20:49 | |
| | |
| Console Input/Output |
| |
| | |
| Graphical User Interface |
| |
| | |
| String |
| |
| | |
Reading Numeric Values |
37:44 | |
| | |
| Numeric Wrapper Classes |
| |
| | |
Complete Simple Program |
42:41 | |
| |
Control Statements |
55:36 |
| | |
Intro |
0:00 | |
| | |
Control Statements |
0:10 | |
| | |
| Comparison Operators |
| |
| | |
| Relational Operators |
| |
| | |
| Logical Operators |
| |
| | |
| If Else |
| |
| | |
| Boolean Data Type |
| |
| | |
| Displayed, Compared, Assigned |
| |
| | |
| Compound Statements |
| |
| | |
| Simple Statements |
| |
| | |
One Way Selection |
17:53 | |
| | |
| No Else Expression |
| |
| | |
| Decision Maker |
| |
| | |
| Action Statement |
| |
| | |
| Verify Data |
| |
| | |
| Find Exception |
| |
| | |
Examples |
24:11 | |
| | |
If Else Statement |
27:21 | |
| | |
Nested If |
32:00 | |
| | |
Multi-Alternative |
37:33 | |
| | |
Switch Statement |
44:33 | |
| |
Loop Statements |
41:32 |
| | |
Intro |
0:00 | |
| | |
While Loop |
0:11 | |
| | |
| Example |
| |
| | |
Counter Controlled While Loops |
10:36 | |
| | |
| Example |
| |
| | |
Sentinel Controlled While Loops |
15:35 | |
| | |
| Example |
| |
| | |
For Loop |
20:31 | |
| | |
| Example |
| |
| | |
Do While Loop |
31:22 | |
| | |
| Example |
| |
| | |
Nested Loop |
35:34 | |
| | |
| Example |
| |
| |
Recursion |
33:17 |
| | |
Intro |
0:00 | |
| | |
Recursion |
0:10 | |
| | |
| Tail Recursion, Tail-End Recursion |
| |
| | |
| Advantages |
| |
| | |
| Disadvantages |
| |
| | |
| Base Case |
| |
| | |
| Recursive Step |
| |
| | |
Factorials |
4:28 | |
| | |
Java Methods |
7:24 | |
| | |
| Header |
| |
| | |
| Body |
| |
| | |
| Return Statement |
| |
| | |
Method Declarations |
11:39 | |
| | |
| Modifiers |
| |
| | |
| Return Type |
| |
| | |
| Method Name |
| |
| | |
| Parameter List |
| |
| | |
| Exception List |
| |
| | |
| Method Body |
| |
| | |
Method Example |
13:14 | |
| | |
Factorial Problem |
19:47 | |
| | |
Complete Example |
22:35 | |
| | |
Arithmetic Series Example |
30:10 | |
| III. Object-Oriented Programming in Java |
| |
Classes and Objects |
40:05 |
| | |
Intro |
0:00 | |
| | |
Object Oriented Programming |
0:23 | |
| | |
| Class |
| |
| | |
| Variable Declaration |
| |
| | |
| Methods |
| |
| | |
| Object |
| |
| | |
Encapsulation |
2:31 | |
| | |
| Instantiation |
| |
| | |
Computer Memory |
3:28 | |
| | |
| Garbage Collection |
| |
| | |
Objects |
6:41 | |
| | |
| Behavior |
| |
| | |
| State |
| |
| | |
| Identity |
| |
| | |
| Instance Variable |
| |
| | |
| Message Passing |
| |
| | |
| Method Call |
| |
| | |
| Private Data Member |
| |
| | |
| Public Member Methods |
| |
| | |
Unified Modeling Language (UML) |
9:18 | |
| | |
Visibility |
11:32 | |
| | |
| Private Visibility |
| |
| | |
| Public Visibility |
| |
| | |
| Protected Visibility |
| |
| | |
Example |
14:26 | |
| | |
Classes and Objects |
18:34 | |
| | |
| Design Example |
| |
| | |
| Class Structure |
| |
| | |
| Class Template |
| |
| | |
| Class Hierarchy |
| |
| | |
| Employee Class |
| |
| |
Using Objects |
38:27 |
| | |
Intro |
0:00 | |
| | |
Employee Objects |
0:25 | |
| | |
| Declare and Instantiate |
| |
| | |
| Mutator Methods |
| |
| | |
| Accessors |
| |
| | |
| toString Method |
| |
| | |
Assignment |
16:43 | |
| | |
Types |
21:50 | |
| | |
| Primitive Type |
| |
| | |
| Reference Type |
| |
| | |
| Null Value |
| |
| | |
| Null Pointer Exception |
| |
| | |
Constructor |
29:13 | |
| | |
| Default Constructors |
| |
| | |
| Examples |
| |
| |
Methods |
38:27 |
| | |
Intro |
0:00 | |
| | |
Structure |
0:32 | |
| | |
| Return Statement |
| |
| | |
| Void Type |
| |
| | |
| Data Type |
| |
| | |
Formal and Actual Parameters |
5:46 | |
| | |
| Arguments |
| |
| | |
| Position and Type |
| |
| | |
Local Variables |
12:24 | |
| | |
Helper Methods |
15:02 | |
| | |
Scope and Lifetime of Variables |
18:44 | |
| | |
| Global Variables |
| |
| | |
| Local Variables |
| |
| | |
Block Scope |
26:50 | |
| | |
Example: Methods |
32:19 | |
| | |
Example: Parameter Passing |
38:05 | |
| | |
Static Variables/Classes/Methods |
48:27 | |
| |
Inner Classes |
18:26 |
| | |
Intro |
0:00 | |
| | |
Overview of Inner Classes |
0:44 | |
| | |
| Static Member Classes |
| |
| | |
| Member Classes |
| |
| | |
| Local Classes |
| |
| | |
| Anonymous Classes |
| |
| | |
Examples |
7:11 | |
| |
Compositions |
29:51 |
| | |
Intro |
0:00 | |
| | |
Using Compositions |
0:38 | |
| | |
Example: Date |
2:55 | |
| | |
Example: Person |
11:42 | |
| |
Inheritance |
39:39 |
| | |
Intro |
0:00 | |
| | |
Terminology |
2:13 | |
| | |
| Root |
| |
| | |
| Subclasses |
| |
| | |
| Object |
| |
| | |
| Superclass |
| |
| | |
| Descendants |
| |
| | |
Example: Employee |
5:27 | |
| | |
Class Header |
33:56 | |
| | |
Variables |
34:39 | |
| | |
| Protected Methods |
| |
| | |
| Constructors |
| |
| | |
| Super |
| |
| |
Interface |
21:57 |
| | |
Intro |
0:00 | |
| | |
Java Interfaces |
1:35 | |
| | |
| Methods and Constants |
| |
| | |
| Implements Clause |
| |
| | |
| Abstract Methods |
| |
| | |
Classes vs Interfaces |
3:45 | |
| | |
| Instance/Class Variables |
| |
| | |
| Instance/Class Methods |
| |
| | |
| Public Instance Methods |
| |
| | |
| Named Constants |
| |
| | |
| Specification |
| |
| | |
Example: Interface |
6:29 | |
| | |
Summary |
20:04 | |
| |
Platform |
57:30 |
| | |
Intro |
0:00 | |
| | |
System and User |
0:09 | |
| | |
| String and Characters |
| |
| | |
| Numeric Classes |
| |
| | |
| Numbers and Math |
| |
| | |
| Dates and Times |
| |
| | |
| Input and Output Streams |
| |
| | |
| Vectors |
| |
| | |
| Swing Class |
| |
| | |
String Class |
1:24 | |
| | |
| Comparing, Searching, Extracting, Copying |
| |
| | |
| Concatenation |
| |
| | |
| toString |
| |
| | |
Examples: Strings |
10:21 | |
| | |
Math Class |
17:23 | |
| | |
| Basic Numeric Operations |
| |
| | |
| Examples |
| |
| | |
Numeric Class |
24:52 | |
| | |
| Wrapper Class |
| |
| | |
| Primitive Type |
| |
| | |
| Float, Integer, Double, Long |
| |
| | |
| Examples |
| |
| | |
Class Date |
31:07 | |
| | |
| Universal Time (UTC) |
| |
| | |
| Java Virtual Machine |
| |
| | |
I/O Streams |
35:23 | |
| | |
| Input Source |
| |
| | |
| Output Destination |
| |
| | |
| File Lines Reader |
| |
| | |
| Buffered Reader |
| |
| | |
Scanner Class |
44:28 | |
| | |
| Tokens |
| |
| | |
| Example: Reading Numbers |
| |
| | |
Vector Class |
48:24 | |
| | |
| Dynamic Array |
| |
| | |
| Constructors |
| |
| | |
| Examples |
| |
| | |
Swing Class |
53:56 | |
| | |
| Examples |
| |
| |
Arrays |
29:45 |
| | |
Intro |
0:00 | |
| | |
Java Syntax |
0:27 | |
| | |
| Element |
| |
| | |
| Index |
| |
| | |
| One Dimensional Array |
| |
| | |
| Two Dimensional Array |
| |
| | |
Declaring an Array |
2:18 | |
| | |
| int |
| |
| | |
Accessing Array Components |
4:57 | |
| | |
| Index |
| |
| | |
| Array Subscripting Operator |
| |
| | |
| Example |
| |
| | |
Example: Array Sort |
18:17 | |
| | |
Two Dimensional Array |
23:33 | |
| | |
| Loops |
| |
| | |
| Example |
| |
| |
Packages |
32:13 |
| | |
Intro |
0:00 | |
| | |
Destroying and Finalizing Objects |
0:16 | |
| | |
| Allocated Memory |
| |
| | |
| Automatic Garbage Collection |
| |
| | |
| Finalize Method |
| |
| | |
Creating and Using Packages |
5:44 | |
| | |
| Types |
| |
| | |
| Fundamental Classes |
| |
| | |
| Bundled Classes |
| |
| | |
| Using Package Members |
| |
| | |
Naming Conventions |
17:40 | |
| | |
| Class and Interface |
| |
| | |
| Methods and Variables |
| |
| | |
| Constants |
| |
| | |
Documentation Comments |
23:04 | |
| | |
| Doc Tags |
| |
| | |
| Javadoc |
| |
| IV. Analysis of Programs |
| |
Program Analysis, Part I |
34:18 |
| | |
Intro |
0:00 | |
| | |
Correctness |
0:52 | |
| | |
| Testing |
| |
| | |
| In Isolation |
| |
| | |
| Boundary Cases |
| |
| | |
| Integration Testing |
| |
| | |
| White Box Testing |
| |
| | |
| Black Box Testing |
| |
| | |
Debugging |
11:18 | |
| | |
| Syntax Errors |
| |
| | |
| Logical Errors |
| |
| | |
| Run Time Errors |
| |
| | |
| Debuggers |
| |
| | |
Error Handling |
16:51 | |
| | |
| Defensive Programming |
| |
| | |
| Classes |
| |
| | |
Exceptions |
22:48 | |
| | |
| Run Time Exception |
| |
| | |
| Arithmetic Exception |
| |
| | |
| Illegal Argument Exception |
| |
| | |
| Illegal State Exception |
| |
| | |
| Index Out of Bounds Exception |
| |
| | |
| Null Pointer Exception |
| |
| | |
| Unsupported Operation Exception |
| |
| | |
Fixing Exceptions |
28:58 | |
| | |
| Try Catch Statement |
| |
| |
Program Analysis, Part II |
44:30 |
| | |
Intro |
0:00 | |
| | |
Program Complexity and Efficiency |
0:18 | |
| | |
| Time, Resources, Coding |
| |
| | |
| Complexity Analysis |
| |
| | |
| Sum Method |
| |
| | |
| Execution Time |
| |
| | |
Big-O Notation |
8:59 | |
| | |
| Example |
| |
| | |
| Bubblesort Method |
| |
| | |
Common Big-O Values |
27:38 | |
| | |
| Examples |
| |
| | |
Complexity |
41:57 | |
| | |
| Best Case |
| |
| | |
| Worst Case |
| |
| | |
| Average Case |
| |
| V. Additional Data Structures |
| |
Linked List |
52:51 |
| | |
Intro |
0:00 | |
| | |
Java Syntax |
0:09 | |
| | |
| Linked List |
| |
| | |
| Node |
| |
| | |
Types of Lists |
2:39 | |
| | |
| Singly Linked List (slist) |
| |
| | |
| Doubly Linked List |
| |
| | |
| Circular Linked List |
| |
| | |
Objects |
8:56 | |
| | |
| Reference |
| |
| | |
Adding to a Linked List |
14:54 | |
| | |
| List Pointer |
| |
| | |
| New Link |
| |
| | |
Traversing a Linked List |
21:00 | |
| | |
| Reference |
| |
| | |
| Second Pointer |
| |
| | |
Deleting from a Linked List |
23:44 | |
| | |
Example: Class Node |
29:13 | |
| | |
Tracing |
34:55 | |
| | |
Review |
36:20 | |
| | |
| Example: Add Method |
| |
| | |
| Example: Add Helper Method |
| |
| | |
| Example: Traverse |
| |
| | |
| Example: Traverse Iteratively |
| |
| | |
| Example: Find |
| |
| | |
| Example: Delete First |
| |
| |
Stacks |
22:09 |
| | |
Intro |
0:00 | |
| | |
What is a Stack? |
0:29 | |
| | |
| Top |
| |
| | |
| Last In First Out (LIFO) |
| |
| | |
| Push |
| |
| | |
| Pop |
| |
| | |
Creating a Stack |
5:27 | |
| | |
| Vector |
| |
| | |
| One Dimensional Array |
| |
| | |
| Node |
| |
| | |
| Data Field |
| |
| | |
| Linked List |
| |
| | |
| Null |
| |
| | |
Stack Operations |
8:20 | |
| | |
| Push |
| |
| | |
| Pop |
| |
| | |
| Top |
| |
| | |
| Is Empty |
| |
| | |
| Is Full |
| |
| | |
Examples |
14:21 | |
| |
Queue |
24:19 |
| | |
Intro |
0:00 | |
| | |
What is a Queue? |
0:13 | |
| | |
| First In First Out (FIFO) |
| |
| | |
| Head |
| |
| | |
| Tail |
| |
| | |
Creating a Queue |
3:55 | |
| | |
| One Dimensional Array |
| |
| | |
| Vector |
| |
| | |
| Array Index |
| |
| | |
| Linked List |
| |
| | |
| Node |
| |
| | |
| Data Field |
| |
| | |
| Front |
| |
| | |
| Rear |
| |
| | |
Queue Operations |
7:42 | |
| | |
| Empty |
| |
| | |
| peekFirst |
| |
| | |
| peekLast |
| |
| | |
| Pull |
| |
| | |
| Push |
| |
| | |
| removeFirst |
| |
| | |
| removeLast |
| |
| | |
| Search |
| |
| | |
Java Queue |
13:57 | |
| | |
| Add |
| |
| | |
| Offer |
| |
| | |
| Remove |
| |
| | |
| Poll |
| |
| | |
| Element |
| |
| | |
| Peek |
| |
| | |
Examples |
16:05 | |
| |
Trees |
43:52 |
| | |
Intro |
0:00 | |
| | |
Binary Tree |
0:49 | |
| | |
| Node |
| |
| | |
| Root Node |
| |
| | |
| Sub-Trees |
| |
| | |
| Parent |
| |
| | |
| Child |
| |
| | |
Binary Search Tree |
3:01 | |
| | |
| Example: Search |
| |
| | |
Binary Search Tree Operations |
13:14 | |
| | |
| Preorder Traversal |
| |
| | |
| Postorder Traversal |
| |
| | |
Binary Search Tree Examples |
28:25 | |
| |
Priority Queue and Heap |
19:58 |
| | |
Intro |
0:00 | |
| | |
Priority Queue |
0:31 | |
| | |
| Abstract Data Type (ADT) |
| |
| | |
| Element |
| |
| | |
| Peek |
| |
| | |
| Associative Array Mapping |
| |
| | |
| Priority |
| |
| | |
Priority Queue Interface |
6:05 | |
| | |
Priority Queue Examples |
8:17 | |
| | |
Heap |
10:13 | |
| | |
| Complete Binary Tree |
| |
| | |
| Heap Order Property |
| |
| | |
Heap Examples |
13:36 | |
| |
Maps and Sets |
19:54 |
| | |
Intro |
0:00 | |
| | |
What is a Map? |
0:26 | |
| | |
| Dictionary Class |
| |
| | |
| Collection Views |
| |
| | |
| HashMap |
| |
| | |
| TreeMap |
| |
| | |
| LinkedHashMap |
| |
| | |
Map Interface |
2:18 | |
| | |
Map Example |
5:16 | |
| | |
What is a Set? |
10:13 | |
| | |
| Collection |
| |
| | |
| HashCode |
| |
| | |
Set Interface |
12:09 | |
| | |
Set Example |
14:21 | |
| VI. Algorithms |
| |
List Operations |
26:27 |
| | |
Intro |
0:00 | |
| | |
Container Traversal |
0:27 | |
| | |
| Explicit Traveral Operations |
| |
| | |
| Cursors |
| |
| | |
| Method Parameters |
| |
| | |
| Iterators |
| |
| | |
Explicit Traversal Operations |
4:03 | |
| | |
| outputELements |
| |
| | |
| findIndex |
| |
| | |
| sumOfElements |
| |
| | |
| capitalizeElements |
| |
| | |
Cursor Traversals |
6:53 | |
| | |
| Container with Cursor |
| |
| | |
Enumerations |
12:43 | |
| | |
| hasMoreELements |
| |
| | |
| nextElements |
| |
| | |
| NoSuchElementException |
| |
| | |
| Example |
| |
| | |
Iterators |
17:52 | |
| | |
| Remove Method |
| |
| | |
| IllegalStateException |
| |
| | |
| Example |
| |
| |
Searching |
48:26 |
| | |
Intro |
0:00 | |
| | |
Sequential Search |
0:23 | |
| | |
| Sorted List |
| |
| | |
| Unsorted List |
| |
| | |
| Algorithm |
| |
| | |
| Variations |
| |
| | |
| Example |
| |
| | |
Binary Search |
12:46 | |
| | |
| Iteration |
| |
| | |
| Linear Search |
| |
| | |
| Array Midpoint |
| |
| | |
| Loop |
| |
| | |
| Examples |
| |
| | |
Search Using Hashing |
31:25 | |
| | |
| Key |
| |
| | |
| Hash |
| |
| | |
| Examples |
| |
| |
Sorting, Part I |
20:23 |
| | |
Intro |
0:00 | |
| | |
Bubble Sort |
1:16 | |
| | |
| Scan List |
| |
| | |
| Examples |
| |
| | |
Insertion Sort |
10:22 | |
| | |
| Nearly Sorted |
| |
| | |
| Worst Case |
| |
| | |
| Best Case |
| |
| | |
| Expected Search |
| |
| | |
| Inversions |
| |
| | |
| Examples |
| |
| |
Sorting, Part II |
20:23 |
| | |
Intro |
0:00 | |
| | |
Quicksort |
0:12 | |
| | |
| Examples |
| |
| | |
| Complexity Analysis |
| |
| | |
| Implementation |
| |
| | |
| Stack |
| |
| | |
| Recursively |
| |
| | |
Mergesort |
15:00 | |
| | |
| Recursive Divide and Conquer |
| |
| | |
| mergeSortHelper |
| |
| | |
| copyBuffer |
| |
| | |
| Examples |
| |
| | |
Heap Sort |
28:15 | |
| | |
| Heap |
| |
| | |
| Complexity Analysis |
| |
| | |
| Examples |
| |