MieruCompiler: Integrated Visualization Tool with Horizontal Slicing for Educational Compilers

Size: px
Start display at page:

Download "MieruCompiler: Integrated Visualization Tool with Horizontal Slicing for Educational Compilers"

Transcription

1 MieruCompiler: Integrated Visualization Tool with Horizontal Slicing for Educational Compilers Katsuhiko Gondow Tokyo Institute of Technology Naoki Fukuyasu Wakayama University Yoshitaka Arahori Tokyo Institute of Technology ABSTRACT This paper proposes a novel visualization tool for educational compilers, called MieruCompiler. Educational compilers that generate native assembly code like i386 have many practical and pedagogical advantages, but they also have a disadvantage that the undergraduate students need to acquire a wide range of knowledge on native machine instructions, assembly directives, application binary interface (ABI), and so on. To reduce this learning cost, Mieru- Compiler provides various visualizations as a rich internet application (RIA) including: (1) highlighting all related slices (called horizontal slicing after [13], but not implemented in [13]) among the source code, abstract syntax tree, assembly code, symbol table, stack layout and compiler code, when the user hovers the mouse pointer over a piece of them, (2) displaying tooltips for machine instructions, assembly directives, etc., and (3) visualizing stack layouts which are very likely to be implicit. As a preliminary evaluation, MieruCompiler was used in two universities, which produced promising results. Categories and Subject Descriptors K.3 [Computers and Information Science Education]: Computer Science Education. General Terms Design, Languages Keywords Compiler course, Code Generation, Visualization, Program Understanding, Rich Internet Application (RIA) 1. INTRODUCTION For computer science undergraduate students (students for short), compiler courses are common and important at most universities [1, 2]. In the compiler courses, educational compilers are often used to provide hands-on experience through compiler construction. PL/0 compiler [14] is a popular classical educational compiler, and many other educational compilers have been proposed so far [15 18]. Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for proþt or commercial advantage and that copies bear this notice and the full citation on the Þrst page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior speciþc permission and/or a fee. SIGCSE 10, March 10 13, 2010, Milwaukee, Wisconsin, USA. Copyright 2010 ACM /10/03...$ Figure 1: Overview of our approach They are classiþed into two types according to the generated code. One is a native compiler that generates native machine code or native assembly code, and the other one is a non-native compiler that generates virtual machine code (or bytecode). Although both types have their own advantages and disadvantages, we argue that native compilers are more pedagogically effective than non-native compilers (see Section 2.1 for details). Although there are many important advantages in native educational compilers, the most difþcult problem in the native compiler approach is that the learning cost is greatly increased. To solve this problem, we took the following approach depicted in Fig. 1 (Section 2.2). We carefully deþned a source language (called XC) of our own educational compiler (called XCC) as a strict syntactic subset of the C programming language [22]. We emphasize and focus on code generation, but not on parsing and optimization. We provide a visualization tool (called MieruCompiler) for better understanding of the educational compiler and knowledge on i386 instructions, etc. XC is a compact language while preserving the high expressive power (Section 3.1). XCC is our educational compiler, which translates an XC program into i386 or MIPS assembly code (Section 3.2). Since XC is a subset of C, real-world C compilers like GCC can compile any XC program. This means the students can compare the two versions of native assembly code; one is generated by XCC, and the other by GCC. This has a great beneþt in compiler courses, since the students practically know what code should be generated and what alternatives there are. Here by code generation we mean the direct translation from source code to native assembly code (.s Þle) without using intermediate code. Fig. 2 shows an example of our code generation. 7

2 2. NATIVE COMPILER APPROACH 2.1 Why native compiler approach is better We argue that native compilers are more pedagogically effective than non-native compilers because of the following reasons: Generating native (i.e., real) assembly code motivates students to learn whatsoever are required in developing educational compilers, which results in a high learning effect. The reasons for this tendency are (probably) because: Figure 2: Example of code generation (i386 assembly code for while statement) Figure 3: Example of horizontal slicing (a while statement and its corresponding assembly code are highlighted) Thus our term code generation corresponds to intermediate-code generation in compiler textbooks [4]. A.s Þle generated by our educational compiler XCC can be assembled and linked into a.out Þle, for example, by GCC. MieruCompiler 1 is our integrated visualization tool with horizontal slicing. MieruCompiler statically visualizes the source code, assembly code, abstract syntax tree (AST), compiler code 2, symbol table and stack layout in XCC. By horizontal slicing [13], we mean highlighting all related slices from any selected piece. As shown in Fig. 3, for example, the corresponding assembly code (Fig. 3, right) is highlighted when selecting a while statement (Fig. 3, left). Horizontal slicing is bidirectional; not only what are generated from the selected piece, but also what generated the selected piece are highlighted. For example, when selecting a cmpl instruction in the assembly code, the corresponding while statement in the source code will be highlighted. Our major contribution in this paper is two fold: We have proposed and implemented a novel visualization tool called MieruCompiler for our educational compiler XCC. MieruCompiler is integrated and has a feature of horizontal slicing. As mentioned in Section 5, [13] introduced the term horizontal slicing, but did not implemented it in [13]. The source code of XCC and MieruCompiler is freely available on MieruCompiler/. We show valuable educational experiences obtained through the projects where 15 students in two universities developed (a part of) code generator in XCC using MieruCompiler. The rest of this paper is organized as follows. Section 2 discusses the native compiler approach. Section 3 describes our XC, XCC and MieruCompiler. Section 4 gives a preliminary evaluation. Section 5 describes related work. Finally, Section 6 gives the conclusion. 1 Mieru means visible in Japanese. 2 The compiler code in MieruCompiler can be hidden by option for educational purpose. Knowledge and experiences obtained from real assembly code will be widely applicable for many other areas including embedded systems, computer architectures, and operating systems. Also they are extensible in the sense that further learning leads students to more advanced topics like real compilers (eg., GCC) and techniques on JIT compilers or optimizers. Real assembly code is complex as a result of satisfying real-world constraints and requirements, so learning real assembly code is simply interesting and challenging for students; it is just a kind of happy hacking. In some senses, virtual machines are imitations, which demotivates students to learn them. For example, most native machines are register-based, while most virtual machines are stack-based. There are many differences and gaps in design decisions on real CPU instruction sets and virtual ones. Furthermore, real CPU instruction sets cannot be modiþed, while most virtual ones can be easily modiþed. A mission of real-world compiler is to generate low-level code using a Þxed instruction set, but this does not often hold true for non-native compilers. By comparing the two versions of native assembly code: one generated by real-world compilers (eg., GCC) and the other generated by the educational compiler, students practically know what code should be generated and what alternatives there are. Even if the technique mentioned in [12] is used, it is still quite difþcult for students to understand the internal data structures of real-world compilers. On the other hand, it is not so difþcult for students to understand the assembly code generated by GCC. For this purpose, it is desirable that a source language of the educational compiler is a strict syntactic subset of the existing programming language (eg., C), to make it possible to compare different results for the same source program. This is the reason why XC is a subset of C. There are many high quality documents (eg., [20, 23]) and tools (eg., GCC and GNU Binutils) for real machines, while not for most virtual machines 3. Library functions (eg., printf in the C standard library) can be directly called from the source program, if the educational compiler conforms to the application binary interface (ABI). This is the case for XCC. This widens the application area written in the source code of the educational compiler, and gives another reality to the students. 3 The only exception that we know is Java Virtual Machine (JVM). 8

