Introduction to OOP course
Course Objective
Our aim is to introduce students to Object-Oriented Programming and Modeling for the design of robust systems within the modern industrial landscape.
For a future engineer, the ability to model a system by abstracting, categorizing, and defining the interactions between components before any code is written is a critical skill
Students need OOP because it provides a mental framework for managing complexity. By treating data and behavior as a single unit (the object), students learn to build software that mirrors real-world entities, making the logic more intuitive and the system more resilient to change.
Prerequisite
Before taking this course, you should have a solid foundation in basic programming and algorithmic thinking, including control structures (loops, conditionals) and problem-solving logic. While Java experience isn't strictly required, you should know how to write and execute code in at least one language. Additionally, a basic familiarity with modeling concepts like sketching out workflows or system structures is essential to help you easily transition into Object-Oriented Programming (OOP) and UML design.
Plan
This course is structured to provide a comprehensive path through the world of Object-Oriented Programming, catering to both beginners and seasoned developers:
Chapter 1: Introduction to Java
We lay the foundation by introducing the Java platform and its core architecture. Students will gain a fundamental understanding of the Java ecosystem and the framework that enables cross-platform development.
Chapter 2: Core Concepts of OOP
This chapter explores the Object-Oriented Programming paradigm. Students will transition from theory to practice, mastering essential building blocks like inheritance, interfaces, encapsulation, and constructors.
Chapter 3: Java Syntax and Logic
We focus on the mechanics of the Java language. Students will gain the technical proficiency to utilize variables, operators, and control structures to build functional program logic.
Chapter 4: Introduction to UML
Students will delve into the Unified Modeling Language (UML) for system blueprinting. The course covers the basic building blocks and mechanisms necessary for professional architectural modeling.
Chapter 5: Behavioral Modeling: Use Case Diagrams
This chapter introduces Use Case diagrams for capturing system requirements. Students will learn to model actors and define a system's functional scope from an external perspective.
Chapter 6: Structural Modeling: Class Diagrams
We examine the Class Diagram, the most critical structural tool in UML. Students will learn to visualize the static relationships, attributes, and behaviors that form the backbone of an OOP system.
Chapter 7: Behavioral Modeling: Sequence Diagrams
The final chapter introduces Sequence Diagrams for dynamic modeling. It explores how objects communicate over time to fulfill specific system tasks and workflows.
Bibliography
[1] Cay S. Horstmann. Core Java: Fundamentals (Vol. 1, 12th ed.). Pearson, 2023.
[2] Herbert Schildt. Java: The Complete Reference (12th ed.). McGraw Hill, 2021.
[3] Kathy Sierra, Bert Bates, and Trisha Gee. Head First Java (3rd ed.). O'Reilly Media, 2022.
[4] Harold Abelson and Gerald Jay Sussman. Structure and Interpretation of Computer Programs (2nd ed.). MIT Press, 1996.
[5] Grady Booch, Robert A. Maksimchuk, Michael W. Engle, Bobbi J. Young, Jim Conallen, and Kelli A. Houston. Object-Oriented Analysis and Design with Applications (3rd ed.). Addison-Wesley Professional, 2007.
[6] Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1994.
[7] James Rumbaugh, Ivar Jacobson, and Grady Booch. The Unified Modeling Language Reference Manual (2nd ed.). Addison-Wesley Professional, 2004.
[8] Martin Fowler. UML Distilled: A Brief Guide to the Standard Object Modeling Language (3rd ed.). Addison-Wesley Professional, 2004.
[9] Russ Miles and Kim Hamilton. Learning UML 2.0. O'Reilly Media, 2006.
[10] Tom Pender. UML Bible. Wiley Publishing, Inc., 2003.
[11] Martina Seidl, Marion Scholz, Christian Huemer, and Gerti Kappel. UML @ Classroom: An Introduction to Object-Oriented Modeling. Springer, 2015.
[12] Alistair Cockburn. Writing Effective Use Cases. Addison-Wesley Professional, 2001.
Webography
[13] Oracle Corporation. The Java Tutorials: About the Java Technology. Available at: https://docs.oracle.com/javase/tutorial/getStarted/intro/definition.html (n.d.).
[14] Baeldung. The JVM Architecture Explained. Available at: https://www.baeldung.com/jvm-architecture, 2024.
[15] OpenJDK Project. OpenJDK: The Place to Collaborate on an Open-source Implementation of the Java SE Platform. Available at: https://openjdk.org/ (n.d.).
[16] Computerphile. Object Oriented Programming. Available at:
[17] Ada Computer Science. Object-oriented programming. Available at: https://adacomputerscience.org/topics/object_oriented_programming (n.d.).
[18] Java Language Specification (JLS). Types, Values, and Variables. Available at: https://docs.oracle.com/javase/specs/jls/se21/html/jls-4.html, 2024.
[19] Exercism. The Java Track: Basics. Available at: https://exercism.org/tracks/java (n.d.).
[20] W3Schools. Java Tutorial. Available at: https://www.w3schools.com/java/ (n.d.).
[21] Educative. OOP Design Confidential. Available at: https://www.educative.io/blog/object-oriented-programming (n.d.).
