Why?

There are two things that you need to learn to be successful in creating software. The first one is usually a language, a programming language, the second one design. 👀 No, I am not talking about graphics design. I am talking about engineering design.

Your goal when creating software is…


Photo by Max Duzij on Unsplash

Agile development is the ability to develop software quickly in the face of rapidly changing requirements. Agility is achieved by:

  • following practices that provide the discipline and feedback needed,
  • writing clean code, and
  • using design principles that keep our software flexible and maintainable; further, when required, applying design patterns to…


Photo by Chaitanya Tvs on Unsplash

Big O notation describes the complexity of an algorithm as a function of the size of an input. Complexity can be about performance (runtime complexity) or space (amount of memory used).

Big O is an asymptotic notation for the worst case or the ceiling of growth for a given function…


Deep Learning for Java is a library that provides support for many of the algorithms associated with deep learning, including neural networks 🙂. Let us review the primary tasks for creating, training, and running a neural network using DeepLearning4J.

Scenario

Let us work with an example that we reviewed before: a…


One of the most powerful and widely used artificial-intelligence approaches is called neural networks. But, What exactly are they? And, How they work? Let me explain it in plain English.

What is a Neural Network?

A neural network is a collection of connected nodes called neurons.

What is a Neuron?

A neuron is a node that has one or…


Let us talk about structural design patterns. Patterns help us to connect classes and objects in order to form larger structures. Decorator is one pattern in the structural category.

Goal

The Decorator pattern allows extending (decorating) the functionality of an object. It is an alternative to inheritance. Decorator provides new functionality…


Affective Computing is all about computers understanding human emotions. By computer I mean a robot, your car, your laptop, or even your phone. And, you could be thinking: Why we want computers to be able to do that? How computers could be able to do it? Two very important questions…


A recurrent question that my students ask is about the difference, if any, between a Factory and a Builder, in terms of the software design patterns with these names. …


Creational design patterns provide options for object creation (instantiation of a class ) because sometimes, the basic form of object creation could result in design problems or in added complexity to the design. Creational design patterns solve this problem by somehow controlling this object creation. They are composed of two…


Starting with Java 8, we can enhance our Java code solutions with functional approaches. But. what exactly does Java provide? Let’s take a look.

What is functional programming?

Functional programming is a programming paradigm where the focus is on “what to solve” in contrast to a procedural paradigm where the main focus is “how…

Javier Gonzalez

Software Engineer. Teaching Professor. Intelligent Systems, Emotion AI, CS Education. ACM Distinguished Speaker

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store