3 2.2 Problems in native compiler approach and our solutions As mentioned in Section 2.1, there are many important advantages in native educational compilers. Unfortunately, however, the most difþcult problem in the native compiler approach is that the learning cost is greatly increased, since students need to acquire a wide range of knowledge on native machine instructions, assembly directives, application binary interface (ABI), and so on. Moreover, data structures for AST, symbol table, and type representation are difþcult for students to understand and implement. To solve these problems while preserving the good essence of the native compiler approach, we took the following three ways: We carefully deþned the source language of our own educational compiler as a strict syntactic subset of the C programming language, which has the following beneþts: This saves the time spent in teaching the syntax and semantics of the source language, since the instructors only have to explain the syntactic difference from C. This helps students more deeply understand the C semantics, for example, about left-to-right evaluation [22] in && and operators, pointer arithmetic in + and - operators, the difference between call by value and call by reference, and the lifetime of automatic variables. This is required to preserve the meaning of the source program being compiled, which is a very basic compiler s mission. Note that PL/0 [14], for example, is not a syntactic subset of Pascal, even though PL/0 is a simpliþed version of Pascal. For example, no type is speciþed in PL/0 (var i;), while a type is always speciþed in Pascal (var i: integer). This implies Pascal compilers cannot compile PL/0 programs, while C compilers can always compile any XC program without modiþcation. We emphasize and focus on code generation, but not on parsing and optimization. For example, we would like to put more emphasis on how to translate a while statement into i386 assembly code in Fig. 2 than on parsing and optimization. This is because in our opinion the most important thing is, for example, to teach a while statement can be implemented by combining a conditional branch (je in Fig. 2) and an unconditional branch (jmp in Fig. 2). Parsing techniques are often emphasized in compiler courses, since LALR parser generator is regarded as a great victory in computer science (eg., in [19]). Unfortunately, LALR parser generator is not the best solution. The grammar and action rules by GNU Bison (an LALR parser generator) are often complicated, since some kludges using Actions in Mid- Rules, etc. are required to handle context dependencies [21]. As a result, the parsers in GCC-3.4 and later are changed to hand-written recursive descent one, while the parser in old GCC was implemented by GNU Bison. In order to avoid the tedious kludges and to maximize the time for the students to concentrate on code generation, we decided to use the strategy of providing to the students the source code of the XCC front-end (scanner, parser and semantic analyzer) and course materials that explain how to access the AST, symbol table, etc. in the XCC front-end. Optimization plays a great important role in compiler systems. For a Þrst course in compiler construction, however, optimization is too complicated for the students to understand and implement. For this reason, our educational compiler XCC only uses a very naive register allocation method where general-purpose registers are used as a part of stack frame. This keeps XCC very compact. We provide a visualization tool for better understanding. As mentioned before, in native compiler approach, the students need to understand native machine instructions, assembly directives, and internal data structures in the educational compiler itself. The cost of learning and understanding them is very high. There is a limit to reduce the cost by enriching the course materials, or by improving the source code using software engineering techniques (eg., modularization and refactoring). Using a debugger (eg., GDB), students can examine the internal data structures, but they often get lost in the AST with hundreds of nodes. Also, technical documents tend to be large (eg., [20] has about 3,000 pages), so students often get lost in those large documents. Therefore, we provide a visualization tool to solve this problem, which includes: (1) Highlighting horizontal slices, that is, all related slices among the source code, assembly code, AST, symbol table, stack layout and compiler code. (2) Interactive tooltips 4 that explain machine instruction mnemonics, assembly directives, fundamental architecture components like registers, etc. (3) Visualization of the AST, symbol table and stack layout. This visualization tool is implemented as a rich internet application (RIA), which implies that students do not have to install it. 3. XCC AND MieruCompiler DETAILED 3.1 XC XC is a very compact language while preserving the high expressive power. XC has only 57 grammar rules in GNU Bison, while C has about 200 ones. XC has most features of C including types (eg., int, char, void, function types, pointer types), operators (eg., =,, &, *, +), control structures (eg., if-else, while, goto, return), and function (calls) with parameters. In XC, we eliminated most features that have alternative ways to write. For example, XC does not have the array operator ([]), but as a substitute for it, we can use malloc and pointer arithmetic in XC. For int a[10]; a[3]=5; in C, we can write int *a; a=malloc(40); *(a+3)=5; in XC. 3.2 XCC XCC is the educational compiler we developed; XCC translates an XC program into native assembly code (i386 and MIPS assembly code for now 5 ). To keep XCC simple, XCC does not have intermediate code nor optimizers. The code size of XCC for i386 is about 2,100 lines in C, GNU Bison and GNU Flex. So far, the projects using XCC have been conducted in Japan Advanced Institute of Science and Technology (JAIST) in 2000, in Tokyo Institute of Technology from 2003 through 2009, and in Wakayama University in MieruCompiler MieruCompiler is our integrated visualization tool with horizontal slicing. MieruCompiler statically visualizes the source code (XC), assembly code (i386 and MIPS), AST, compiler code (optional), symbol table and stack layout in XCC. 4 Tooltip is a small message window appearing when the user hovers the mouse pointer over an item, without clicking it. 5 XCC was originally developed to generate SPARC assembly code, but SPARC is not supported in the current XCC. 9

