ΕΠΛ133: Αντικειμενοστρεφής Προγραμματισμός

Πρόγραμμα Μαθημάτων

Πρόγραμμα Μαθημάτων »

Tentative Program:
Week 1:
Lecture 1: Introduction to Object Oriented Programming. Notes
Learning outcome:
  • Introduction to EPL133
  • Object-oriented Programming: Introduction and History.
  • The Java programming language.
Readings:
  • Review EPL131 material.
  • Chapter 1. "Absolute Java", Walter Savitch.
Precept: Leap Year calculation
Learning outcome: Introduction to the object-oriented approach in problem solving.
Lecture 2: Introduction to the Java programming platform. Problem definition. Well-defined problems.
Learning outcome: Become familiar with:
  • The Java platform.
  • Interpretation vs. Compilation of computer programs.
  • Τhe Java Virtual Machine (JVM) and Bytecodes.
  • The lifecycle of a Java program.
  • The concept of well-defined problems and proper problem definition.
Readings: Chapter 1. "Absolute Java", Walter Savitch.
Lab 1: Java programming review.
Learning outcome: Review the process of compiling and executing Java programs.
Week 2:
Lecture 3: Problem Solving and Abstraction.
Learning outcomes: Understand the concept of abstraction, hierarchy and data abstraction. Understand how abstraction is used to manage complexity. Understand the concepts of objects and classes. Understand the notions of object properties (fields), object behaviors (methods), object id (handle),.
Readings: Chapter 4, Savitch.
Lab 2: Designing classes.
Learning outcome: Understand how to define classes in Java.
Precept: Review of laboratory problem sets.
Learning outcome: Review and analyse the solutions of the problem sets examined in Labs 1, 2, 3.
Readings and References:
Lecture 4: Introduction to Java Class Design.
Learning outcomes: Understand the concept of abstraction, hierarchy and data abstraction. Understand how abstraction is used to manage complexity. Understand the concepts of objects and classes. Understand the notions of object properties (fields), object behaviors (methods), object id (handle),.
Readings: Chapter 4, Savitch.
Lab 3: Style and comments. Javadoc.
Learning outcomes: Java coding standards and Javadoc style comments.
Week 3:
Lecture 5: Introduction to Java Class Design. Learning outcomes: Master the key concepts of abstraction in object-oriented programming and Java. Methods in Java, method parameters and arguments. Method invocation and call-by-value argument passing. The parameter "this", Overloading and Constructors. Javadoc, comments and documentation. Introduction to invariants. Readings:
  • Chapter 4. "Absolute Java", Walter Savitch.
Lab 4: Designing classes. Learning outcomes: Modelling an n-sided regular polygon and a linear equation system.
Precept: Review of laboratory problem sets.
Learning outcome: Review and analyse the solutions of the problem sets examined in Labs 1, 2, 3.
Readings and References:
Lecture 6: Memory Allocation and Management. Learning outcome: Understand the concept of memory allocation and the organization of virtual memory. Learn the basic concepts of memory management, the stack, and the heap. Introduction to garbage collection.
Readings:
Lab 5: Designing Java Classes.
Learning outcomes:
Week 4:
Lab 6: Strings in Java. Learning outcomes: String Pool in Java
Lecture 6: Advanced Class Design in Java. Learning outcome: Understand the concept of static variables and static methods in Java. Review the sequence of initializations. More on garbage collection in Java. Introduction to the concept of Class Parameters and their significance. Gain an understanding of the concept of invariants and class invariants. Readings: Chapter 5. "Absolute Java", Walter Savitch.
Lab 7: JUnit
Learning outcomes: How to write unit test in Java.
Lecture 7: Advanced Class Design in Java. Java packages. Learning outcome: Expand on the notion of class invariants. Applying class invariants in constructors and methods. Expand on encapsulation and information hiding through copy constructors and the concept of privacy leakage, mutable and immutable classes. Introduction to Java libraries, packages and code re-use in Java. Readings: Chapter 5. "Absolute Java", Walter Savitch.
Week 5:
Quiz: Quiz 1
Precept: Review of Quiz1 problem sets.
Learning outcome: Implementing a Date class in Java. discussion about Strings in Java 8.
Lab 8: Garbage Collector
Learning outcomes: Garbage colloctor by examples. How to compile using -claspath (-cp) option
Lecture 8: Problem Solving Methodologies. Learning outcome: Introduction to state-space representation and problem formulation. Introduction to Analysis Methodologies: Project Planning, Requirements Analysis, Specification, Development and Evolution, Testing.
Readings:
  • Chapter 12. Absolute Java Walter Savitch.
  • Chapter 2. "Object-Oriented Design and Patterns", Cay Horstmann, Wiley, 2nd edition, 2006.
  • UML basics: The class diagram by IBM.
  • CRC Cards by Wikipedia.
Week 6:
Lab 9: UML Designing Tools.
Learning outcomes: How to use the ArgoUML Tool to design class diagrams
Readings and References: ArgoUML
Lecture 9 and Precept: The Object-Oriented Design process. Learning outcome: Introduction to problem formulation. Introduction to Object-oriented thinking in problem solving. Design with Class-Responsibilities-Collaborators cards. Introduction to UML. Formulating a take-away restaurant as an information processing problem.
Readings:
  • Chapter 12. Absolute Java Walter Savitch.
  • Chapter 2. "Object-Oriented Design and Patterns", Cay Horstmann, Wiley, 2nd edition, 2006.
  • UML basics: The class diagram by IBM.
  • CRC Cards by Wikipedia.
Lab 10: Designing classes with UML.
Learning outcomes:
  • Designing UML class diagram.
  • Using CRC cards.
