Saturday, June 30, 2007

Programming in Java

This course will prepare students for developing software programs in Java. The primary purpose of the course is to give students basic knowledge of programming constructs and best practices, which they can utilize for writing desktop programs.


I look forward for an informative and engaging semester with all the students. Details of the course have been listed below. If you have any questions, please post them as comments to this post.

Programming in Java Syllabus:

  • Introduction of the programming platform, it's main benefits and drawbacks

    • Motivation for creating the Java platform

    • Primary benefits of using the Java platform

    • Drawbacks of the Java platform

  • Structure of programs on the programming platform (a simple HelloWorld example)

    • Explain how to create a simple class that will print “Hello World”

  • Compiling and running a program

    • Show how to compile and run the HelloWorld program

    • Explain basic compiler and VM options

  • Working with primitive data types

    • Primitive data types, their usage, and sizes

  • Operators

    • Explain operators in Java

  • Explanation of control structures (looping, branching)

    • Loops: while, do...while

    • Branching: if, else...if, cond?val1:val2, break, continue, labels, switch, return

  • Implementation of OO concepts on the target platform

    • Defining classes

      • Show how to create a simple class

      • Explain interfaces and how to create them

      • Explain namespaces and packages

    • Support for building abstractions

    • Support for encapsulation and information hiding

    • Support for inheritance

      • Special note on single inheritance in Java and using interfaces

    • Support for polymorphisms

      • Compile time and run time polymorphism

      • Explain polymorphisms with interfaces and classes

      • Explain abstract classes

    • Access modifiers

      • public, private, protected, package friendly

  • Important keywords and concepts

    • static, final

  • String manipulation

    • Creating strings

    • Concatenating strings (using + operator, StringBuffer, StringBuilder)

    • Extracting substrings

  • Creating constants and their importance

    • How to create constants in Java, their importance and usage

  • Working with other commonly used classes

    • Wrapper classes for primitive data types

    • The Object superclass

    • The class Class

  • Exception handling

    • Why do we need exceptions

    • The exception hierarchy in Java

    • Throwing and catching exceptions

    • Creating custom exceptions

  • Working with collections of objects

    • Working with arrays

    • Introduction of the collection interfaces (List, Set, Map)

    • Working with different types of Lists (ArrayList and LinkedList)

    • Working with different types of Sets (HashSet, and TreeSet)

    • Working with different types of Maps (HashMap, and TreeMap)

    • Iterating across collections

    • Comparing objects and sorting in collections

  • The Input/Output system

    • The architecture of the Java IO classes

    • Reading from and writing to the system console

    • Binary IO

    • Character IO

    • Working with files

  • Creating desktop user interfaces

    • Basic UI classes in Java

    • Layout managers

    • Event driven programming

    • Making a simple user interface in Java

  • Language/platform specific concepts

    • Automatic garbage collection

    • Marker interfaces in Java

    • Serialization

    • Introduction to inner classes

    • Introduction to reflection