|Object-oriented Programming II|
|Title: ||Object-oriented Programming II|
|Lesson Code: ||321-3652|
|Theory Hours: ||3|
|Lab Hours: ||2|
|Faculty: ||Kambourakis Georgios|
- 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.
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.
- 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.
- 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).
|Learning Activities and Teaching Methods |
Written examinations (70%) which includes:
- Multiple choice questions.
- Short-answer questions.
- Problem solving.
Laboratory examination (30%) which includes:
- 3 programming projects.
- Oral examination.
|Assessment/Grading Methods |
||125 hours (5 ECTS)
|Language of Instruction|
|Greek, English (for Erasmus students)|
|Μode of delivery |