EOP-Java: Course Timeline - Contents of Lectures

Lecture 1: Getting Started

  • Introduction
  • Programming Languages, Programming Language Paradigms
  • Opject-Oriented Programming (OOP)
  • Software Life Cycle
  • Software Development: Waterfall Model, V-Model, Spiral Model
  • The first computer programmer, short computer history
  • Programming languages and compilers (high-level, low-level languages)
  • Compiler and Interpreter
  • Elements of Java: Programming language, VM, API
  • Java Environments
  • Java Implementations
  • JDK Programming Environment
  • History of Java
  • Comparison Java vs. C#
  • Java File Structure

Lecture 2: Introduction to Java

  • Java Basics, Language comparison, Properties of Java
  • Java Definitions and Syntax
  • Syntax vs. Semantics
  • Java Operators
  • Fundamental (Primitive) Data Types in Java
  • Java Expressions
  • Java Program Structure - Control Flow
  • Object-Oriented Programming: Terminology: class, object, method
  • First Example: Hello World in Java
  • Programm Structure of "Hello World"
  • Java Comment

Lecture 3: Introduction to Java

  • Nassi-Shneiderman Diagrams
  • Sequence, Conditional Statement, Loops
  • Iteration: Pre-condition test, Post-condition test
  • Counting for-loop
  • Example: Power of 2, overflow problem
  • Java Resources, JDK 1.5, 5, 6
  • Java 2 SDK, Tools and Utilities
  • Command Line Input (CLI), args.length
  • String input, numerical input values
  • String Concatenation, "+" operator

Lecture 4: Introduction to Java

  • Programming Paradigms
  • Smalltalk
  • Process-oriented model, Object-oriented model
  • OOP mechanisms: encapsulation, inheritance, polymorphism
  • Member (instance) variables
  • Creating objects, "new" operator, instantiation
  • Objects and messages
  • Inheritance, subclassing, hierarchy
  • Information passing, parameter lists
  • Object-Oriented Design concepts: ADT - Abtract Data Type
  • Unified Modelling Language (UML), class diagram, generalization
  • Creating instances, objects
  • Methods, parameter passing
  • Constructor, constructor methods
  • Information hiding, "this"

Lecture 5: Introduction to Java

  • Method overloading, method signature, constructor overloading
  • Method overriding, dynamic method dispatch
  • Argument passing: call-by-value, call-by-reference
  • Java class diagrams
  • Modifiers and protection
  • Accessors: getter and setter methods
  • Type casting, coercion, implicit and explicit casting, widening casting
  • Wrapper classes
  • Accessing superclasses: "super"
  • Abstract methods

Lecture 6: Introduction to Java, Arrays

  • Interfaces, multiple inheritance in Java, inheritance of interfaces
  • Special classes, Math class
  • Arrays in Java, properties of arrays
  • Array element and index
  • Semidynamic arrays
  • Declaration, creation, initialisation of arrays, "new"
  • Primitive arrays, arrays of objects
  • Bound checking, "length" method
  • ArrayIndexOutOfBoundsException
  • Arrays and For-Loops
  • Common Programming Errors
  • Random generator, Math.random()
  • Multidimensional Arrays
  • Initialising Arrays

Lecture 7: Arrays, Exceptions

  • Collection taypes, dynamic arrays
  • String class, String methods: length(), charAt(), substring()
  • Comparision of strings, "equals"
  • Command Line Input, String args[]
  • Errors and Exceptions, Exception Handling
  • Throwable Objects
  • Errors, Exceptions, Runtime Exceptions
  • Throw, Catch
  • Exception types, Exception classes
  • Call stack
  • Leaf classes, node classes
  • Checked / Unchecked exceptions
  • try / catch statements

Lecture 8: Exceptions, Stream

  • e: exception handler parameter, available methods
  • Writing exemptions, sample exceptions
  • Stack trace
  • Check or specify
  • Java Streams, stream concept
  • Standard IO, error output
  • package java.io, IO types
  • Reader, Writer, InputStream, OutputStream
  • Abstract classes
  • FileWriter, "close"
  • Stream Exceptions, IOException
  • Plug-Together
  • Buffered File Output
  • Cascading Streams
  • DataInputStream, DataOutput
  • tream
  • BufferedReader, BufferedWriter
  • Keyboard Input
  • Scanner
  • Random Access

Lecture 9: Applets

  • Internet Programming, CGI, Applets
  • AWT, Swing
  • Building and Viewing Applets
  • Programming Applets, Applet, JApplet
  • HelloWorld Applet
  • Graphics, Coordinate System
  • Applet Methods, init(), paint()
  • Graphics
  • Example: Curve Plotting
  • Parameter Passing HTML to Applet
  • Null Reference
  • Special classes: Color, Font
  • Graphical User Interface (GUI)
  • Special classes: SystemColor
  • Classes and interfaces in package AWT
  • AWT structure
  • Font styles: plain, bold, italics

Lecture 10: Applets, Servlets

  • FontMetrics
  • FontMetrics Demo
  • Short introduction to the MVC-Architecture
  • Model, View, Controller
  • Short Introduction to Servlet Programming
  • Applet - Servlet
  • CGI, Servlet, Threads
  • CGI, Server Extension APIs, Servlet
  • CGI vs. Servlet
  • Servlet and JSP Engines
  • Three-Tier, Multitier Architecture
  • Three-Tier Servlet Model
  • Servlet Package / API

