Title Object-Oriented Programming II
Lesson Code 321-3650
Semester 3
ECTS 5
Hours (Theory) 3
Hours (Lab) 2
Faculty Symeonidis Panagiotis

Syllabus

  • Introduction to OOP and UML.
  • Java Language Fundamentals: Data types, Variable declarations, Operators and Assignment, Control structures, Strings, Arrays, Collections, Wrapper classes.
  • Java as an OOP language: Classes, Constructors, Access modifiers, Packages, Interfaces, Garbage collection, Encapsulation, Cohesion, Coupling.
  • Exception Handling: Basics, Exception Hierarchy, The Throwable class, Unchecked and checked exceptions, Exception and Inheritance, User defined Exceptions, Redirecting and Re-throwing Exceptions
  • Introduction to Concurrent programming and Multithreading: Introduction, Thread Creation, Thread Life cycle, priorities and scheduling, Synchronization, Communication of Threads.
  • Files and I/O Streams: File Input stream and File output stream, Serialization.
  • AWT: Basics, The Graphics class, Class hierarchy of AWT, Layout Managers, Java 2D API.
  • Swings: Introduction, Swing packages, Hierarchy of swing classes, Advanced layout Managers.
  • Introduction to networking with Java: Introduction, Stream Socket Connections.

Learning Outcomes

This course covers the fundamentals of Object Oriented Programming (OOP) using Java. The main learning objectives for this course are:

  • To build and develop OOP thinking: Learn to think in objects.
  • Τo familiarize students with the basic features of the language API and the know-how to use them correctly and efficiently
  • Τo cover the usage principles of encapsulation, coupling, cohesion, inheritance, polymorphism and method overloading/overriding
  • Τo teach and demonstrate sound OOP practices and program structuring
  • To develop analytical programming thinking and reasoning skills.

The aforementioned objectives are achieved through course lectures and extensive laboratory exercises.

Prerequisite Courses

Not required.

Basic Textbooks

- Liang D. Y., Java, 10th ed.
- Deitel Harvey M., Deitel Paul J., Java Programming, 10th ed.
- Cadenhead R, and Lemay L., Java 7, 6th ed.
- Kavouras, Ι. Κ., Roukounaki, Java Programming, Klidarithmos Pubs., (in Greek).
- Horton, I., Beginning Java 2.
- Horstmann, K. Big Java, Wiley.
- Horstmann, C. S., Cornell, G., Core Java, Prentice Hall.
- Eckel, B., Thinking in Java, Prentice Hall, 2nd Edition.
- Naughton, P., Java Handbook, Osborne.
- Burns, J., Javascript Goodies, Earthweb press.
- Kathy Sierra and Bert Bates, SCJP Sun Certified Programmer for Java.
- Cay S. Horstmann, Java 8 for the Really Impatient.
- Brian Goetz and Tim Peierls, Java Concurrency in Practice.
- Kathy Sierra and Bert Bates, Head First Java, 2nd Edition.
- Joshua Bloch, Effective Java, 2nd Edition.
- Craig Walls, Spring in Action, 4th edition.
- Christian Bauer and Gavin King, Java Persistence with Hibernate.
- Bear Bibeault and Yehuda Katz, jQuery in Action.
- Eric Freeman and Bert Bates, Head First Design Patterns.
- Erich Gamma and Richard Helm, Design Patterns: Elements of Reusable Object-Oriented Software.
- Robert C. Martin, Clean Code: A Handbook of Agile Software Craftsmanship.
- Robert Sedgewick and Kevin Wayne, Algorithms, 4th Edition.
- Narasimha Karumanchi, Data Structures and algorithms Made Easy in Java, 2nd edition.
- Jon Bentley, Programming Pearls, 2nd Edition.
- Yegor Bugayenko, Elegant Objects (Vol. 1).

Teaching and Learning Methods

Activity Semester workload
Lectures 39 hours
Laboratory Exercises 26 hours
Personal study 56 hours
Mid-term exam 1 hour
Final exams 3 hours
Course total 125 hours (5 ECTS)

Student Performance Evaluation

Written examinations (70%) which includes:

- Multiple choice questions.
- Short-answer questions.
- Problem solving.

Laboratory examination (30%) which includes:

- 3 programming projects.
- Oral examination.

Language of Instruction and Examinations

Greek, English (for Erasmus students)

Delivery Mode

 Face-to-face