4 static void emit_code (struct AST *ast, char *fmt,...) { va_list argp; va_start (argp, fmt); vfprintf (fp, fmt, argp); /* fp is a global variable. */ va_end (argp); } Figure 4: Example of tooltips in MieruCompiler (a tooltip for popl instruction appearing 6 ) Figure 5: Example of stack layouts in MieruCompiler (local variable i is highlighted) Visualization in MieruCompiler As mentioned in Section 1, MieruCompiler provides a mechanism of horizontal slicing. As an example of horizontal slicing, in Fig. 3, the corresponding assembly code is highlighted when selecting a while statement. Note that all the other related slices in the AST, compiler code, symbol table and stack layout are also highlighted in MieruCompiler, but they are not shown in Fig. 3 for the lack of space. Fig. 4 shows an example of tooltips in MieruCompiler, which shows a compact description about i386 popl instruction (its format, semantics and usage example). In MieruCompiler, a tooltip will appear when the user hovers the mouse pointer over machine instructions, assembly directives (eg.,.text), register names (eg., %esp) and any form of addressing mode (eg., 4(%ebp) and r/m32) in assembly code and other tooltips. Note that MieruCompiler tooltips can be nested; the Þrst tooltip contains many items which show a second tooltip. Thus the user can see two or more tooltips simultaneously by hovering the mouse pointer over several items successively. Fig. 5 shows an example of the stack layout visualized in Mieru- Compiler, which shows that, from the bottom to the top, the stack consists of two arguments (size and data), a return address, an old value of %ebp pointed by %ebp, two local variables (i and j), and other intermediate values unknown at compile-time; and the stack top is pointed by %esp. This graphical information about the stack layouts is quite important to help the students to map a local variable or function argument to its corresponding location on the stack relative to the base pointer (%ebp for i386). This is necessary because application binary interface (ABI), including calling convention, alignment constraints and stack layouts, is often implicit and not clear, and thus ABI should be explicitly and compactly (i.e., graphically) provided Design and Implementation The code size of MieruCompiler is about 6,500 lines in C, GNU Flex and JavaScript (including JSON data Þles). JSON data Þles have all the data required by the MieruCompiler tooltips. As a GUI toolkit for Web browsers, we use ExtJS 2.2. MieruCompiler is implemented as a rich internet application (RIA), which implies no installation procedure is required. Moreover, MieruCompiler is easy for the students to use, since it runs on Web browsers like Firefox and Google Chrome. 6 Slightly modiþed for presentation purpose. Some descriptions in MieruCompiler are localized (i.e., Japanese is used) considering that most our undergraduate students are not good at English. #define emit_code(ast, fmt,...) \ emit_code(ast, "%s_%d,%s,%d," fmt, ast->ast_type, \ ast->ast_nth, FILE, LINE, ## VA_ARGS ) Figure 6: The macro emit_code for minimal modiþcation We needed to modify XCC so that MieruCompiler can obtain data being visualized from XCC. One important design policy is to minimize this modiþcation to XCC, which is required because it becomes much difþcult for the students to understand the XCC source code if XCC is heavily modiþed. Although we cannot go into detail for the lack of space, we achieved this goal; only 5 manual source code instrumentations to XCC were required, whose total code size is only 15 lines. One way we took is to deþneamacroemit_code (Fig. 6, bottom) to transparently override the original function emit_code (Fig. 6, top). The function emit_code is just a wrapper function of printf with an extra parameter ast for debugging purpose. The macro emit_code is recursively deþned, but this works well since the C standard guarantees to expand a recursive macro only once ( in [22]). 4. PRELIMINARY EVALUATION In this section, we discuss our experience using XCC and Mieru- Compiler in Tokyo Institute of Technology and Wakayama University. 15 students tried to implement (a part of) code generator for i386 architecture using XCC and MieruCompiler. The student skills vary widely from a student with no experience on compiler to a student with experience on developing PL/0 compiler. At the beginning of the projects, we gave the source code of XCC frontend to the students. XCC and MieruCompiler were well received by most our students. 4.1 Experience on XCC The following are comments from the students. XCC is suitable for learning a foundation of i386 assembly language programming. It is good that after the projects XCC gives other advanced exercises for eager students like implementing optimizers (register allocation in particular) and their own front-end. XCC gave me a new point of view for programming through understanding XCC s AST and compilation mechanism. It is not clear for me to what extent XCC s semantic analysis is done in the given front-end. (eg., in XCC, a type analysis is done, but no analysis on L-value and R-value is done.) XCC is difþcult for less experienced students. Simpler compiler projects might be better for them using a simpler source language with basic operators, control structures (eg., if and while) and no functions; and a simpler virtual machine code like P-code. 4.2 Experience on MieruCompiler The following are comments from the students. Horizontal slicing in MieruCompiler enables me to quickly understand the corresponding i386 assembly code when pointing at a code fragment of XCC, and thus it is quite useful. Stack layouts shown in MieruCompiler are also useful. 10

5 Tooltips are popped up in MieruCompiler when pointing at a code fragment of i386 assembly code. This immediately reminds me of its meaning. Thus the tooltips are quite useful since the i386 addressing mode is complex in particular. I did not use the visualization mechanism at all. (Note: he is a relatively experienced student.) More detailed information should be provided in MieruCompiler, for example, about all members in AST (struct AST) and types (struct Type). I want MieruCompiler to provide a comprehensive tutorial and reference for i386 assembly language programming, since tooltips are not enough for less experienced students to learn i386 from the scratch. 5. RELATED WORK To our knowledge, there are no ones available on the Internet that have the same concept as XCC and MieruCompiler, although many educational compilers/visualizers have been proposed so far. 5.1 Educational compilers Unexpectedly, there are few educational compilers that have all the following features, (1) which generate native code, (2) whose source language is a strict syntactic subset of real-world procedural programming languages like C, (3) which have an integrated visualization tool with horizontal slicing. PL/0 [14] do not generate native code, and the source language is not a subset of real-world procedural languages. [15] generate native code, but their source languages are not a subset of realworld procedural languages. Conversely, [16] s source language are a subset of real-world procedural languages, but they do not generate native code. MiniJava [3], Cool [15] and Bantam Java [17] are educational compilers whose source languages are object-oriented. Although the features in object-oriented languages like information hiding or inheritance are very important, but we believe that they are too dif- Þcult for undergraduate students to learn in a Þrst compiler course. All the above do not have an integrated visualization tool with horizontal slicing. 5.2 Visualization tools for compilers Many visualization tools have been proposed so far, but most of them are point solutions and thus not integrated. For example, many tools have a speciþc feature like visualizing only parsing [5] AC þ AST [6] AC þ assembly code [7] AC þ symbol tables [8] AC þ optimizers [9] AC þ compiler behaviors [10, 11] AD þ Only the UW illustrated compiler [13] provides an integrated visualization for the scanner, parser, PL/0 source code, generated P- code, AST, the runtime stack, etc. [13] mentioned that horizontal slicing is important, but it is not implemented due to the following reason: There is nothing intrinsically difþcult about implementing this slicing but maintaining the maps between IRs, including the graphical display of the IRs, was too complex for our implementation. To our knowledge, there are no visualization tools that provide horizontal slicing even at present, while MieruCompiler provides an integrated visualization with horizontal slicing. 6. CONCLUSION This paper proposes a novel visualization tool called MieruCompiler and an educational compiler called XCC for undergraduate students. To reduce the learning cost of XCC, MieruCompiler provides visualizations for (1) horizontal slicing, (2) tooltips for native machine instructions, etc., (3) stack layouts, etc. XCC and MieruCompiler support native code generation for students in a Þrst compiler course without sacriþcing their learning experience. As a preliminary evaluation, MieruCompiler was used in two universities, which produced promising results. 7. REFERENCES [1] Association for Computing Machinery and IEEE Computer Society, Computer Science Curriculum Update 2008, ComputerScience2008.pdf, [2] Saumya Debray, Making compiler design relevant for students who will (most likely) never design a compiler, Proc. 33rd SIGCSE tech. sympo. on Computer science education, pp , [3] Andrew W. Appel and Jens Palsberg, Modern Compiler Implementation in Java (2nd ed.), ISBN: X, 2002AD þ [4] Alfred V. Aho, Ravi Sethi and Jeffrey D. Ullman, Compilers: Principles, Techniques, and Tools, ISBN: , Addison-Wesley, [5] Alan Kaplan and Denise Shoup, CUPV a visualization tool for generated parsers, SIGCSE 00: Proc. 31st SIGCSE tech. sympo. on Computer science education, pp.11 15, [6] Steven R. Vegdahl, Using visualization tools to teach compiler design, Journal of Comput. Sci. in Colleges, 16(2), pp.72 83, [7] Joshua C. Estep and Christopher A. Healy, A ßexible tool for visualizing assembly code, Journal of Comput. Sci. in Colleges, pp.55 67, [8] Jaime Urquiza-Fuentes and Micael Gallego-Carrillo and Francisco Gortázar-Bellas and J. Ángel Velázquez-Iturbide, Visualizing the symbol table, ITICSE 06: Proc. 11th annual SIGCSE conf. on Innovation and technology in computer science education, Poster session, pp , [9] Boyd, M. and Whalley, D., Graphical visualization of compiler optimizations, Journal of Prog. Lang., 3(2), pp.69 94, [10] R. Daniel Resler, VisiCLANG a visible compiler for CLANG, SIGPLAN Not., 25(8), pp , [11] M. Eduard Tudoreanu, Designing Effective Program Visualization Tools for Reducing User s Cognitive Effort, ACM Sympo. on Software Visualization, pp , [12] Elizabeth White, Ranjan Sen and Nina Stewart, Hide and show: using real compiler code for teaching, Proc. 36th SIGCSE tech. sympo. on Computer Science Education, pp.12 16, [13] K. Andrews and R. R. Henry and W. K. Yamamoto, Design and implementation of the UW illustrated compiler, SIGPLAN Not., 23(7), pp , [14] Niklaus Wirth, Algorithms + Data Structures = Programs, ISBN-10: , Prentice Hall, [15] Alexander Aiken, Cool: A portable project for teaching compiler construction, ACM SIGPLAN Notices, 31(7), pp.19 26, [16] Evgeny A. Eremin, Educational Pascal compiler into MMIX code, Proc. 6th Baltic Sea Conf. on Computing education research, Koli Calling, Poster Session, pp , [17] Marc L. Corliss and E. Christopher Lewis, Bantam: a customizable, Java-based, classroom compiler, ACM SIGCSE Bulletin, 40(1), pp.38 42, [18] Martin Ruckert, Teaching compiler construction and language design: making the case for unusual compiler projects with postscript as the target language, Proc. 38th SIGCSE tech. sympo. on Computer science education, pp , [19] John S. Mallozzi, Thoughts on and tools for teaching compiler design, Journal of Comput. Sci. in Colleges, 21(2), pp , [20] Intel, Intel 64 and IA-32 Architectures Software Developer s Manuals, http: // [21] GNU Project, Bison Manual The Yacc-compatible Parser Generator, [22] Programming languages C: ISO/IEC 9899:1999. [23] System V Application Binary Interface, Intel386 Architecture Processor Supplement 4th Ed., developers/devspecs/abi386-4.pdf,

