Towards Byte Code Genetic Programming 1

Size: px
Start display at page:

Download "Towards Byte Code Genetic Programming 1"

Transcription

1 CATEGORY: Genetic Programming Towards Byte Code Genetic Programming 1 Brad Harvey James A. Foster Deborah Frincke Compaq/Tandem Division Computer Science Dept. Computer Science Dept Tandem Bl. University of Idaho University of Idaho Austin, Texas Moscow, Idaho Moscow, Idaho brad.harvey@compaq.com foster@cs.uidaho.edu frincke@cs.uidaho.edu (512) (208) (208) ABSTRACT This paper uses the GP paradigm to evolve linear genotypes (individuals) that consist of Java byte code. Our prototype GP system is implemented in Java using a standard Java development kit (JDK). The evolutionary process is done completely in memory and the fitness of individuals is determined by directly executing them in the Java Virtual Machine (JVM). We validate our approach by solving a functional regression problem with a fourth degree polynomial, and a classification problem diagnosing thyroid disease. Our implementation provides a fast, effective means for evolving native machine code for the JVM. 1. Introduction An increasing number of software vendors are including Java, or Java-based components, as strategic parts of their systems. For example, the leading browser vendors (Microsoft, Netscape, and Sun) support Java applets. The leading database vendors (Oracle, IBM, Tandem, Informix, etc.) are collaborating on standards for embedding SQL in Java and Java within the database engine. A leading smart card vendor (Schlumberger) offers a subset of the Java operating environment on their smart card so that smart card application developers can develop applications using standard Java development tools. Numerous other vendors in more non-traditional computing environments (e.g., embedded devices or real-time operating systems) are in the process of supporting the Java environment. One drawback of using Java for time critical applications is performance. Java programs are slower than conventional compiled programs because a software virtual processor executes them. However, with just-in-time (JIT) compilers, adaptive compilers, and with the possible future option of having at least part of the JVM execution engine implemented in hardware [McGhan and O'Connor, 1998], this performance gap will only shrink. Genetic Programming (GP) has proven to be a very powerful paradigm for solving diverse problems from a variety of different domains, including regression problems, robot control, hardware design, and protein segment classification. Therefore, because of Java's rapid success as operating environment and because of the power of GP, we explore using GP to directly evolve Java byte code in the context of a standard Java environment. Our work was initially inspired by Nordin's [1994] use of GP to evolve RISC machine code. We, along other researchers, are exploring byte code GP [Harvey, et al., 1998][Klanhold, et al., 1998][Lukschandl, et al., 1998]. The remainder of this paper is structured as follows. Section 2 provides background on the JVM. Section 3 discusses related work. Section 4 discusses our work. Section 5 provides experimental results. And Section 6 concludes the paper. 1 The basis for this paper appeared in the late breaking papers of GP-98. 1

2 2. Background The JVM [Lindholm and Yellin, 1996] executes a program that is contained in a set of class files. A class file is a stream of bytes, conceptually similar to an executable a.out file in UNIX. For example, it contains a magic number, versioning information, a constant pool which is similar to a symbol table, and for each method in the class the JVM instructions which constitute the method. There is a 1-1 relationship between a Java class in a Java source file and a binary class file. Multiple Java classes can reside in a single source file, but each Java class has its own binary class file after its been compiled. Normally class files are created using a Java compiler (e.g., javac). However, the class file is not dependent on the Java language. In other words, other tools or language compilers not related to Java could generate class files that are executed by the JVM runtime system, assuming they are valid with respect to the JVM specification. The JVM execution engine is a stack based virtual processor containing an instruction set of about 150+ instructions, most of which are low-level instructions similar to those found in an actual hardware processor. Most instructions are a single byte, so it does not a have a fixed instruction format like a RISC processor. The JVM does not contain a set of explicit general-purpose registers like most conventional processors. The JVM supports the notion of separate threads of execution. Each thread has its own program counter and stack for state related purposes. Each call in the context of a thread generates a new stack frame on the thread's stack. Each stack frame contains local variables, an operand stack, and other state related information. In many ways, the local variables serve the same purpose as registers (e.g., they contain the method's parameter values). The operand stack is used by the JVM instructions as a stack based scratch pad. For example, the floating point instruction (fadd) pops two values from the operand stack, adds their values, and pushes the result back on the operand stack. Each method's maximum operand stack size is determined at compile time. The JVM loads and links classes using symbolic references dynamically at runtime. The JVM contains a system class loader that knows the details of loading classes from the local file system. However, applications that load classes from other sources provide their own version of the class loader. For example, a Java enabled browser contains a class loader that knows how to load applets over the network from a URL. 3. Related Work 3.1 Automatic Induction of Machine Code with GP (AIMGP) The main motivation for AIMGP [Nordin, 1994] (initially referred to as CGPS for Compiling GP System ) is performance and a compact representation scheme. AIMGP departs from using tree-structured individuals [Koza, 1992], and instead represents them as linear bit strings that represent actual machine code. It takes advantage of the common von Neumann architecture in which a program and its data reside in the same memory space, enabling a program to manipulate it self as it would data. While the individuals of the evolutionary process are represented as machine code, the GP kernel including the genetic operators is written in C. The system has been implemented on Sun SPARC workstations, which are register-based machines with a 32-bit instruction size format. Nordin and his colleagues have recently released a commercial implementation of AIMGP technology for Pentium machine code, known as Discipulus. The benefits of the AIMGP approach compared to the conventional GP approach are: Execution speed - no interpretation. For example, an individual's fitness is computed by directly executing machine code. Indications are that this speed-up is between times compared to the tree-structured Lisp approach. Compact GP kernel (30KB) - A Lisp interpreter is not required. Compact representation - A single 32-bit instruction of the SPARC is able to represent four nodes in a conventional approach (operator, two operands, and result). Simple memory management - Due to the linear structure of the binary machine code. 3.2 Java Bytecode GP (JBGP) The initial objectives for JBGP [Lukschandl, et al., 1998] are to use a standard Java environment for the evolution of byte code and to master the difficulties encountered interacting with the Java verifier and class loader. In JBGP s representation scheme the genotype and phenotype are not the same structure. They are both linear in nature and contain byte code, but the genotype contains additional information to aid the genetic operators in their production of valid byte code with respect to stack depth and branch addresses. The genotype structure contains an individual s maximum stack depth and an array of Instruction structures. An Instruction structure contains additional information per byte code instruction such as number of pushes and pops, local maximum stack depth, branch offset, and an array of bytes that represents the actual byte code for a JVM instruction. The phenotype structure consists purely of Java byte code. Initially a population consists of an array of individuals in their genotype format. In order to evaluate the fitness of a population, it is transformed into a Java class file. A class file is created with each individual in the population being represented by its phenotype structure as a Java 2

