3.1 Learning Java

The following sections assume a basic working knowledge of the Java language and Object-Oriented programming (OOP) methodology. To learn more about Java, there are many excellent tutorials on Youtube, Code Academy, and Learn Java Online.

3.2 Learning HAL

The best way to learn HAL is to browse the “Examples” or “LEARN_HERE” folders. The first contains several in depth full models and the second gives detail on implementation of specific components (agents, grids, etc). Alternatively, several tutorials are posted to YouTube:

3.3 Source Code Organization

Examples

This folder contains models that utilize a full range of HAL’s features, including off-lattice and on-lattice agents, PDE solvers, UI visualization components, and more.

LEARN_HERE

This folder contains smaller examples that highlight specific framework components with clarity.

Framework

This folder contains all the components of the source code of HAL. In general, these files should not be changed or altered. Descriptions of the 7 subsections contained within the framework folder are detailed below.

3.4 Components of HAL

GridsAndAgents
Contains all of the Agent and Grid types that the framework supports. There are 2D and 3D, stackable and unstackable, on-lattice and off-lattice agents and grids to contain them. The base classes that the grids and agents extend are also in this folder.
Gui
Contains the main UIWindow class, as well as many component classes that can be added to the UI.
Tools
Contains many useful tool classes, such as a FileIO wrapper, a genetic algorithm class, a multiwell experiment runner, etc. as well as a Util class that is a container of generic static methods. It also contains classes that are used internally by these tools.
Interfaces
Contains interfaces that are used by the framework internally. It is useful to reference this folder if a framework function takes a function interface argument, or implements an interface.
Lib
Contains outside libraries that have been integrated with the framework.
Util
Utility functions such as color functions, array functions, cellular automata neighborhood functions, and math functions.
Rand
Contains functions used to generates random numbers from various distributions.
Testing
Contains unit tests for many of HAL’s components