Frances: A Tool For Understanding Code Generation

Frances: A Tool For Understanding Code Generation Frances: A Tool For Understanding Code Generation Tyler Sondag Dept. of Computer Science Iowa State University 226 Atanasoff Hall Ames, IA 50014 sondag@cs.iastate.edu Kian L. Pokorny Division of Computing

More information

CA4003 - Compiler Construction

CA4003 - Compiler Construction CA4003 - Compiler Construction David Sinclair Overview This module will cover the compilation process, reading and parsing a structured language, storing it in an appropriate data structure, analysing

More information

Advanced compiler construction. General course information. Teacher & assistant. Course goals. Evaluation. Grading scheme. Michel Schinz 2007 03 16

Advanced compiler construction. General course information. Teacher & assistant. Course goals. Evaluation. Grading scheme. Michel Schinz 2007 03 16 Advanced compiler construction Michel Schinz 2007 03 16 General course information Teacher & assistant Course goals Teacher: Michel Schinz Michel.Schinz@epfl.ch Assistant: Iulian Dragos INR 321, 368 64

More information

The Mjølner BETA system

The Mjølner BETA system FakePart I FakePartTitle Software development environments CHAPTER 2 The Mjølner BETA system Peter Andersen, Lars Bak, Søren Brandt, Jørgen Lindskov Knudsen, Ole Lehrmann Madsen, Kim Jensen Møller, Claus

More information

Language-Independent Interactive Data Visualization

Language-Independent Interactive Data Visualization Language-Independent Interactive Data Visualization Alistair E. R. Campbell, Geoffrey L. Catto, and Eric E. Hansen Hamilton College 198 College Hill Road Clinton, NY 13323 acampbel@hamilton.edu Abstract

More information

Departamento de Investigación. LaST: Language Study Tool. Nº 143 Edgard Lindner y Enrique Molinari Coordinación: Graciela Matich

Departamento de Investigación. LaST: Language Study Tool. Nº 143 Edgard Lindner y Enrique Molinari Coordinación: Graciela Matich Departamento de Investigación LaST: Language Study Tool Nº 143 Edgard Lindner y Enrique Molinari Coordinación: Graciela Matich Noviembre 2005 Para citar este documento: Lindner, Edgard; Enrique Molinari,

More information

CSCI 3136 Principles of Programming Languages

CSCI 3136 Principles of Programming Languages CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University Winter 2013 CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University

More information

Language Processing Systems

Language Processing Systems Language Processing Systems Evaluation Active sheets 10 % Exercise reports 30 % Midterm Exam 20 % Final Exam 40 % Contact Send e-mail to hamada@u-aizu.ac.jp Course materials at www.u-aizu.ac.jp/~hamada/education.html

More information

1/20/2016 INTRODUCTION

1/20/2016 INTRODUCTION INTRODUCTION 1 Programming languages have common concepts that are seen in all languages This course will discuss and illustrate these common concepts: Syntax Names Types Semantics Memory Management We

More information

Interpreters and virtual machines. Interpreters. Interpreters. Why interpreters? Tree-based interpreters. Text-based interpreters

Interpreters and virtual machines. Interpreters. Interpreters. Why interpreters? Tree-based interpreters. Text-based interpreters Interpreters and virtual machines Michel Schinz 2007 03 23 Interpreters Interpreters Why interpreters? An interpreter is a program that executes another program, represented as some kind of data-structure.

More information

C Compiler Targeting the Java Virtual Machine

C Compiler Targeting the Java Virtual Machine C Compiler Targeting the Java Virtual Machine Jack Pien Senior Honors Thesis (Advisor: Javed A. Aslam) Dartmouth College Computer Science Technical Report PCS-TR98-334 May 30, 1998 Abstract One of the

More information

GSPIM: Graphical Visualization Tool for MIPS Assembly

GSPIM: Graphical Visualization Tool for MIPS Assembly GSPIM: Graphical Visualization Tool for MIPS Assembly Programming and Simulation Patrick Borunda Science University of Arizona pborunda@u.arizona.edu Chris Brewer Science University of Arizona brewer@u.arizona.edu

More information

Characteristics of Java (Optional) Y. Daniel Liang Supplement for Introduction to Java Programming

Characteristics of Java (Optional) Y. Daniel Liang Supplement for Introduction to Java Programming Characteristics of Java (Optional) Y. Daniel Liang Supplement for Introduction to Java Programming Java has become enormously popular. Java s rapid rise and wide acceptance can be traced to its design

More information

Programming Language Concepts for Software Developers

Programming Language Concepts for Software Developers Programming Language Concepts for Software Developers Peter Sestoft IT University of Copenhagen, Denmark sestoft@itu.dk Abstract This note describes and motivates our current plans for an undergraduate

More information

CTutor. Tiago Aguiar tiago.afonso.aguiar@ist.utl.pt. Instituto Superior Técnico, Lisboa, Portugal November 2014