3 method. This process involves copying and concatenating the byte code that resides in each Instruction data structure into the class area. Once the class has been constructed it is loaded into the JVM using a class loader such that each individual s fitness can be computed by calling it as a Java method. JBGP supports crossover and mutation as well as fitness proportional and ranking selection. JBGP is implemented using the Java development environment from Symantec called Visual Café. 3.3 Java Bytecode Program optimization with Evolutionary Techniques (JAPHET) The motivations for JAPHET [Klanhold, et al., 1998] are: the platform independence of the JVM with respect to the evolution of JVM machine code, the object oriented aspect of the byte code which can be used to evolve complex structures, and the fact that other high-level languages can be compiled to byte code (e.g., Ada). In JAPHET the representation schema is a linear genotype in which an individual is represented as a set of Java classes. In this scheme, each class file has a dynamic part and a static part. The dynamic part of the class file is affected by the genetic operators while the static part is not. The dynamic part of the class file contains the methods of the class file. The static part contains class file fields such as version information, the constant pool, etc. The initial class file used to build-up individuals during generation zero is supplied by the user. The system extends this class file as it adds byte code to its methods. JAPHET supports several crossover operators and the mutation operator along with fitness proportional, rank and tournament selection. JAPHET is written in Java. 4. bcgp Like other researchers, our initial work with byte code GP has been to understand the issues of evolving Java byte code in the context of a standard Java environment. This is in contrast to other possible approaches such as building a custom JVM, modifying a JVM, or using native methods to facilitate the GP process. We call our system bcgp for byte code GP, and we have experimented with it on problems of symbolic regression and classification. The initial goals for our work are: Use of a standard Java development environment (Sun's JDK 1.1). Create a prototype GP system written in Java that evolves individuals that consist of Java byte code. Support direct execution of these individuals in the context of the standard JVM. Enable the evolutionary process to occur completely in memory. 4.1 Representation The representation scheme used by bcgp is as follows. Each generation of a run is represented by its own in memory, dynamically created Java class file with a method in it for each individual in the population. An individual under this scheme is a linear genotype consisting of Java byte code. There is no special phenotype representation in this scheme. The representation of an individual is similar to the one used in AIMPG [Nordin, 1994]. Specifically, each individual contains a header, body, footer, and buffer. The header, body, and footer consists of byte code operations which support the terminal and function sets along with additional byte code required to support these sets. Generation classes and methods are created using a naming scheme that logically identifies them. The naming scheme for a class representing a generation is g<run #><gen #>.class where <run #> is a number between 0 and 9 indicating which run this, and where <gen #> is a number between 00 and 99 indicating the generation s number. For example, the generation class g000.class represents generation 0 of run 0. The naming scheme for an individual is f<individual #> where <individual #> is a number between and (2^16-1). For example, if the population size is 100, then each generation class contains a set of functions: f00000 through f While each generation is represented by its own in memory Java class file, only two generations are ever present in memory at a time: the current generation and the next generation. The current generation is the one whose members are undergoing fitness evaluation, selection and reproduction. For a given invocation of the system, each generation class is of the same uniform shape and size. For example, each generation has the same name length, the same number of methods, each method has the same name length, and each method has the same size when its buffer area is taken into account. This results in the following efficiency from a storage and manipulation perspective: two fixed size byte buffers are used to store the current and next generations. The two buffers are represented as a 2 x n array where n is the maximum size of an individual. Since the Java class file represents its methods as a table, the byte offset within a buffer for a given individual can be computed based upon the fixed sizes of the various aspects of the class file. We exploit this ability to index into the buffers representing the current and next generations, since the genetic operators are able to directly manipulate the byte code contained in the methods of the class files. Another aspect of our representation scheme is that the effective size of each individual is stored externally to the genotype (Java method). The effective size of an individual ignores the buffer area at the end of the individual. The sizes are contained in two arrays, which represent the current and next generations. Each array has m elements where m is the population size. Storing such meta-data in auxiliary structures avoids a representation that requires both a genotype and phenotype structure. The underlying Java facilities used to support this representation scheme are: 3

4 The dynamic creation of in memory generation classes with methods initialized to all no-ops uses the JAS class builder package [Meyer and Dowing, 1997]. These classes are sound with respect to the JVM specification. bcgp provides its own class loader that knows how to load these in memory class files. During fitness evaluation, the Java class and reflection facilities (java.lang.class and java.lang.reflect, respectively) are used to find the generation s individuals and then to invoke each individual (Java method). At runtime, these in-memory class files can be written to disk for later incorporation into other applications, or they can be inspected with other Java tools (e.g., javap, which is a class file dissembler). 4.2 Genetic Operators bcgp supports mutation, crossover, and reproduction. In all cases only the byte code representing an individual (excluding its header and footer) is modified. The mutation operator works by randomly changing a byte code operation s opcode and/or its operand values. The mutated op-code is taken from the function set. We used single-point crossover between two individuals of different lengths in order to produce a new individual in the next generation. We also used restrictions (or repair) on crossover to ensure valid byte code individuals, depending upon the JVM byte code. For example, the conditional byte codes such as those used in the classification experiments require that the branch addresses be repaired after crossover. The reproduction operator simply copies an individual from the current generation to the next generation. 4.3 Fitness Evaluation An individual s raw fitness is based on its error rate with respect to the training data. Error rate is defined by the ratio: hits / test cases, which results in a real number between 0 and 1. A hit occurs when an individual provides the correct answer to a specific training case. The more fit an individual, the closer its raw score is to zero. bcgp also supports (via a configurable parameter) augmenting the raw fitness score with the adaptive parsimony pressure method [Zhang and Muhlenbein, 1996][Banzhaf, et al. 1998]. 4.4 Selection Method We have been using k-tournament selection with k being a configurable parameter. 5. Experiments In the following section, we discuss experimental results using bcgp on the problems of symbolic regression and binary classification. 5.1 Symbolic Regression In this experiment bcgp solves the symbolic regression problem for the function: f(x) =x 4 +x 3 +x 2 +x, with a training data set consisting of twenty points in the interval [-1, 1). Table 1 summarizes the GP parameters for this experiment. Parameter Value Function set fadd, fsub, fmul, fdiv Terminal set x (independent variable) Error tolerance 0.01 Runs per experiment 10 Number generations per run 25 Population size 64 Max individual size (bytes) 64 Selection method Tournament (4) Probability of crossover 0.8 Probability of mutation 0.0 Probability of reproduction 0.2 Table 1 - Symbolic Regression Parameters During this experiment the target function is actually found rather than merely being approximated. In all but one run, a successful solution is found. The best-of-all solution from the standpoint of both accuracy and efficiency is found during run 6 generation 10 (individual 54). The byte code for the best-of-all individual (54 of run 6 generation 10) is: fload_0; fload_0; fmul; fload_0; fadd; fload_0; fmul; fload_0; fadd; fload_0; fmul; fload_0; fadd; freturn. 4

5 For comparison, the byte code of the longest and still successful individual (33 of run 8 generation 8) is: fload_0; fload_0; fmul; fload_0; fmul; fload_0; fdiv; fload_0; fmul; fload_0; fdiv; fload_0; fmul; fload_0; fdiv; fload_0; fadd; fload_0; fmul; fload_0; fdiv; fload_0; fmul; fload_0; fadd; fload_0; fmul; fload_0; fdiv; fload_0; fmul; fload_0; fdiv; fload_0; fmul; fload_0; fadd; freturn. While not as obvious, this is again an exact solution and upon factorization individual 33 is identical to 54. Of course individual 54 is more efficient than 33 and it is optimal with respect to its computations (i.e., 3 multiplications and 3 additions). In this experiment, the fload_0 operation (retrieve float from local variable zero) is the byte code used to support referencing the independent variable (x), and the freturn operation (return from method with a float result) is the footer. The best-of-all individual (54) can be interpreted as the following Java method: public static float f00054(float x) { return ((x * x + x) * x + x) * x + x); } 5.2 Classification In this problem bcgp predicts the class, sick (positive class) or not sick (negative class), of a thyroid patient based upon various patient features (e.g., age and thyroid levels). This experiment uses a public domain thyroid disease database [Blake, et al., 1998]. For comparison purposes, we also used an artificial neural network (NN) for the problem. Table 2 summarizes the training and test data sets used in the experiment. Cases with missing values are not used. We encoded feature values as integers. For example, we represent the gender feature with values of 'M' and 'F' as 1 and 0, respectively. The various measurement-related features, which have floating point values in the database, are linearly scaled into integers. We trained and tested two neural networks for this problem one without over fit protection while the other with it (NN+). Over fit protection is a technique that prevents a model from memorizing the training set so that it can generalize to unseen data. Table 3 summarizes the GP parameters for this problem. We summarize two experiments with bcgp. Table 4 presents the accuracy and error rate (percentages) for the first experiment. In the first experiment, the results reported for bcgp are for the best-of-all individual (22), which is found during run 0, generation 14, and has a size 36. The byte code for this individual (including instruction offsets) is: 0 iload 17 2 sipush if_icmpge 34 8 iload sipush if_icmpeq iload sipush if_icmpgt iload 5 26 sipush 1 29 if_icmpgt iconst_1 33 ireturn 34 iconst_0 35 ireturn In the second experiment, bcgp includes adaptive parsimony pressure (APP). In the second experiment, the best individual (53) has the same predictive accuracy as in the first experiment, but it only has a size of 11. In the first experiment (without APP), the mean size for the best individual of each run is 26.4 while with APP the mean size of the best individual is The byte code for individual 53 is: 0 iload 17 1 sipush if_icmpge 9 7 iconst_1 5