Readings and References:
Lecture 10: The Unified Modeling Language. Learning outcome: Understand and gain working knowledge of UML: class diagrams, class relations,
Readings:
  • Chapter 12. Absolute Java Walter Savitch.
  • Chapter 2. "Object-Oriented Design and Patterns", Cay Horstmann, Wiley, 2nd edition, 2006.
  • UML basics: The class diagram by IBM.
  • CRC Cards by Wikipedia.
Week 7:
Lecture 11 and Precept: Inheritance.
Learning outcome: Introduction to class re-use through composition and inheritance. Introduction to inheritance as an abstraction and programming technique. Develop an understanding of the relation between inheritance and class hierarchy. Explore how object construction works in the case of inherited classes. Final classes.
Readings: Chapter 7. Absolute Java Walter Savitch.
Lab 11: Inheritance.
Learning outcomes: Exercises on inheritance, The right way to define equals().
Readings and References:
Lecture 12: Inheritance continued.
Learning outcome: Explore the notion of Upcasting, overriding and downcasting. Introduction to enumerated classes. The Object and its methods.
Readings: Chapter 7. Absolute Java Walter Savitch.
Week 8:
Lab 12: Inheritance.
Learning outcomes: Designing UML class diagrams with inheritance.
Readings and References:
Lecture 13 and Precept: Polymorphism. Learning outcome: Introduction to the concept of binding. In depth understanding of polymorphism. Polymorphism and Static methods: Overriding vs. Hiding. Polymorphism and Constructors. Pitfalls of upcasting vs. downcasting.
Readings: Chapter 8. Absolute Java Walter Savitch.
Lab 13: Polymorphism.
Learning outcomes: Polymorphic behavior via method overriding.
Readings and References:
Lecture 14: Abstract Classes and Interfaces. Learning outcome: Introduction to Abstract Classes. Introduction to Java Interfaces. Learn how to use Interfaces to write general code. Interface constants. Multiple inheritance and Java. Readings: Chapters 8.2, 13.1. Absolute Java Walter Savitch.
Week 9:
Lab 14: Polymorphism, Abstract classes.
Learning outcomes: Polymorphic behavior via abstract class. Polymorphic copy.
Lecture 15 and Precept: Interfaces. Learning outcome: Review the concept and grammer of Interfaces. Using Interfaces to write generic code. Introduction to the concept of multiple inheritance. Explore the definition of classes that implement Multiple Interfaces. Dealing with Interface evolution with default methods. Understand the Cloneable Interface. Design patterns for "polymorphic" behavior: adapter and strategy. Readings: Chapters 13.1, 13.2 Absolute Java Walter Savitch.
Lab 15: Interfaces and Inheritance. Learning outcomes: Design interfaces, implement inheritance.
Lecture 16: Inner Classes. Learning outcome: Introduction to the concept of Inner Classes. Inner Classes and Polymorphism. Readings: Chapter 13.2, 13.3. Absolute Java Walter Savitch.
Week 10:
Lab 16: Interfaces and Abstract Classes.
Learning outcomes: Implementing polymorphism with Interfaces and Abstract Classes
Readings and References:
Midterm:
Quiz: Quiz 2.
Lecture 17: Advanced Inner Classes.
Learning outcome: Explore Nested (Static) and Anonymous Inner Classes. Introduction to the Design Factory Design Pattern. Understand the concepts of Closures and Callbacks. Explore the implementation of callbacks through Inner Classes in Java. Introcuction to Event-driven Programming and Application Frameworks.
Readings:
  • Chapter 13.2, 13.3. Absolute Java Walter Savitch.
  • Chapter 11. Thinking in Java. 4th Edition Bruce Eckel.
Week 11:
Lab 17: Interfaces and Abstract Classes.
Learning outcomes: Using interfaces and abstract classes to model real life objects.
Lecture 18 and Precept: Exceptions.
Learning outcome: Introduction to the concept of Exceptions and Exception Handling in Java.
Readings: Chapter 19. Absolute Java Walter Savitch.
Lab 18: Exceptions.
Learning outcomes: Using exceptions, make your own exception classes.
Readings and References:
Lecture 19: Simple Lists in Java and the ArrayList Class. Learning outcome: Introduction to the ArrayList class. Introduction to the Basics of Generic classes. Readings: Chapter 14.1. Absolute Java Walter Savitch.
Week 12:
Lab 19: Streams.
Learning outcomes: Using streams in Java. Byte Streams, Character Streams.
Readings and References:
Lecture 20: Generics. Learning outcome:Understand Generic Classes and Methods and their use. Readings: Chapter 14.2. Absolute Java Walter Savitch.
Precept: Review of Midterm exam and solutions.
Lab 20: Generics.
Learning outcomes: How to use generics. Implement generic classes with inheritance.
Lecture 21: Linked Data Structures: linked-lists. Learning outcome: Introduction and overview of linked data structures in Java. Develop experience with linked-list data structures and their properties. Iterators. Readings: Chapter 15.1, 15.2, 15.3 Absolute Java Walter Savitch.
Week 13:
Lab: Linked Data Structures.
Learning outcomes: Exposure to Linked lists and link-list programming.
Readings and References:
Lecture 22 and Precept: Linked Data Structures: linked-list variations, hashing, sets and trees.
Learning outcomes: Introduction to and review of Linked Lists and Hashtables, Sets and Trees.
Readings and References: Chapter 15.4, 15.5, 15.6, 15.7. Absolute Java Walter Savitch.
Lab 22: Collections.
Lecture 23: Java Collections, Maps and Iterators.
Learning outcomes: Learn how Java supports Collections, Maps and Iterators.
Readings and References: Chapter 16. Absolute Java Walter Savitch.
End of class.