CTutor. Tiago Aguiar tiago.afonso.aguiar@ist.utl.pt. Instituto Superior Técnico, Lisboa, Portugal November 2014 CTutor Tiago Aguiar tiago.afonso.aguiar@ist.utl.pt Instituto Superior Técnico, Lisboa, Portugal November 2014 Abstract CTutor is a program visualization tool for the programming language, C. As the name

More information

language 1 (source) compiler language 2 (target) Figure 1: Compiling a program

language 1 (source) compiler language 2 (target) Figure 1: Compiling a program CS 2112 Lecture 27 Interpreters, compilers, and the Java Virtual Machine 1 May 2012 Lecturer: Andrew Myers 1 Interpreters vs. compilers There are two strategies for obtaining runnable code from a program

More information

Virtual Machines as an Aid in Teaching Computer Concepts

Virtual Machines as an Aid in Teaching Computer Concepts Virtual Machines as an Aid in Teaching Computer Concepts Ola Ågren Department of Computing Science Umeå University SE-901 87 Umeå, SWEDEN E-mail: Ola.Agren@cs.umu.se Abstract A debugger containing a set

More information

Technical paper review. Program visualization and explanation for novice C programmers by Matthew Heinsen Egan and Chris McDonald.

Technical paper review. Program visualization and explanation for novice C programmers by Matthew Heinsen Egan and Chris McDonald. Technical paper review Program visualization and explanation for novice C programmers by Matthew Heinsen Egan and Chris McDonald Garvit Pahal Indian Institute of Technology, Kanpur October 28, 2014 Garvit

More information

Lifting the Hood of the Computer: * Program Animation with the Teaching Machine

Lifting the Hood of the Computer: * Program Animation with the Teaching Machine Lifting the Hood of the Computer: * Program Animation with the Teaching Machine Michael P. Bruce-Lockhart and Theodore S. Norvell Electrical and Computer Engineering Faculty of Engineering and Applied

More information

TEACHING COMPUTER PROGRAMMING WITH PROGRAM ANIMATION

TEACHING COMPUTER PROGRAMMING WITH PROGRAM ANIMATION TEACHING COMPUTER PROGRAMMING WITH PROGRAM ANIMATION Theodore S. Norvell and Michael P. Bruce-Lockhart Electrical and Computer Engineering Faculty of Engineering and Applied Science Memorial University

More information

Syntax Check of Embedded SQL in C++ with Proto

Syntax Check of Embedded SQL in C++ with Proto Proceedings of the 8 th International Conference on Applied Informatics Eger, Hungary, January 27 30, 2010. Vol. 2. pp. 383 390. Syntax Check of Embedded SQL in C++ with Proto Zalán Szűgyi, Zoltán Porkoláb

More information

Language Evaluation Criteria. Evaluation Criteria: Readability. Evaluation Criteria: Writability. ICOM 4036 Programming Languages

Language Evaluation Criteria. Evaluation Criteria: Readability. Evaluation Criteria: Writability. ICOM 4036 Programming Languages ICOM 4036 Programming Languages Preliminaries Dr. Amirhossein Chinaei Dept. of Electrical & Computer Engineering UPRM Spring 2010 Language Evaluation Criteria Readability: the ease with which programs

More information

Objects for lexical analysis

Objects for lexical analysis Rochester Institute of Technology RIT Scholar Works Articles 2002 Objects for lexical analysis Bernd Kuhl Axel-Tobias Schreiner Follow this and additional works at: http://scholarworks.rit.edu/article

More information

1 The Java Virtual Machine

1 The Java Virtual Machine 1 The Java Virtual Machine About the Spec Format This document describes the Java virtual machine and the instruction set. In this introduction, each component of the machine is briefly described. This

More information

Parsing Technology and its role in Legacy Modernization. A Metaware White Paper

Parsing Technology and its role in Legacy Modernization. A Metaware White Paper Parsing Technology and its role in Legacy Modernization A Metaware White Paper 1 INTRODUCTION In the two last decades there has been an explosion of interest in software tools that can automate key tasks

More information

Programming Languages in a Liberal Arts Education

Programming Languages in a Liberal Arts Education Programming Languages in a Liberal Arts Education Kim Bruce Computer Science Department Pomona College Claremont, CA 91711 Stephen N. Freund Computer Science Department Williams College Williamstown, MA

More information

KITES TECHNOLOGY COURSE MODULE (C, C++, DS)

KITES TECHNOLOGY COURSE MODULE (C, C++, DS) KITES TECHNOLOGY 360 Degree Solution www.kitestechnology.com/academy.php info@kitestechnology.com technologykites@gmail.com Contact: - 8961334776 9433759247 9830639522.NET JAVA WEB DESIGN PHP SQL, PL/SQL

More information

SDT: A Programming Language for Debugging (Working Paper)

SDT: A Programming Language for Debugging (Working Paper) SDT: A Programming Language for Debugging (Working Paper) Steven P. Reiss Department of Computer Science Brown University Providence, RI 02912 spr@cs.brown.edu (401) 863-7641 January, 1989 Abstract This

More information

Compiler I: Syntax Analysis Human Thought

Compiler I: Syntax Analysis Human Thought Course map Compiler I: Syntax Analysis Human Thought Abstract design Chapters 9, 12 H.L. Language & Operating Sys. Compiler Chapters 10-11 Virtual Machine Software hierarchy Translator Chapters 7-8 Assembly

More information

Some programming experience in a high-level structured programming language is recommended.

Some programming experience in a high-level structured programming language is recommended. Python Programming Course Description This course is an introduction to the Python programming language. Programming techniques covered by this course include modularity, abstraction, top-down design,

More information

A Typing System for an Optimizing Multiple-Backend Tcl Compiler

A Typing System for an Optimizing Multiple-Backend Tcl Compiler The following paper was originally published in the Proceedings of the Fifth Annual Tcl/Tk Workshop Boston, Massachusetts, July 1997 A Typing System for an Optimizing Multiple-Backend Tcl Compiler Forest

More information

Component visualization methods for large legacy software in C/C++

Component visualization methods for large legacy software in C/C++ Annales Mathematicae et Informaticae 44 (2015) pp. 23 33 http://ami.ektf.hu Component visualization methods for large legacy software in C/C++ Máté Cserép a, Dániel Krupp b a Eötvös Loránd University mcserep@caesar.elte.hu

More information

Stack machines The MIPS assembly language A simple source language Stack-machine implementation of the simple language Readings: 9.1-9.

Stack machines The MIPS assembly language A simple source language Stack-machine implementation of the simple language Readings: 9.1-9. Code Generation I Stack machines The MIPS assembly language A simple source language Stack-machine implementation of the simple language Readings: 9.1-9.7 Stack Machines A simple evaluation model No variables

More information

Compiler Construction

Compiler Construction Compiler Construction Lecture 1 - An Overview 2003 Robert M. Siegfried All rights reserved A few basic definitions Translate - v, a.to turn into one s own language or another. b. to transform or turn from

More information

2) Write in detail the issues in the design of code generator.

2) Write in detail the issues in the design of code generator. COMPUTER SCIENCE AND ENGINEERING VI SEM CSE Principles of Compiler Design Unit-IV Question and answers UNIT IV CODE GENERATION 9 Issues in the design of code generator The target machine Runtime Storage