6 8 ireturn 9 iconst_0 10 ireturn Set Size Negative (%) Positive (%) Train (91.9) 158 (8.1) Test (91.8) 53 (8.2) Parameter Function set Value If_icmpeq, if_icmpne, if_icmplt, if_icmpgt, if_icmple, if_icmpge 21 features describing a case Terminal set Runs per experiment 10 Number generations per run 25 Population size 64 Max individual size (bytes) 64 Selection method Tournament (4) Probability of crossover 0.8 Probability of mutation 0.5 Probability of reproduction 0.2 Table 3 Classification Parameters Method Train Test bcgp 96.0/ /5.3 MLP 91.9/ /8.2 MLP+ 97.3/ /4.2 Table 4 Accuracy/Error % A classifier that learns must do better than naive prediction, which is just a matter of always picking the higher prevalence class. For this problem this is the negative class with the naive prediction being 91.9 and 91.8 training and test, respectively (Table 2). Both bcgp and NN+ do better than this. The neural network with over fit protection enabled does slightly better than bcgp. However, since bcgp is not trained with over-fit protection this is not a completely fair comparison. In this experiment, the iload operation (retrieve integer from local variable) is the byte code used to support referencing the independent variables (case features), sipush is used to support the creation of partially evolved feature values, and the last four byte codes (iconst_1, ireturn, iconst_0, ireturn) are the footer used to return a boolean as to the predicted classification of a case by the method. Individual 53 after un-scaling can be represented as the rule: IF T3 < THEN Class = Sick ELSE Class = Negative. T3 is a patient s triiodothyronine level with a normal value being in the range 1.2 to Conclusion In this paper we evolve Java byte code in a standard Java environment. Our technique generates in-memory class files to represent generations, with each class file containing methods that represent the individuals in the population for the given generation. The fitness of an individual is computed by directly executing the byte code contained in a method using the JVM in the bcgp host application. Other researchers are also independently exploring this idea. While the AIMGP system's performance evolving real machine code are encouraging, the disadvantage is that the GP system and its evolved solutions are platform dependent. The performance gain of low-level GP and the platform independence of JVM are, of course, motivations for Java related 6

