OOP University @ TCF

featuring talks on the Java and Python programming languages presented by Mike Redlich and Chuck Knight

Java and Python Logo

Object-Oriented Programming (OOP) is a programming paradigm that models real-world objects. The most well-known and widely-used OOP languages are C++ and Java, but some languages, such as Simula-67, were around much earlier. The advantages of OOP over structured programming include modularity and code re-use. As OOP has evolved over the years, things like design patterns and design principles have guided developers to write applications that are more adaptable to modification.

This presentation will provide an introduction to OOP, its basic attributes (encapsulation, abstraction, inheritance, and polymorphism), the class mechanism, and some design principles that have led to the development of design patterns. Example Java source code will be reviewed to demonstrate the features of OOP and design principles.

Slide Deck

Java is an object-oriented programming (OOP) language created by James Gosling at Sun Microsystems that was first introduced to developers in 1995. It is one of the most popular programming languages for client/server web applications and there are many scripting languages (Clojure, Groovy) that seamlessly interact with Java. Much of Java’s language syntax was derived from the C++, but as James Gosling once stated, “Java is C++ without guns, knives, and clubs.”

This presentation will provide an introduction to the Java programming language, provide a brief overview, how to get started, review some Java keywords, introduce the Java class mechanism, and review a small, working Java application. The example Java application will demonstrate how the attributes of OOP are utilized within Java classes.

Slide Deck

Python is a very powerful programming language used in a variety of engineering and scientific settings. Its popularity has spread in recent years mainly due to its ease of use and large collection of support libraries.

This presentation will provide a gentle introduction to the language using a hands on, demonstrative approach. By the end of this talk, attendees should know how to get started with writing simple scripts in Python, and have a general understanding of the Python ecosystem.

Object-Oriented Programming is a widely used concept to write powerful applications in many languages.

This presentation will provide the basics of Object-Oriented Programming in Python: exploring classes, objects, instance methods, attributes and much more!

Design patterns are recurring solutions to software design problems that are repeatedly found in real-world application development. Design patterns are about design and interaction of objects, as well as providing a communication platform concerning elegant, reusable solutions to commonly encountered programming challenges.

The most widely recognized book on design patterns, “Design Patterns – Elements of Reusable Object-Oriented Software,” written by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, affectionately known as the “Gang-of-Four” (GoF), defined 23 design patterns and classified them into three categories: creational (abstracts the instantiation process), structural (groups objects into larger structures), and behavioral (defines better communication among objects).

This presentation will provide an introduction to design patterns followed by an overview of three design patterns, one from each category, including a description of the pattern, how and why it is used, and a source code review of a small application using the pattern:

Factory Method (creational category)
Decorator (structural category)
Observer (behavioral category)

Slide Deck

Mike Redlich

Michael Redlich has been an active member within the Java community for the past 25 years. He founded the Garden State Java User Group (formerly the ACGNJ Java Users Group) in 2001 where he serves as one of the directors. Since 2016, Mike has served as a Java community news editor for InfoQ where his contributions include the weekly Java news roundup, news items, technical articles and technical reviews from external authors. He is currently the lead Java Queue editor. Mike has joined Payara as a contract Developer Advocate and Technical Writer in the summer of 2023.

He has presented at conferences such as Oracle Code One, JCON World, Emerging Technologies for the Enterprise, Trenton Computer Festival (TCF), TCF IT Professional Conference and numerous Java User Groups. Mike serves as a committer to the Jakarta NoSQL and Jakarta Data specifications and the Eclipse JNoSQL project. He also participates on the leadership council of the Jakarta EE Ambassadors. Mike was named a Java Champion in April 2023.

Mike retired from ExxonMobil Technology & Engineering in June 2023 with 33½ years of service. His experience included developing custom scientific laboratory and web applications, polymer physics, chemometrics, infrared spectroscopy and automotive testing. He also has experience as a Technical Support Engineer at Ai-Logix, Inc. (now AudioCodes) where he provided technical support and developed telephony applications for customers.

Chuck Knight

Chuck Knight has been working in the IT industry for 37 years; the last 20 years with ExxonMobil (views are his own). He has spent his career working on various scientific and high performance computing platforms for applications including NASA's space shuttle thermal analysis, reservoir simulations and seismic imaging, as well as many other proprietary and commercialized efforts.

Chuck is currently the Software Engineering Advisor for the Scientific Computing team at ExxonMobil's Corporate Research Center. He obtained his Bachelor of Science from Michigan State University, and his Master of Science from the University of Houston, both in Computer Science, and an MBA.