More information

Glossary of Object Oriented Terms

Glossary of Object Oriented Terms Appendix E Glossary of Object Oriented Terms abstract class: A class primarily intended to define an instance, but can not be instantiated without additional methods. abstract data type: An abstraction

More information

Chapter 1. Dr. Chris Irwin Davis Email: cid021000@utdallas.edu Phone: (972) 883-3574 Office: ECSS 4.705. CS-4337 Organization of Programming Languages

Chapter 1. Dr. Chris Irwin Davis Email: cid021000@utdallas.edu Phone: (972) 883-3574 Office: ECSS 4.705. CS-4337 Organization of Programming Languages Chapter 1 CS-4337 Organization of Programming Languages Dr. Chris Irwin Davis Email: cid021000@utdallas.edu Phone: (972) 883-3574 Office: ECSS 4.705 Chapter 1 Topics Reasons for Studying Concepts of Programming

More information

Introduction. Compiler Design CSE 504. Overview. Programming problems are easier to solve in high-level languages

Introduction. Compiler Design CSE 504. Overview. Programming problems are easier to solve in high-level languages Introduction Compiler esign CSE 504 1 Overview 2 3 Phases of Translation ast modifled: Mon Jan 28 2013 at 17:19:57 EST Version: 1.5 23:45:54 2013/01/28 Compiled at 11:48 on 2015/01/28 Compiler esign Introduction

More information

CSCI E 98: Managed Environments for the Execution of Programs

CSCI E 98: Managed Environments for the Execution of Programs CSCI E 98: Managed Environments for the Execution of Programs Draft Syllabus Instructor Phil McGachey, PhD Class Time: Mondays beginning Sept. 8, 5:30-7:30 pm Location: 1 Story Street, Room 304. Office

More information

JMulTi/JStatCom - A Data Analysis Toolkit for End-users and Developers

JMulTi/JStatCom - A Data Analysis Toolkit for End-users and Developers JMulTi/JStatCom - A Data Analysis Toolkit for End-users and Developers Technology White Paper JStatCom Engineering, www.jstatcom.com by Markus Krätzig, June 4, 2007 Abstract JStatCom is a software framework

More information

Programming Language Pragmatics

Programming Language Pragmatics Programming Language Pragmatics THIRD EDITION Michael L. Scott Department of Computer Science University of Rochester ^ШШШШШ AMSTERDAM BOSTON HEIDELBERG LONDON, '-*i» ЩЛ< ^ ' m H NEW YORK «OXFORD «PARIS»SAN

More information

How to make the computer understand? Lecture 15: Putting it all together. Example (Output assembly code) Example (input program) Anatomy of a Computer

How to make the computer understand? Lecture 15: Putting it all together. Example (Output assembly code) Example (input program) Anatomy of a Computer How to make the computer understand? Fall 2005 Lecture 15: Putting it all together From parsing to code generation Write a program using a programming language Microprocessors talk in assembly language

More information

Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives

Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives Introduction to Programming and Algorithms Module 1 CS 146 Sam Houston State University Dr. Tim McGuire Module Objectives To understand: the necessity of programming, differences between hardware and software,

More information

Combining Static and Dynamic Data in Code Visualization

Combining Static and Dynamic Data in Code Visualization Combining Static and Dynamic Data in Code Visualization David Eng Sable Research Group McGill University, Montreal flynn@sable.mcgill.ca ABSTRACT The task of developing, tuning, and debugging compiler

More information

Semantic Analysis: Types and Type Checking

Semantic Analysis: Types and Type Checking Semantic Analysis Semantic Analysis: Types and Type Checking CS 471 October 10, 2007 Source code Lexical Analysis tokens Syntactic Analysis AST Semantic Analysis AST Intermediate Code Gen lexical errors

More information

Towards OpenMP Support in LLVM

Towards OpenMP Support in LLVM Towards OpenMP Support in LLVM Alexey Bataev, Andrey Bokhanko, James Cownie Intel 1 Agenda What is the OpenMP * language? Who Can Benefit from the OpenMP language? OpenMP Language Support Early / Late

More information

Programming Languages

Programming Languages Programming Languages In the beginning To use a computer, you needed to know how to program it. Today People no longer need to know how to program in order to use the computer. To see how this was accomplished,

More information

What is a programming language?

What is a programming language? Overview Introduction Motivation Why study programming languages? Some key concepts What is a programming language? Artificial language" Computers" Programs" Syntax" Semantics" What is a programming language?...there

More information

General Introduction

General Introduction Managed Runtime Technology: General Introduction Xiao-Feng Li (xiaofeng.li@gmail.com) 2012-10-10 Agenda Virtual machines Managed runtime systems EE and MM (JIT and GC) Summary 10/10/2012 Managed Runtime

More information

Instruction Set Architecture (ISA)

Instruction Set Architecture (ISA) Instruction Set Architecture (ISA) * Instruction set architecture of a machine fills the semantic gap between the user and the machine. * ISA serves as the starting point for the design of a new machine

More information

Integrating Formal Models into the Programming Languages Course

Integrating Formal Models into the Programming Languages Course Integrating Formal Models into the Programming Languages Course Allen B. Tucker Robert E. Noonan Computer Science Department Computer Science Department Bowdoin College College of William and Mary Brunswick,

More information

02 B The Java Virtual Machine

02 B The Java Virtual Machine 02 B The Java Virtual Machine CS1102S: Data Structures and Algorithms Martin Henz January 22, 2010 Generated on Friday 22 nd January, 2010, 09:46 CS1102S: Data Structures and Algorithms 02 B The Java Virtual

More information

Pattern-based Program Visualization

Pattern-based Program Visualization Pattern-based Program Visualization Daniela da Cruz 1, Pedro Rangel Henriques 1, and Maria João Varanda Pereira 2 1 University of Minho - Department of Computer Science, Campus de Gualtar, 4715-057, Braga,

More information

A Memory Model for Static Analysis of C Programs

A Memory Model for Static Analysis of C Programs A Memory Model for Static Analysis of C Programs Zhongxing Xu 1, Ted Kremenek 2, and Jian Zhang 1 1 State Key Laboratory of Computer Science Institute of Software Chinese Academy of Sciences xzx@ios.ac.cn

More information

Chapter 7D The Java Virtual Machine

Chapter 7D The Java Virtual Machine This sub chapter discusses another architecture, that of the JVM (Java Virtual Machine). In general, a VM (Virtual Machine) is a hypothetical machine (implemented in either hardware or software) that directly

More information

Scanning and parsing. Topics. Announcements Pick a partner by Monday Makeup lecture will be on Monday August 29th at 3pm

Scanning and parsing. Topics. Announcements Pick a partner by Monday Makeup lecture will be on Monday August 29th at 3pm Scanning and Parsing Announcements Pick a partner by Monday Makeup lecture will be on Monday August 29th at 3pm Today Outline of planned topics for course Overall structure of a compiler Lexical analysis

More information

Programming Languages

Programming Languages Programming Languages Programming languages bridge the gap between people and machines; for that matter, they also bridge the gap among people who would like to share algorithms in a way that immediately