7 research. From the Java GP perspective, bcgp, JBGP, and JAPHET all implement Java GP. However, they are all fairly different in their approaches and possibly in the problems they can solve. JBGP appears to be a reasonable approach to evolving byte code in general, when considering the difficulties of handling stack depths and branch addresses related to the stack based architecture of the JVM. The idea and motivation for this scheme are a key contribution to the concept of Java GP. However, nothing is without a cost. This scheme requires both a genotype and phenotype representation of an individual with data copying to transform one into the other. JAPHET takes a very different approach to the representation scheme than either bcgp or JBGP. While the generation per class file approach used by both bcgp and JBGP is limited to 2^16 individuals, JAPHET appears to have no such limits. Nevertheless, 2^16 individuals is more than enough capacity to handle most (if not all) the problems discussed in the literature. bcgp keeps the entire GP process in memory, including the representation of a generation as a Java class file. The references for JBGP and JAPHET never discussed the system s usage of memory versus the file system. Finally, one of the motivations for byte code GP is performance of low-level code as compared to a higher-level language approach. However, none of these systems (bcgp, JBGP, and JAPHET) have under gone this performance analysis yet. We have tested bcgp on two problems, which are representative of broad classes of practical applications: functional regression, and classification. Our system performed very efficiently and accurately on these problems. 7. Bibliography [Banzhaf, et al., 1998] Banzhaf, W., P. Nordin, R. Keller, and F. Francone (1998). Genetic Programming, An Introduction: On the Automatic Evolution of Computer Programs and Its Applications. Morgan Kaufmann, San Francisco, CA. [Blake, et al., 1998] Blake, C., E. Keogh, and C. J. Merz (1998). UCI Repository of machine learning databases [ Irvine, CA: University of California, Department of Information and Computer Science. [Harvey, et al., 1998] Harvey, B. J. A. Foster, and D. Frincke (1998). Byte Code Genetic Programming. In: Late Breaking Papers at the Genetic Programming 1998 Conference, University of Wisconsin Madison. [Klanhold, et al., 1998] Klanhlold, S., S. Frank, R. Keller and W. Banzhaf (1998). Exploring the Possibilities and Restrictions of Genetic Programming in Java Bytecode. In: Late Breaking Papers at the Genetic Programming 1998 Conference, University of Wisconsin Madison. [Koza, 1992] Koza, J. R. (1992). Genetic Programming: On the Programming of Computers by Natural Selection. MIT Press, Cambridge, MA. [Lindholm and Yellin, 1996] Lindolm, T. and F. Yellin (1996). The Java Virtual Machine Specification. Addison- Wesley. [Lukschandl, et al., 1998] Lukschandl, E., M. Holmlund, E. Moden, M. Nordahl, and P. Nordin (1998). Induction of Java Bytecode with Genetic Programming. In: Late Breaking Papers at the Genetic Programming 1998 Conference, University of Wisconsin Madison. [McGhan and O'Connor, 1998] McGhan, H. and M. O'Connor. (1998). PicoJava: A Direct Execution Engine for Java ByteCode. IEEE Computer 31, 3 (October 1998). [Meyer and Dowing, 1997] Meyer, J. and T. Downing (1997). JAVA Virtual Machine. O Reilly & Associates, Sebastopol, CA. [Nordin, 1994] Nordin, P. (1994). A compiling genetic programming system that directly manipulates the machine code. In Kinnear, Jr., K. E., editor, Advances in Genetic Programming. MIT Press, Cambridge, MA. [Nordin and Banzhaf, 1995] Nordin, P. and W. Banzhaf (1995). Evolving Turing-complete programs for a register machine with self-modifying code. In Eshelman, L., editor, Genetic Algorithms: Proceedings of the Sixth International Conference, Pittsburgh, PA. Morgan Kaufmann, San Francisco, CA. 7

8 [Zhang and Muehlenbein, 1996] Zhang, B. and H. Muehlenbein (1996). Adaptive fitness functions for dynamic growing/pruning of program trees. In Angeline, P. J. and Kinnear, Jr., K. E., editors, Advances in Genetic Programming 2. MIT Press, Cambridge, MA. 8

Investigating the Application of Genetic Programming to Function Approximation

Investigating the Application of Genetic Programming to Function Approximation Investigating the Application of Genetic Programming to Function Approximation Jeremy E. Emch Computer Science Dept. Penn State University University Park, PA 16802 Abstract When analyzing a data set it

More information

Genetic Programming Part 1

Genetic Programming Part 1 Genetic Programming Part 1 Evolutionary Computation Lecture 11 Thorsten Schnier 06/11/2009 Previous Lecture Multi-objective Optimization Pareto optimality Hyper-volume based indicators Recent lectures

More information

Compiling Techniques

Compiling Techniques Lecture 10: Introduction to 10 November 2015 Coursework: Block and Procedure Table of contents Introduction 1 Introduction Overview Java Virtual Machine Frames and Function Call 2 JVM Types and Mnemonics

More information

SOFTWARE ARCHITECTURE 7. JAVA VIRTUAL MACHINE

SOFTWARE ARCHITECTURE 7. JAVA VIRTUAL MACHINE 1 SOFTWARE ARCHITECTURE 7. JAVA VIRTUAL MACHINE Tatsuya Hagino hagino@sfc.keio.ac.jp slides URL https://vu5.sfc.keio.ac.jp/sa/ Java Programming Language Java Introduced in 1995 Object-oriented programming

More information

Previous Lecture Genetic Programming

Previous Lecture Genetic Programming Genetic Programming Previous Lecture Constraint Handling Penalty Approach Penalize fitness for infeasible solutions, depending on distance from feasible region Balanace between under- and over-penalization

More information

Parallelism of Java Bytecode Programs and a Java ILP Processor Architecture

Parallelism of Java Bytecode Programs and a Java ILP Processor Architecture Australian Computer Science Communications, Vol.21, No.4, 1999, Springer-Verlag Singapore Parallelism of Java Bytecode Programs and a Java ILP Processor Architecture Kenji Watanabe and Yamin Li Graduate

More information

Genetic Programming in the Wild:

Genetic Programming in the Wild: Genetic Programming in the Wild: and orlovm, sipper@cs.bgu.ac.il Department of Computer Science Ben-Gurion University, Israel GECCO 2009, July 8 12 Montréal, Québec, Canada 1 / 46 GP: Programs or Representations?

More information

High-Level Language VMs

High-Level Language VMs High-Level Language VMs Outline Motivation What is the need for HLL VMs? How are these different from System or Process VMs? Approach to HLL VMs Evolutionary history Pascal P-code Object oriented HLL VMs

More information

Interaction of JVM with x86, Sparc and MIPS

Interaction of JVM with x86, Sparc and MIPS Interaction of JVM with x86, Sparc and MIPS Sasikanth Avancha, Dipanjan Chakraborty, Dhiral Gada, Tapan Kamdar {savanc1, dchakr1, dgada1, kamdar}@cs.umbc.edu Department of Computer Science and Electrical

More information

Evolving Turing-Complete Programs for a Register Machine with. Self-modifying Code. 1 Introduction

Evolving Turing-Complete Programs for a Register Machine with. Self-modifying Code. 1 Introduction Evolving Turing-Complete Programs for a Register Machine with Self-modifying Code Peter Nordin Universitat Dortmund Fachbereich Informatik Lehrstuhl fur Systemanalyse D{44221 Dortmund nordin@ls11.informatik.uni-dortmund.de

More information

JVM. What This Topic is About. Course Overview. Recap: Interpretive Compilers. Abstract Machines. Abstract Machines. Class Files and Class File Format

JVM. What This Topic is About. Course Overview. Recap: Interpretive Compilers. Abstract Machines. Abstract Machines. Class Files and Class File Format Course Overview What This Topic is About PART I: overview material 1 Introduction 2 Language processors (tombstone diagrams, bootstrapping) 3 Architecture of a compiler PART II: inside a compiler 4 Syntax

More information

A New Crossover Technique for Cartesian Genetic Programming

A New Crossover Technique for Cartesian Genetic Programming A New Crossover Technique for Cartesian Genetic Programming Genetic Programming Track Janet Clegg Intelligent Systems Group, Department of Electronics University of York, Heslington York, YO DD, UK jc@ohm.york.ac.uk

More information

Genetic Programming for Data Classification: Partitioning the Search Space

Genetic Programming for Data Classification: Partitioning the Search Space Genetic Programming for Data Classification: Partitioning the Search Space Jeroen Eggermont jeggermo@liacs.nl Joost N. Kok joost@liacs.nl Walter A. Kosters kosters@liacs.nl ABSTRACT When Genetic Programming

More information

Bitwise AND... Bitwise AND

Bitwise AND... Bitwise AND Sub-machine-code Genetic Programming Riccardo Poli and William B. Langdon School of Computer Science The University of Birmingham Edgbaston Birmingham, B5 2TT, UK fr.poli,w.b.langdong@cs.bham.ac.uk Phone:

More information

CSc 453 Interpreters & Interpretation

CSc 453 Interpreters & Interpretation CSc 453 Interpreters & Interpretation Saumya Debray The University of Arizona Tucson Interpreters An interpreter is a program that executes another program. An interpreter implements a virtual machine,

More information

CONCEPT FORMATION AND DECISION TREE INDUCTION USING THE GENETIC PROGRAMMING PARADIGM

CONCEPT FORMATION AND DECISION TREE INDUCTION USING THE GENETIC PROGRAMMING PARADIGM 1 CONCEPT FORMATION AND DECISION TREE INDUCTION USING THE GENETIC PROGRAMMING PARADIGM John R. Koza Computer Science Department Stanford University Stanford, California 94305 USA E-MAIL: Koza@Sunburn.Stanford.Edu

More information

CSE P 501 Compilers. Java Implementation JVMs, JITs &c Hal Perkins Winter /11/ Hal Perkins & UW CSE V-1

CSE P 501 Compilers. Java Implementation JVMs, JITs &c Hal Perkins Winter /11/ Hal Perkins & UW CSE V-1 CSE P 501 Compilers Java Implementation JVMs, JITs &c Hal Perkins Winter 2008 3/11/2008 2002-08 Hal Perkins & UW CSE V-1 Agenda Java virtual machine architecture.class files Class loading Execution engines

More information

A Comparison of Cartesian Genetic Programming and Linear Genetic Programming

A Comparison of Cartesian Genetic Programming and Linear Genetic Programming A Comparison of Cartesian Genetic Programming and Linear Genetic Programming Garnett Wilson 1,2 and Wolfgang Banzhaf 1 1 Memorial Univeristy of Newfoundland, St. John s, NL, Canada 2 Verafin, Inc., St.

More information

Java Internals. Frank Yellin Tim Lindholm JavaSoft

Java Internals. Frank Yellin Tim Lindholm JavaSoft Java Internals Frank Yellin Tim Lindholm JavaSoft About This Talk The JavaSoft implementation of the Java Virtual Machine (JDK 1.0.2) Some companies have tweaked our implementation Alternative implementations

More information

Using Genetic Programming to Evolve a General Purpose Sorting Network for Comparable Data Sets

Using Genetic Programming to Evolve a General Purpose Sorting Network for Comparable Data Sets Using Genetic Programming to Evolve a General Purpose Sorting Network for Comparable Data Sets Peter B. Lubell-Doughtie Stanford Symbolic Systems Program Stanford University P.O. Box 16044 Stanford, California

More information

Course Overview. PART I: overview material. PART II: inside a compiler. PART III: conclusion

Course Overview. PART I: overview material. PART II: inside a compiler. PART III: conclusion Course Overview PART I: overview material 1 Introduction (today) 2 Language Processors (basic terminology, tombstone diagrams, bootstrapping) 3 The architecture of a Compiler PART II: inside a compiler

More information

Approaches to Capturing Java Threads State

Approaches to Capturing Java Threads State Approaches to Capturing Java Threads State Abstract This paper describes a range of approaches to capturing the state of Java threads. The capture and restoration of Java threads state have two main purposes:

More information

High-Performance, Parallel, Stack-Based Genetic Programming by Kilian Stoffel and Lee Spector

High-Performance, Parallel, Stack-Based Genetic Programming by Kilian Stoffel and Lee Spector High-Performance, Parallel, Stack-Based Genetic Programming by Kilian Stoffel and Lee Spector Full citation: Stoffel, K., and L. Spector. 1996. High-Performance, Parallel, Stack-Based Genetic Programming.

More information

A New Crossover Technique for Cartesian Genetic Programming

A New Crossover Technique for Cartesian Genetic Programming A New Crossover Technique for Cartesian Genetic Programming Genetic Programming Track Janet Clegg Intelligent Systems Group, Department of Electronics University of York, Heslington York,YODD,UK jc@ohm.york.ac.uk

More information

Genetic Programming Prof. Thomas Bäck Nat Evur ol al ut ic o om nar put y Aling go rg it roup hms Genetic Programming 1

Genetic Programming Prof. Thomas Bäck Nat Evur ol al ut ic o om nar put y Aling go rg it roup hms Genetic Programming 1 Genetic Programming Prof. Thomas Bäck Natural Evolutionary Computing Algorithms Group Genetic Programming 1 Genetic programming The idea originated in the 1950s (e.g., Alan Turing) Popularized by J.R.

More information

Automatic Programming with Ant Colony Optimization

Automatic Programming with Ant Colony Optimization Automatic Programming with Ant Colony Optimization Jennifer Green University of Kent jg9@kent.ac.uk Jacqueline L. Whalley University of Kent J.L.Whalley@kent.ac.uk Colin G. Johnson University of Kent C.G.Johnson@kent.ac.uk

More information

Santa Fe Trail Problem Solution Using Grammatical Evolution

Santa Fe Trail Problem Solution Using Grammatical Evolution 2012 International Conference on Industrial and Intelligent Information (ICIII 2012) IPCSIT vol.31 (2012) (2012) IACSIT Press, Singapore Santa Fe Trail Problem Solution Using Grammatical Evolution Hideyuki

More information

Agenda. CSE P 501 Compilers. Java Implementation Overview. JVM Architecture. JVM Runtime Data Areas (1) JVM Data Types. CSE P 501 Su04 T-1

Agenda. CSE P 501 Compilers. Java Implementation Overview. JVM Architecture. JVM Runtime Data Areas (1) JVM Data Types. CSE P 501 Su04 T-1 Agenda CSE P 501 Compilers Java Implementation JVMs, JITs &c Hal Perkins Summer 2004 Java virtual machine architecture.class files Class loading Execution engines Interpreters & JITs various strategies

More information

CSC 4181 Handout : JVM

CSC 4181 Handout : JVM CSC 4181 Handout : JVM Note: This handout provides you with the basic information about JVM. Although we tried to be accurate about the description, there may be errors. Feel free to check your compiler

More information

Evolving SQL Queries for Data Mining

Evolving SQL Queries for Data Mining Evolving SQL Queries for Data Mining Majid Salim and Xin Yao School of Computer Science, The University of Birmingham Edgbaston, Birmingham B15 2TT, UK {msc30mms,x.yao}@cs.bham.ac.uk Abstract. This paper

More information

Binary Representations of Integers and the Performance of Selectorecombinative Genetic Algorithms

Binary Representations of Integers and the Performance of Selectorecombinative Genetic Algorithms Binary Representations of Integers and the Performance of Selectorecombinative Genetic Algorithms Franz Rothlauf Department of Information Systems University of Bayreuth, Germany franz.rothlauf@uni-bayreuth.de

More information

Global Scheduler. Global Issue. Global Retire

Global Scheduler. Global Issue. Global Retire The Delft-Java Engine: An Introduction C. John Glossner 1;2 and Stamatis Vassiliadis 2 1 Lucent / Bell Labs, Allentown, Pa. 2 Delft University oftechnology, Department of Electrical Engineering Delft,

More information

Run-time Program Management. Hwansoo Han

Run-time Program Management. Hwansoo Han Run-time Program Management Hwansoo Han Run-time System Run-time system refers to Set of libraries needed for correct operation of language implementation Some parts obtain all the information from subroutine

More information

JEvolution: Evolutionary Algorithms in Java

JEvolution: Evolutionary Algorithms in Java Computational Intelligence, Simulation, and Mathematical Models Group CISMM-21-2002 May 19, 2015 JEvolution: Evolutionary Algorithms in Java Technical Report JEvolution V0.98 Helmut A. Mayer helmut@cosy.sbg.ac.at

More information

Recap: Printing Trees into Bytecodes

Recap: Printing Trees into Bytecodes Recap: Printing Trees into Bytecodes To evaluate e 1 *e 2 interpreter evaluates e 1 evaluates e 2 combines the result using * Compiler for e 1 *e 2 emits: code for e 1 that leaves result on the stack,

More information

Genetic Programming. and its use for learning Concepts in Description Logics

Genetic Programming. and its use for learning Concepts in Description Logics Concepts in Description Artificial Intelligence Institute Computer Science Department Dresden Technical University May 29, 2006 Outline Outline: brief introduction to explanation of the workings of a algorithm

More information

Coevolving Functions in Genetic Programming: Classification using K-nearest-neighbour

Coevolving Functions in Genetic Programming: Classification using K-nearest-neighbour Coevolving Functions in Genetic Programming: Classification using K-nearest-neighbour Manu Ahluwalia Intelligent Computer Systems Centre Faculty of Computer Studies and Mathematics University of the West

More information

Parallel Linear Genetic Programming

Parallel Linear Genetic Programming Parallel Linear Genetic Programming Carlton Downey and Mengjie Zhang School of Engineering and Computer Science Victoria University of Wellington, Wellington, New Zealand Carlton.Downey@ecs.vuw.ac.nz,

More information

Evolution of the Discrete Cosine Transform Using Genetic Programming

Evolution of the Discrete Cosine Transform Using Genetic Programming Res. Lett. Inf. Math. Sci. (22), 3, 117-125 Available online at http://www.massey.ac.nz/~wwiims/research/letters/ Evolution of the Discrete Cosine Transform Using Genetic Programming Xiang Biao Cui and

More information

Dynamic Page Based Crossover in Linear Genetic Programming

Dynamic Page Based Crossover in Linear Genetic Programming Dynamic Page Based Crossover in Linear Genetic Programming M.I. Heywood, A.N. Zincir-Heywood Abstract. Page-based Linear Genetic Programming (GP) is proposed in which individuals are described in terms

More information

A Type System for Object Initialization In the Java TM Bytecode Language

A Type System for Object Initialization In the Java TM Bytecode Language Electronic Notes in Theoretical Computer Science 10 (1998) URL: http://www.elsevier.nl/locate/entcs/volume10.html 7 pages A Type System for Object Initialization In the Java TM Bytecode Language Stephen

More information

Chapter 5. A Closer Look at Instruction Set Architectures. Chapter 5 Objectives. 5.1 Introduction. 5.2 Instruction Formats

Chapter 5. A Closer Look at Instruction Set Architectures. Chapter 5 Objectives. 5.1 Introduction. 5.2 Instruction Formats Chapter 5 Objectives Understand the factors involved in instruction set architecture design. Chapter 5 A Closer Look at Instruction Set Architectures Gain familiarity with memory addressing modes. Understand

More information

Compiler construction 2009

Compiler construction 2009 Compiler construction 2009 Lecture 2 Code generation 1: Generating Jasmin code JVM and Java bytecode Jasmin Naive code generation The Java Virtual Machine Data types Primitive types, including integer

More information

Genetic programming. Lecture Genetic Programming. LISP as a GP language. LISP structure. S-expressions

Genetic programming. Lecture Genetic Programming. LISP as a GP language. LISP structure. S-expressions Genetic programming Lecture Genetic Programming CIS 412 Artificial Intelligence Umass, Dartmouth One of the central problems in computer science is how to make computers solve problems without being explicitly

More information

Chapter 5. A Closer Look at Instruction Set Architectures

Chapter 5. A Closer Look at Instruction Set Architectures Chapter 5 A Closer Look at Instruction Set Architectures Chapter 5 Objectives Understand the factors involved in instruction set architecture design. Gain familiarity with memory addressing modes. Understand

More information

A Web-Based Evolutionary Algorithm Demonstration using the Traveling Salesman Problem

A Web-Based Evolutionary Algorithm Demonstration using the Traveling Salesman Problem A Web-Based Evolutionary Algorithm Demonstration using the Traveling Salesman Problem Richard E. Mowe Department of Statistics St. Cloud State University mowe@stcloudstate.edu Bryant A. Julstrom Department

More information

Code Generation. Frédéric Haziza Spring Department of Computer Systems Uppsala University

Code Generation. Frédéric Haziza Spring Department of Computer Systems Uppsala University Code Generation Frédéric Haziza Department of Computer Systems Uppsala University Spring 2008 Operating Systems Process Management Memory Management Storage Management Compilers Compiling

More information

Untyped Memory in the Java Virtual Machine

Untyped Memory in the Java Virtual Machine Untyped Memory in the Java Virtual Machine Andreas Gal and Michael Franz University of California, Irvine {gal,franz}@uci.edu Christian W. Probst Technical University of Denmark probst@imm.dtu.dk July

More information

Genetic Programming in the Wild: Evolving Unrestricted Bytecode

Genetic Programming in the Wild: Evolving Unrestricted Bytecode Genetic Programming in the Wild: Evolving Unrestricted Bytecode ABSTRACT Michael Orlov Department of Computer Science Ben-Gurion University, PO Box 653 Beer-Sheva 84105, Israel orlovm@cs.bgu.ac.il We describe

More information

Automatic Creation of Digital Fast Adder Circuits by Means of Genetic Programming

Automatic Creation of Digital Fast Adder Circuits by Means of Genetic Programming 1 Automatic Creation of Digital Fast Adder Circuits by Means of Genetic Programming Karim Nassar Lockheed Martin Missiles and Space 1111 Lockheed Martin Way Sunnyvale, CA 94089 Karim.Nassar@lmco.com 408-742-9915

More information

Project. there are a couple of 3 person teams. a new drop with new type checking is coming. regroup or see me or forever hold your peace

Project. there are a couple of 3 person teams. a new drop with new type checking is coming. regroup or see me or forever hold your peace Project there are a couple of 3 person teams regroup or see me or forever hold your peace a new drop with new type checking is coming using it is optional 1 Compiler Architecture source code Now we jump

More information

Stack-Based Genetic Programming

Stack-Based Genetic Programming Stack-Based Genetic Programming Timothy Perkis 1048 Neilson St., Albany, CA 94706 email: timper@holonet.net Abstract Some recent work in the field of Genetic Programming (GP) has been concerned with finding

More information

Genetic Programming of Autonomous Agents. Functional Requirements List and Performance Specifi cations. Scott O'Dell

Genetic Programming of Autonomous Agents. Functional Requirements List and Performance Specifi cations. Scott O'Dell Genetic Programming of Autonomous Agents Functional Requirements List and Performance Specifi cations Scott O'Dell Advisors: Dr. Joel Schipper and Dr. Arnold Patton November 23, 2010 GPAA 1 Project Goals

More information

Genetic Programming. Modern optimization methods 1

Genetic Programming. Modern optimization methods 1 Genetic Programming Developed in USA during 90 s Patented by J. Koza Solves typical problems: Prediction, classification, approximation, programming Properties Competitor of neural networks Need for huge

More information

Java: framework overview and in-the-small features

Java: framework overview and in-the-small features Chair of Software Engineering Carlo A. Furia, Marco Piccioni, Bertrand Meyer Java: framework overview and in-the-small features Chair of Software Engineering Carlo A. Furia, Marco Piccioni, Bertrand Meyer

More information

The Java Virtual Machine

The Java Virtual Machine Virtual Machines in Compilation Abstract Syntax Tree Compilation 2007 The compile Virtual Machine Code interpret compile Native Binary Code Michael I. Schwartzbach BRICS, University of Aarhus 2 Virtual

More information

Selection Based on the Pareto Nondomination Criterion for Controlling Code Growth in Genetic Programming

Selection Based on the Pareto Nondomination Criterion for Controlling Code Growth in Genetic Programming Genetic Programming and Evolvable Machines, 2, 61 73, 2001 2001 Kluwer Academic Publishers. Manufactured in The Netherlands. Selection Based on the Pareto Nondomination Criterion for Controlling Code Growth

More information

CSCE 314 Programming Languages

CSCE 314 Programming Languages CSCE 314 Programming Languages! JVM Dr. Hyunyoung Lee 1 Java Virtual Machine and Java The Java Virtual Machine (JVM) is a stack-based abstract computing machine. JVM was designed to support Java -- Some

More information

Automatic Generation of Prime Factorization Algorithms Using Genetic Programming

Automatic Generation of Prime Factorization Algorithms Using Genetic Programming 1 Automatic Generation of Prime Factorization Algorithms Using Genetic Programming David Michael Chan Department of Computer Science Post Office Box 12587 Stanford, California 94309 dmchan@stanford.edu

More information

Genetic Programming for Multiclass Object Classification

Genetic Programming for Multiclass Object Classification Genetic Programming for Multiclass Object Classification by William Richmond Smart A thesis submitted to the Victoria University of Wellington in fulfilment of the requirements for the degree of Master

More information

Hardware Neuronale Netzwerke - Lernen durch künstliche Evolution (?)

Hardware Neuronale Netzwerke - Lernen durch künstliche Evolution (?) SKIP - May 2004 Hardware Neuronale Netzwerke - Lernen durch künstliche Evolution (?) S. G. Hohmann, Electronic Vision(s), Kirchhoff Institut für Physik, Universität Heidelberg Hardware Neuronale Netzwerke

More information

Introduction to Java Programming

Introduction to Java Programming Introduction to Java Programming Lecture 1 CGS 3416 Spring 2017 1/9/2017 Main Components of a computer CPU - Central Processing Unit: The brain of the computer ISA - Instruction Set Architecture: the specific

More information

CHAPTER 5 A Closer Look at Instruction Set Architectures

CHAPTER 5 A Closer Look at Instruction Set Architectures CHAPTER 5 A Closer Look at Instruction Set Architectures 5.1 Introduction 199 5.2 Instruction Formats 199 5.2.1 Design Decisions for Instruction Sets 200 5.2.2 Little versus Big Endian 201 5.2.3 Internal

More information

GENETIC ALGORITHM VERSUS PARTICLE SWARM OPTIMIZATION IN N-QUEEN PROBLEM

GENETIC ALGORITHM VERSUS PARTICLE SWARM OPTIMIZATION IN N-QUEEN PROBLEM Journal of Al-Nahrain University Vol.10(2), December, 2007, pp.172-177 Science GENETIC ALGORITHM VERSUS PARTICLE SWARM OPTIMIZATION IN N-QUEEN PROBLEM * Azhar W. Hammad, ** Dr. Ban N. Thannoon Al-Nahrain

More information

An empirical study of the efficiency of learning boolean functions using a Cartesian Genetic Programming approach

An empirical study of the efficiency of learning boolean functions using a Cartesian Genetic Programming approach An empirical study of the efficiency of learning boolean functions using a Cartesian Genetic Programming approach Julian F. Miller School of Computing Napier University 219 Colinton Road Edinburgh, EH14

More information

JAM 16: The Instruction Set & Sample Programs

JAM 16: The Instruction Set & Sample Programs JAM 16: The Instruction Set & Sample Programs Copyright Peter M. Kogge CSE Dept. Univ. of Notre Dame Jan. 8, 1999, modified 4/4/01 Revised to 16 bits: Dec. 5, 2007 JAM 16: 1 Java Terms Java: A simple,

More information

Evolving Hierarchical and Recursive Teleo-reactive Programs through Genetic Programming

Evolving Hierarchical and Recursive Teleo-reactive Programs through Genetic Programming Evolving Hierarchical and Recursive Teleo-reactive Programs through Genetic Programming Mykel J. Kochenderfer Department of Computer Science Stanford University Stanford, California 94305 mykel@cs.stanford.edu

More information

Chapter 5. A Closer Look at Instruction Set Architectures

Chapter 5. A Closer Look at Instruction Set Architectures Chapter 5 A Closer Look at Instruction Set Architectures Chapter 5 Objectives Understand the factors involved in instruction set architecture design. Gain familiarity with memory addressing modes. Understand

More information

Chapter 5. A Closer Look at Instruction Set Architectures. Chapter 5 Objectives. 5.1 Introduction. 5.2 Instruction Formats

Chapter 5. A Closer Look at Instruction Set Architectures. Chapter 5 Objectives. 5.1 Introduction. 5.2 Instruction Formats Chapter 5 Objectives Chapter 5 A Closer Look at Instruction Set Architectures Understand the factors involved in instruction set architecture design. Gain familiarity with memory addressing modes. Understand

More information

Evolving Teleo-Reactive Programs for Block Stacking using Indexicals through Genetic Programming

Evolving Teleo-Reactive Programs for Block Stacking using Indexicals through Genetic Programming Evolving Teleo-Reactive Programs for Block Stacking using Indexicals through Genetic Programming Mykel J. Kochenderfer 6 Abrams Court, Apt. 6F Stanford, CA 95 65-97-75 mykel@cs.stanford.edu Abstract This

More information

ADAPTATION OF REPRESENTATION IN GP

ADAPTATION OF REPRESENTATION IN GP 1 ADAPTATION OF REPRESENTATION IN GP CEZARY Z. JANIKOW University of Missouri St. Louis Department of Mathematics and Computer Science St Louis, Missouri RAHUL A DESHPANDE University of Missouri St. Louis

More information

A Classifier with the Function-based Decision Tree

A Classifier with the Function-based Decision Tree A Classifier with the Function-based Decision Tree Been-Chian Chien and Jung-Yi Lin Institute of Information Engineering I-Shou University, Kaohsiung 84008, Taiwan, R.O.C E-mail: cbc@isu.edu.tw, m893310m@isu.edu.tw

More information

Four Components of a Computer System

Four Components of a Computer System Four Components of a Computer System Operating System Concepts Essentials 2nd Edition 1.1 Silberschatz, Galvin and Gagne 2013 Operating System Definition OS is a resource allocator Manages all resources

More information

Outline. Introduction to Java. What Is Java? History. Java 2 Platform. Java 2 Platform Standard Edition. Introduction Java 2 Platform

Outline. Introduction to Java. What Is Java? History. Java 2 Platform. Java 2 Platform Standard Edition. Introduction Java 2 Platform Outline Introduction to Java Introduction Java 2 Platform CS 3300 Object-Oriented Concepts Introduction to Java 2 What Is Java? History Characteristics of Java History James Gosling at Sun Microsystems

More information

An Introduction to Multicodes. Ben Stephenson Department of Computer Science University of Western Ontario

An Introduction to Multicodes. Ben Stephenson Department of Computer Science University of Western Ontario An Introduction to Multicodes Ben Stephenson Department of Computer Science University of Western Ontario ben@csd csd.uwo.ca Outline Java Virtual Machine Background The Current State of the Multicode Art

More information

Chapter 2 BASIC CONCEPTS OF LINEAR GENETIC PROGRAMMING. 2.1 Representation of Programs

Chapter 2 BASIC CONCEPTS OF LINEAR GENETIC PROGRAMMING. 2.1 Representation of Programs Chapter 2 BASIC CONCEPTS OF LINEAR GENETIC PROGRAMMING In this chapter linear genetic programming (LGP) will be explored in further detail. The basis of the specific linear GP variant we want to investigate

More information

Under the Hood: The Java Virtual Machine. Lecture 23 CS2110 Fall 2008

Under the Hood: The Java Virtual Machine. Lecture 23 CS2110 Fall 2008 Under the Hood: The Java Virtual Machine Lecture 23 CS2110 Fall 2008 Compiling for Different Platforms Program written in some high-level language (C, Fortran, ML,...) Compiled to intermediate form Optimized

More information

CHAPTER 5 A Closer Look at Instruction Set Architectures

CHAPTER 5 A Closer Look at Instruction Set Architectures CHAPTER 5 A Closer Look at Instruction Set Architectures 5.1 Introduction 293 5.2 Instruction Formats 293 5.2.1 Design Decisions for Instruction Sets 294 5.2.2 Little versus Big Endian 295 5.2.3 Internal

More information

A Quantitative Analysis of Java Bytecode Sequences

A Quantitative Analysis of Java Bytecode Sequences A Quantitative Analysis of Java Bytecode Sequences Ben Stephenson Wade Holst Department of Computer Science, University of Western Ontario, London, Ontario, Canada 1 Introduction A variety of studies have

More information

1. Introduction. 2. Motivation and Problem Definition. Volume 8 Issue 2, February Susmita Mohapatra

1. Introduction. 2. Motivation and Problem Definition. Volume 8 Issue 2, February Susmita Mohapatra Pattern Recall Analysis of the Hopfield Neural Network with a Genetic Algorithm Susmita Mohapatra Department of Computer Science, Utkal University, India Abstract: This paper is focused on the implementation

More information

General Concepts. Abstraction Computational Paradigms Implementation Application Domains Influence on Success Influences on Design

General Concepts. Abstraction Computational Paradigms Implementation Application Domains Influence on Success Influences on Design General Concepts Abstraction Computational Paradigms Implementation Application Domains Influence on Success Influences on Design 1 Abstractions in Programming Languages Abstractions hide details that

More information

Constructing X-of-N Attributes with a Genetic Algorithm

Constructing X-of-N Attributes with a Genetic Algorithm Constructing X-of-N Attributes with a Genetic Algorithm Otavio Larsen 1 Alex Freitas 2 Julio C. Nievola 1 1 Postgraduate Program in Applied Computer Science 2 Computing Laboratory Pontificia Universidade

More information

CMPSC 497: Java Security

CMPSC 497: Java Security CMPSC 497: Java Security Trent Jaeger Systems and Internet Infrastructure Security (SIIS) Lab Computer Science and Engineering Department Pennsylvania State University 1 Enforcement Mechanisms Static mechanisms

More information

Evolutionary Algorithms. CS Evolutionary Algorithms 1

Evolutionary Algorithms. CS Evolutionary Algorithms 1 Evolutionary Algorithms CS 478 - Evolutionary Algorithms 1 Evolutionary Computation/Algorithms Genetic Algorithms l Simulate natural evolution of structures via selection and reproduction, based on performance

More information

Experiences Implementing Efficient Java Thread Serialization, Mobility and Persistence

Experiences Implementing Efficient Java Thread Serialization, Mobility and Persistence SOFTWARE PRACTICE AND EXPERIENCE Softw. Pract. Exper. 2000; 00:1 7 [Version: 2002/09/23 v2.2] Experiences Implementing Efficient Java Thread Serialization, Mobility and Persistence S. Bouchenak, D. Hagimont,

More information

Java Security. Compiler. Compiler. Hardware. Interpreter. The virtual machine principle: Abstract Machine Code. Source Code

Java Security. Compiler. Compiler. Hardware. Interpreter. The virtual machine principle: Abstract Machine Code. Source Code Java Security The virtual machine principle: Source Code Compiler Abstract Machine Code Abstract Machine Code Compiler Concrete Machine Code Input Hardware Input Interpreter Output 236 Java programs: definitions

More information

Evolution of Robot Leg Movements in a Physical Simulation

Evolution of Robot Leg Movements in a Physical Simulation Evolution of Robot Leg Movements in a Physical Simulation Jens Ziegler, Wolfgang Banzhaf University of Dortmund, Dept. of Computer Science, D-44227 Dortmund, Germany Abstract This paper introduces a Genetic

More information

COP4020 Programming Languages. Compilers and Interpreters Robert van Engelen & Chris Lacher

COP4020 Programming Languages. Compilers and Interpreters Robert van Engelen & Chris Lacher COP4020 ming Languages Compilers and Interpreters Robert van Engelen & Chris Lacher Overview Common compiler and interpreter configurations Virtual machines Integrated development environments Compiler

More information

Using Genetic Algorithms to Solve the Box Stacking Problem

Using Genetic Algorithms to Solve the Box Stacking Problem Using Genetic Algorithms to Solve the Box Stacking Problem Jenniffer Estrada, Kris Lee, Ryan Edgar October 7th, 2010 Abstract The box stacking or strip stacking problem is exceedingly difficult to solve

More information

Chapter 1 GETTING STARTED. SYS-ED/ Computer Education Techniques, Inc.

Chapter 1 GETTING STARTED. SYS-ED/ Computer Education Techniques, Inc. Chapter 1 GETTING STARTED SYS-ED/ Computer Education Techniques, Inc. Objectives You will learn: Java platform. Applets and applications. Java programming language: facilities and foundation. Memory management

More information

Robust Gene Expression Programming

Robust Gene Expression Programming Available online at www.sciencedirect.com Procedia Computer Science 6 (2011) 165 170 Complex Adaptive Systems, Volume 1 Cihan H. Dagli, Editor in Chief Conference Organized by Missouri University of Science

More information

Using Genetic Programming to Evolve Robot Behaviours

Using Genetic Programming to Evolve Robot Behaviours Proceedings of the 3rd British Conference on Autonomous Mobile Robotics & Autonomous Systems, Manchester, 5th April 2001 Using Genetic Programming to Evolve Robot Behaviours Christopher Lazarus and Huosheng

More information

Chapter 3: Operating-System Structures

Chapter 3: Operating-System Structures Chapter 3: Operating-System Structures System Components Operating System Services System Calls System Programs System Structure Virtual Machines System Design and Implementation System Generation 3.1

More information

Lecture 6: Genetic Algorithm. An Introduction to Meta-Heuristics, Produced by Qiangfu Zhao (Since 2012), All rights reserved

Lecture 6: Genetic Algorithm. An Introduction to Meta-Heuristics, Produced by Qiangfu Zhao (Since 2012), All rights reserved Lecture 6: Genetic Algorithm An Introduction to Meta-Heuristics, Produced by Qiangfu Zhao (Since 2012), All rights reserved Lec06/1 Search and optimization again Given a problem, the set of all possible

More information

Introduction to Java. Lecture 1 COP 3252 Summer May 16, 2017

Introduction to Java. Lecture 1 COP 3252 Summer May 16, 2017 Introduction to Java Lecture 1 COP 3252 Summer 2017 May 16, 2017 The Java Language Java is a programming language that evolved from C++ Both are object-oriented They both have much of the same syntax Began

More information

Evolutionary Art with Cartesian Genetic Programming

Evolutionary Art with Cartesian Genetic Programming Evolutionary Art with Cartesian Genetic Programming Laurence Ashmore 1, and Julian Francis Miller 2 1 Department of Informatics, University of Sussex, Falmer, BN1 9QH, UK emoai@hotmail.com http://www.gaga.demon.co.uk/

More information

Contents. Index... 11

Contents. Index... 11 Contents 1 Modular Cartesian Genetic Programming........................ 1 1 Embedded Cartesian Genetic Programming (ECGP)............ 1 1.1 Cone-based and Age-based Module Creation.......... 1 1.2 Cone-based

More information

The Genetic Algorithm for finding the maxima of single-variable functions

The Genetic Algorithm for finding the maxima of single-variable functions Research Inventy: International Journal Of Engineering And Science Vol.4, Issue 3(March 2014), PP 46-54 Issn (e): 2278-4721, Issn (p):2319-6483, www.researchinventy.com The Genetic Algorithm for finding

More information

Context Threading: A flexible and efficient dispatch technique for virtual machine interpreters

Context Threading: A flexible and efficient dispatch technique for virtual machine interpreters : A flexible and efficient dispatch technique for virtual machine interpreters Marc Berndl Benjamin Vitale Mathew Zaleski Angela Demke Brown Research supported by IBM CAS, NSERC, CITO 1 Interpreter performance

More information

Compressing Java Class files

Compressing Java Class files Compressing Java Class files 1999 ACM SIGPLAN Conference on Programming Language Design and Implementation William Pugh Dept. of Computer Science Univ. of Maryland Java Class files Compiled Java source

More information