Lecture 11: Servlets

  • Servlet Interface
  • Client/Server Interaction
  • ServletRequest, ServletResponse
  • HTTP, Header Information
  • HTTP Request Header, Response Header
  • HTTP Methods: Get, Post, Head
  • HTTP Response Codes
  • Servlet Packages: javax.servlet, javax.servlet.http
  • Servlet Interface: javax.servlet.Servlet
  • Generic Servlet, HTTP Servlet
  • doGet(), doPost()
  • Request / Response Objects, Methods
  • HttpServletRequest, HttpServletResponse
  • Servlet Life-Cycle, init(), service (), destroy ()
  • PrintWriter, getWriter()
  • ServletConfig, web.xml
  • ServletContext, Methods of ServletContext
  • Methods of ServletRequest
  • javax.servlet package, javax.http.servlet package
  • HTTP Servlet
  • "Hello World" Servlet

Lecture 12: Servlets

  • HTTP Request Header (Servlet)
  • Form Handling with GET/POST
  • URI, URL, URN
  • Unicode, UCS, and UTF-8
  • HTTP Support Classes
  • Server-Side Include (SSI) with Servlets
  • Servlet Chaining, Servlet Filters
  • Session, Session Tracking, Cookies
  • Stateless protocol
  • Session tracking: Cookies, URL-rewriting, Hidden form fields
  • Cookie Constructor, RFC2109

Lecture 13: Servlets

  • Creating cookies
  • getParameter(), setMaxAge()
  • Cookie Methods
  • Problems with Cookies
  • Set Cookies, Show Cookies
  • Session Tracking API
  • Obtaining a Session
  • Storing and Getting data from a session
  • HttpSession, Life Cycle, Methods

Lecture 14: JSP

  • Java Server Pages
  • JSP Code Example, Code Errors
  • JSP Engine, JSP Translation and Processing
  • JSP vs. ASP
  • JSP vs. Servlets
  • JSP Architecture
  • JSPPage, HttpJspPage
  • Methods: jspInit(), jspDestroy(), jspService
  • JSP Elements: Directive, Action, Scripting
  • Scripting: Declarative, Scriptlets, Expressions
  • JSP Comment
  • Scripting: Implicit JSP Objects
  • JSP Session, Example
  • JSP XML-Syntax
  • Starting Applications: MS Excel
  • JSP Taglibs
  • Tag Handler: Tag, BodyTag
  • TLD - Tag Library Descriptor
  • Tag action methods, Tag interaction
  • HelloWorld Example
  • JSTL - JavaServer Pages Standard Tag Library
  • Comparison: Servlet - Java Server Pages
  • Combining Servlets with JSP

Lecture 15: Events, Event handling

  • Event Models, Java 1.0, Java 1.1
  • General Event Handler
  • ActionListener
  • Delegation Event Model, Event Dispatcher
  • Event Types: Low Level, High level
  • Hierarchy of Event Classes
  • Event handler registration
  • Example: KeyEvents
  • add<EventType>Listener
  • Java EventListener-Interfaces
  • Inner classes, Nesting of classes
  • Member classes, Local classes, Anonymous classes
  • Anonymity in Java
  • Listener Interfaces, Adapter Classes, Listener Methods
  • Virtual Key Codes
  • Event handling with inner (local) classes
  • Anonymous classes
  • Event handling with anonymous classes
  • Creating new Java event types

Lecture 16: Java Swing

  • Comparison AWT (Abstract Windowing Toolkit) - Swing
  • Swing APIs, classes, packages
  • JApplet
  • JFC - Java Foundation Classes
  • Architecture of the Swing Class Library
  • Swing Components, concept of Java peers
  • Heavyweight, Lightweight components
  • MVC - Model-View-Controller Architecture
  • Java UI Delegate
  • PLAF - Pluggable Look and Feel
  • Example: JButton
  • Swing structure: RootPane
  • Swing Components
  • Layout Managers

Lecture 17: Java Thread Programming

  • Java Threads - Concurrent Programming
  • Concurrency vs. Parallelism
  • Threads and Parallelism
  • Implicit threads in AWT and Swing
  • Java Thread Definition
  • Thread Implementation: class Thread, interface Runnable
  • Methods of class Thread; start(), sleep(), join(), yield()
  • deprecated methods
  • Thread States (life cycle): Java 1.2, 1.3 and up

Lecture 18: Java Thread Programming, Java Extensions

  • Starting threads vs. simple method call
  • Problems: producer/consumer, race condistions
  • Thread synchronisation
  • Context switch
  • Atomicity in Java
  • Monitors (Charles Antony Richard Hoare)
  • Object locking (synchronized), signalling between threads
  • Synchronization Methods: wait(), notify(), notifyall()
  • Ending a thread: interrupt(), isInterrupted(), join(), yield()
  • Deprecated methods to stop a thread: stop(), suspend(), resume()
  • Daemon Threads, setDaemon()
  • Thread priorities
  • Applets and threads
  • Programming errors: Deadlocks
  • Deadlock examples
  • Grouping threads
  • Java Extensions (JDK 1.5 and up)
  • Parametric Polymorphism for Java: Java Generics

Lecture 19: Klausurvorbereitung

  • Überblick über die Themen der Veranstaltung
  • Schwerpunkte
  • Beispielklausur