More information

Motorola 8- and 16-bit Embedded Application Binary Interface (M8/16EABI)

Motorola 8- and 16-bit Embedded Application Binary Interface (M8/16EABI) Motorola 8- and 16-bit Embedded Application Binary Interface (M8/16EABI) SYSTEM V APPLICATION BINARY INTERFACE Motorola M68HC05, M68HC08, M68HC11, M68HC12, and M68HC16 Processors Supplement Version 2.0

More information

Embedded Systems. Review of ANSI C Topics. A Review of ANSI C and Considerations for Embedded C Programming. Basic features of C

Embedded Systems. Review of ANSI C Topics. A Review of ANSI C and Considerations for Embedded C Programming. Basic features of C Embedded Systems A Review of ANSI C and Considerations for Embedded C Programming Dr. Jeff Jackson Lecture 2-1 Review of ANSI C Topics Basic features of C C fundamentals Basic data types Expressions Selection

More information

Lecture Outline. Stack machines The MIPS assembly language. Code Generation (I)

Lecture Outline. Stack machines The MIPS assembly language. Code Generation (I) Lecture Outline Code Generation (I) Stack machines The MIPS assembl language Adapted from Lectures b Profs. Ale Aiken and George Necula (UCB) A simple source language Stack- machine implementation of the

More information

Pattern-based Program Visualization

Pattern-based Program Visualization Proceedings of the International Multiconference on Computer Science and Information Technology pp. 1025 1036 ISSN 1896-7094 c 2007 PIPS Pattern-based Program Visualization Daniela da Cruz 1, Pedro Rangel

More information

Object-Oriented Software Specification in Programming Language Design and Implementation

Object-Oriented Software Specification in Programming Language Design and Implementation Object-Oriented Software Specification in Programming Language Design and Implementation Barrett R. Bryant and Viswanathan Vaidyanathan Department of Computer and Information Sciences University of Alabama

More information

On the (un)suitability of Java to be the first programming language

On the (un)suitability of Java to be the first programming language On the (un)suitability of Java to be the first programming language Mirjana Ivanovic Faculty of Science, Department of Mathematics and Informatics Trg Dositeja Obradovica 4, Novi Sad mira @im.ns.ac.yu

More information

The C Programming Language course syllabus associate level

The C Programming Language course syllabus associate level TECHNOLOGIES The C Programming Language course syllabus associate level Course description The course fully covers the basics of programming in the C programming language and demonstrates fundamental programming

More information

Artificial Intelligence. Class: 3 rd

Artificial Intelligence. Class: 3 rd Artificial Intelligence Class: 3 rd Teaching scheme: 4 hours lecture credits: Course description: This subject covers the fundamentals of Artificial Intelligence including programming in logic, knowledge

More information

Teaching Non-majors Computer Programming Using Games as Context and Flash ActionScript 3.0 as the Development Tools

Teaching Non-majors Computer Programming Using Games as Context and Flash ActionScript 3.0 as the Development Tools Teaching Non-majors Computer Programming Using Games as Context and Flash ActionScript 3.0 as the Development Tools Yue-Ling Wong Wake Forest University Computer Science Department Winston-Salem, NC 27109

More information

Computing Concepts with Java Essentials

Computing Concepts with Java Essentials 2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. Computing Concepts with Java Essentials 3rd Edition Cay Horstmann

More information

1 Abstract Data Types Information Hiding

1 Abstract Data Types Information Hiding 1 1 Abstract Data Types Information Hiding 1.1 Data Types Data types are an integral part of every programming language. ANSI-C has int, double and char to name just a few. Programmers are rarely content

More information

MICHIGAN TEST FOR TEACHER CERTIFICATION (MTTC) TEST OBJECTIVES FIELD 050: COMPUTER SCIENCE

MICHIGAN TEST FOR TEACHER CERTIFICATION (MTTC) TEST OBJECTIVES FIELD 050: COMPUTER SCIENCE MICHIGAN TEST FOR TEACHER CERTIFICATION (MTTC) TEST OBJECTIVES Subarea Educational Computing and Technology Literacy Computer Systems, Data, and Algorithms Program Design and Verification Programming Language

More information

Lumousoft Visual Programming Language and its IDE

