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.

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.

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)

Mike Redlich

Michael Redlich is a Senior Research Technician at ExxonMobil Research & Engineering in Clinton, New Jersey (views are his own) with experience in developing custom scientific laboratory and web applications. 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.

Mike's technical expertise includes object-oriented design and analysis, relational database design and development, computer security, C/C++, Java, Python, and other programming/scripting languages. His latest passions include MicroProfile, Jakarta EE, Helidon, Micronuat and MongoDB.

Mike also serves as a Java community news editor for InfoQ and has co-authored nine (9) articles with Barry Burd for Java Boutique (now jGuru). He has presented at venues such as Oracle Code One, Emerging Technologies for the Enterprise (ETE), Trenton Computer Festival (TCF), TCF IT Professional Conference, Capital District Java Developers Network and Princeton Java Users Group.

Mike has been a member of the Amateur Computer Group of New Jersey (ACGNJ) since 1996 and currently serves on the Board of Directors as Past President. He founded the ACGNJ Java Users Group in 2001 and has been co-facilitating the group with Barry Burd.

Mike holds a Bachelor of Science in Computer Science from Rutgers University.

He is a member of Toastmasters International and is also involved in volunteer efforts such as United Way of Hunterdon County. Mike makes his home in Flemington, New Jersey with his lovely wife, Rowena, where they spend quality time cycling/running and traveling to New Orleans, Louisiana and Newport, Rhode Island throughout the year.

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.