—- data course —-
Number: 4010
Title: Object-Oriented Programming
English Title: Advanced Programming
Level: MicroMaster
Field: Software Engineering
Units: 3
Type: Theoretical
Category: Specialized
Priority: 3
Prerequisite: Objective
Co-requisite: –
Image: java.png
ID: 4010
Instructor: Education
Term: Summer 2025
Schedule: Sunday and Tuesday 16:00-17:30
General Objective
This course teaches object-oriented programming concepts using the Java programming language. It covers Java's intrinsic features, programming capabilities, differences from similar languages, concurrent programming, and software quality. Students are expected to be familiar with a programming language like Python and basic problem-solving techniques. The course emphasizes object-oriented concepts.
Topics
Introduction to Java (1 session)
History
Java language features
First Java program
Basic Java Programming (3 sessions)
Introduction to OOP Design (2 sessions)
Evolution of programming paradigms
Basic OOP concepts
Object-oriented thinking and design
Encapsulation, interfaces, classes, packages, access modifiers
OOP in Java (6 sessions)
Class definitions
Objects in memory and memory management
Object initialization and destruction
Garbage Collector
Parameter passing in Java vs other languages
Constructors
'this' keyword
Static members
Packages
Introduction to UML Class Diagrams
Inheritance (2 sessions)
Inheritance concepts
Protected, abstract, super keywords
Multiple inheritance in other languages
Polymorphism (1 session)
Interfaces (1 session)
Software Testing (1 session)
Software quality assurance
Unit testing with JUnit
Testing exceptions with JUnit
Mocking concepts and libraries
Design Patterns (1 session)
Software design patterns overview
GoF patterns classification
Singleton, State, Strategy, Observer, Facade patterns
MVC architectural pattern
Code Refactoring (2 sessions)
Clean code principles
Code smells
Refactoring patterns:
Exception Handling (2 sessions)
Traditional error handling
Java's exception framework
Benefits of the model
Finally, Runtime Exception
Generics (1 session)
Generic methods and classes
Applications
Creating and using generic classes
Generics and inheritance
Comparison with C++ templates
Collections Framework (2 sessions)
Java data structures
Collections, ArrayList, LinkedList, Set, Map
Iterators
Files, Streams and Networking (2 sessions)
Concurrent Programming (1 session)
Reflection (1 session)
RTTI needs
Java RTTI implementation
Applications
Advanced Topics (1 session)
Assessment
References
P. Deitel, H. Deitel. Java: How to Program. 11th Edition, Pearson Education, 2017.
B. Eckel. Thinking in Java. 4th Edition, Prentice Hall, 2006.
M. Fowler, K. Beck, J. Brant, W. Opdyke, D. Roberts. Refactoring: Improving the Design of Existing Code. Addison-Wesley, 1999.