Lumousoft Visual Programming Language and its IDE Lumousoft Visual Programming Language and its IDE Xianliang Lu Lumousoft Inc. Waterloo Ontario Canada Abstract - This paper presents a new high-level graphical programming language and its IDE (Integration

More information

Evolution of the Major Programming Languages

Evolution of the Major Programming Languages 142 Evolution of the Major Programming Languages Object Oriented Programming: Smalltalk Object-Oriented: It s fundamental characteristics are: Data abstraction, Inheritance and Dynamic Binding. The essence

More information

How To Write Portable Programs In C

How To Write Portable Programs In C Writing Portable Programs COS 217 1 Goals of Today s Class Writing portable programs in C Sources of heterogeneity Data types, evaluation order, byte order, char set, Reading period and final exam Important

More information

Intelligent Human Machine Interface Design for Advanced Product Life Cycle Management Systems

Intelligent Human Machine Interface Design for Advanced Product Life Cycle Management Systems Intelligent Human Machine Interface Design for Advanced Product Life Cycle Management Systems Zeeshan Ahmed Vienna University of Technology Getreidemarkt 9/307, 1060 Vienna Austria Email: zeeshan.ahmed@tuwien.ac.at

More information

Chapter 13: Program Development and Programming Languages

Chapter 13: Program Development and Programming Languages 15 th Edition Understanding Computers Today and Tomorrow Comprehensive Chapter 13: Program Development and Programming Languages Deborah Morley Charles S. Parker Copyright 2015 Cengage Learning Learning

More information

Lecture 9. Semantic Analysis Scoping and Symbol Table

Lecture 9. Semantic Analysis Scoping and Symbol Table Lecture 9. Semantic Analysis Scoping and Symbol Table Wei Le 2015.10 Outline Semantic analysis Scoping The Role of Symbol Table Implementing a Symbol Table Semantic Analysis Parser builds abstract syntax

More information

Programming Languages

Programming Languages Programming Languages Qing Yi Course web site: www.cs.utsa.edu/~qingyi/cs3723 cs3723 1 A little about myself Qing Yi Ph.D. Rice University, USA. Assistant Professor, Department of Computer Science Office:

More information

Java 6 'th. Concepts INTERNATIONAL STUDENT VERSION. edition

Java 6 'th. Concepts INTERNATIONAL STUDENT VERSION. edition Java 6 'th edition Concepts INTERNATIONAL STUDENT VERSION CONTENTS PREFACE vii SPECIAL FEATURES xxviii chapter i INTRODUCTION 1 1.1 What Is Programming? 2 J.2 The Anatomy of a Computer 3 1.3 Translating

More information

Cloud Computing. Up until now

Cloud Computing. Up until now Cloud Computing Lecture 11 Virtualization 2011-2012 Up until now Introduction. Definition of Cloud Computing Grid Computing Content Distribution Networks Map Reduce Cycle-Sharing 1 Process Virtual Machines

More information

Graph Visualization U. Dogrusoz and G. Sander Tom Sawyer Software, 804 Hearst Avenue, Berkeley, CA 94710, USA info@tomsawyer.com Graph drawing, or layout, is the positioning of nodes (objects) and the

More information

Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science

Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Fall 2005 Handout 7 Scanner Parser Project Wednesday, September 7 DUE: Wednesday, September 21 This

More information

CS 40 Computing for the Web

CS 40 Computing for the Web CS 40 Computing for the Web Art Lee January 20, 2015 Announcements Course web on Sakai Homework assignments submit them on Sakai Email me the survey: See the Announcements page on the course web for instructions

More information

A Thread Monitoring System for Multithreaded Java Programs

A Thread Monitoring System for Multithreaded Java Programs A Thread Monitoring System for Multithreaded Java Programs Sewon Moon and Byeong-Mo Chang Department of Computer Science Sookmyung Women s University, Seoul 140-742, Korea wonsein@nate.com, chang@sookmyung.ac.kr

More information

A Java-based environment for teaching programming language concepts æ

A Java-based environment for teaching programming language concepts æ A Java-based environment for teaching programming language concepts æ Manfred Hauswirth, Mehdi Jazayeri, and Alexander Winzer Distributed Systems Group Technical University of Vienna Argentinierstraße

More information

n Introduction n Art of programming language design n Programming language spectrum n Why study programming languages? n Overview of compilation

n Introduction n Art of programming language design n Programming language spectrum n Why study programming languages? n Overview of compilation Lecture Outline Programming Languages CSCI-4430 & CSCI-6430, Spring 2016 www.cs.rpi.edu/~milanova/csci4430/ Ana Milanova Lally Hall 314, 518 276-6887 milanova@cs.rpi.edu Office hours: Wednesdays Noon-2pm

More information

Design Patterns in Parsing

Design Patterns in Parsing Abstract Axel T. Schreiner Department of Computer Science Rochester Institute of Technology 102 Lomb Memorial Drive Rochester NY 14623-5608 USA ats@cs.rit.edu Design Patterns in Parsing James E. Heliotis

More information

Checking Access to Protected Members in the Java Virtual Machine

Checking Access to Protected Members in the Java Virtual Machine Checking Access to Protected Members in the Java Virtual Machine Alessandro Coglio Kestrel Institute 3260 Hillview Avenue, Palo Alto, CA 94304, USA Ph. +1-650-493-6871 Fax +1-650-424-1807 http://www.kestrel.edu/

More information

1. Overview of the Java Language

1. Overview of the Java Language 1. Overview of the Java Language What Is the Java Technology? Java technology is: A programming language A development environment An application environment A deployment environment It is similar in syntax

More information

Building Server-Side Web Language Processors

Building Server-Side Web Language Processors Building Server-Side Web Language Processors Ariel Ortiz Information Technology Department Tecnológico de Monterrey, Campus Estado de México Atizapán de Zaragoza, Estado de México, Mexico. 52926 ariel.ortiz@itesm.mx

More information

Eastern Washington University Department of Computer Science. Questionnaire for Prospective Masters in Computer Science Students

Eastern Washington University Department of Computer Science. Questionnaire for Prospective Masters in Computer Science Students Eastern Washington University Department of Computer Science Questionnaire for Prospective Masters in Computer Science Students I. Personal Information Name: Last First M.I. Mailing Address: Permanent

More information

An Extensible Framework for Providing Dynamic Data Structure Visualizations in a Lightweight IDE

An Extensible Framework for Providing Dynamic Data Structure Visualizations in a Lightweight IDE An Extensible Framework for Providing Dynamic Data Structure Visualizations in a Lightweight IDE T. Dean Hendrix, James H. Cross II, and Larry A. Barowski Computer Science and Software Engineering Auburn

More information

Frysk The Systems Monitoring and Debugging Tool. Andrew Cagney

Frysk The Systems Monitoring and Debugging Tool. Andrew Cagney Frysk The Systems Monitoring and Debugging Tool Andrew Cagney Agenda Two Use Cases Motivation Comparison with Existing Free Technologies The Frysk Architecture and GUI Command Line Utilities Current Status

More information

Chapter 5 Names, Bindings, Type Checking, and Scopes

Chapter 5 Names, Bindings, Type Checking, and Scopes Chapter 5 Names, Bindings, Type Checking, and Scopes Chapter 5 Topics Introduction Names Variables The Concept of Binding Type Checking Strong Typing Scope Scope and Lifetime Referencing Environments Named

More information

CS412/CS413. Introduction to Compilers Tim Teitelbaum. Lecture 20: Stack Frames 7 March 08

CS412/CS413. Introduction to Compilers Tim Teitelbaum. Lecture 20: Stack Frames 7 March 08 CS412/CS413 Introduction to Compilers Tim Teitelbaum Lecture 20: Stack Frames 7 March 08 CS 412/413 Spring 2008 Introduction to Compilers 1 Where We Are Source code if (b == 0) a = b; Low-level IR code

More information

GUI and Web Programming

GUI and Web Programming GUI and Web Programming CSE 403 (based on a lecture by James Fogarty) Event-based programming Sequential Programs Interacting with the user 1. Program takes control 2. Program does something 3. Program

More information

Architectural Design Patterns for Language Parsers

Architectural Design Patterns for Language Parsers Architectural Design Patterns for Language Parsers Gábor Kövesdán, Márk Asztalos and László Lengyel Budapest University of Technology and Economics Department of Automation and Applied Informatics Magyar

More information

RARITAN VALLEY COMMUNITY COLLEGE ACADEMIC COURSE OUTLINE. CISY 105 Foundations of Computer Science

RARITAN VALLEY COMMUNITY COLLEGE ACADEMIC COURSE OUTLINE. CISY 105 Foundations of Computer Science I. Basic Course Information RARITAN VALLEY COMMUNITY COLLEGE ACADEMIC COURSE OUTLINE CISY 105 Foundations of Computer Science A. Course Number and Title: CISY-105, Foundations of Computer Science B. New

More information

Compiler and Language Processing Tools

Compiler and Language Processing Tools Compiler and Language Processing Tools Summer Term 2011 Prof. Dr. Arnd Poetzsch-Heffter Software Technology Group TU Kaiserslautern Prof. Dr. Arnd Poetzsch-Heffter Compilers 1 Outline 1. Language Processing

More information

A TOOL FOR DATA STRUCTURE VISUALIZATION AND USER-DEFINED ALGORITHM ANIMATION

A TOOL FOR DATA STRUCTURE VISUALIZATION AND USER-DEFINED ALGORITHM ANIMATION A TOOL FOR DATA STRUCTURE VISUALIZATION AND USER-DEFINED ALGORITHM ANIMATION Tao Chen 1, Tarek Sobh 2 Abstract -- In this paper, a software application that features the visualization of commonly used

More information

The programming language C. sws1 1

The programming language C. sws1 1 The programming language C sws1 1 The programming language C invented by Dennis Ritchie in early 1970s who used it to write the first Hello World program C was used to write UNIX Standardised as K&C (Kernighan

More information

New Generation of Software Development

New Generation of Software Development New Generation of Software Development Terry Hon University of British Columbia 201-2366 Main Mall Vancouver B.C. V6T 1Z4 tyehon@cs.ubc.ca ABSTRACT In this paper, I present a picture of what software development

More information