DYNAMIC, INSTANCE-BASED, OBJECT-ORIENTED PROGRAMMING IN MAX/MSP USING OPEN SOUND CONTROL MESSAGE DELEGATION
|
|
|
- Peregrine Matthews
- 10 years ago
- Views:
Transcription
1 DYNAMIC, INSTANCE-BASED, OBJECT-ORIENTED PROGRAMMING IN MAX/MSP USING OPEN SOUND CONTROL MESSAGE DELEGATION Adrian Freed John MacCallum Andrew Schmeder CNMAT Dept. of Music UC Berkeley, CA CNMAT Dept. of Music UC Berkeley, CA CNMAT Dept. of Music UC Berkeley, CA ABSTRACT A new media programming style is introduced that brings efficient run-time polymorphism, functional and instance-based object-oriented programming to Max/MSP and related visual dataflow languages. Examples are presented to illustrate new, unusual and effective applications of the approach of using OSC messages for object representations and data flow for method delegation. 1. INTRODUCTION Open Sound Control (OSC) was originally designed as a message-passing format to facilitate exchange of control parameters between programs on different computers across a network. Since its release in 1997 [1] OSC has proven to be useful for message exchanges between processes on the same computer system and more recently within processing modules in the same program [2]. This paper shows how OSC messages can provide the missing element (composable, dynamic data types) necessary to add object-oriented programming to dynamic, visual dataflow languages such as Max/MSP and PD History The core data types in Max/MSP (i.e., numbers, strings, and arrays) are typical of languages that were in common use as far back as the 1950's, e.g. Fortran (1957) and Algol (1958).Programs in Max/MSP are expressed using the visual dataflow approach that was first demonstrated in 1966 [3]. CNMAT s limited use (1997) of OSC messages as an aggregate datatype in Max/MSP [4] added what was broadly available in the late 1950 s and 1960 s in the form of records in Cobol (derived from FACT), the description lists in IPL, then property lists in Lisp and perhaps better known as the records of Pascal or structs in C. Regular expressions were designed into OSC originally to facilitate dynamic message dispatch, a core idea in Smalltalk (mid-1970 s). Few programmers exploited the potential of using the Max external OSC-route and regular expressions to implement dynamic objectoriented programming in Max presumably because of the hegemony of statically-typed class-based objectoriented programming invented in Simula (1962) and still active in Objective-C, C++ and Java. In 2007 the first author developed a suite of Max/MSP patches, called o. (pronounced Oh dot ). These were specifically designed to exploit generic programming (pioneered in Ada in 1980) to simplify and teach gesture signal processing in physical computing contexts. This early prototype explored the use of OSC (Sections 2-3 of this paper), ad-hoc polymorphism and delegation (Sections 4 and 6) for dynamic class-less objectorientated programming (OOP) based on his experience developing music programs in prototype-based OOP with the NewtonScript language [5]. With this early library Max programming was possible using many of the valuable new ideas in programming languages from the mid-1980 s, e.g. Self [6] and now thoroughly embedded in JavaScript (1995), for example. In the course of developing an efficient reimplementation of the o. suite as library in C, the second author created a particularly compact way to express unpacking and reassembling of OSC packets within Max/MSP. Realizing this was a run-time implementation of defunctionalization [7] we added lambda lifting to transform closures (symbolic Max object descriptions) into function objects [8]. The construction of this machinery resulted in the primitives necessary for functional programming in Max/MSP a key aspect of most programming languages developed in the 1990 s. The important practical contribution in o. implementation is that any Max patch or external can be mapped or applied over pieces of an OSC packet (As explained in Section 5). We have started to explore applications of the freely available o. library for gesture signal processing [9] and for other musical applications such as the customizable note editor of Section 9. We have found the library to be valuable tool to leverage the high degree of composability [17] that emerges when delegation, aggregation and mapping techniques of object-oriented programming are melded to dataflow execution models.
2 2. MISSING TYPES Max/MSP and PD are among the most popular programming languages for media computing and especially musical applications [10, 11]. An unfortunate legacy of the early success of these programs is their spartan support for data types and the lack of objects and a composable and extensible type system. Although type systems are harder to integrate into dataflow languages than conventional compiled procedural languages [12], theoretical and practical challenges for this have been overcome [13, 14] as evidenced in Ptolomy II. The developer community has addressed the type limitations of Max/MSP and PD by creating predefined opaque data structures and collections of objects that operate on them, such as Jitter and FTM [15]. The provided types are domain-specific and not composable into aggregate types. Users of these systems are required to learn a large number of primitive operations that only work on the new types. In these systems type parameterization is narrowly confined to being able to set the dimensions of predefined numeric matrix types and neither first-class objects nor the primitives necessary for dynamic object-oriented programming [6] are provided. Cycling74 has deferred the clean native integration of aggregate data types, offering instead an integration of Java and JavaScript into Max/MSP, thereby covering both class-based and instance-based object-oriented programming. This requires the learning of new programming languages, and addressing their particular scheduling and integration constraints. Lua integration in Max/MSP has also been explored [16]. The solution advanced in this paper is to use Open Sound Control messages and native Max/MSP patches and externals to implement objects for dynamic, instance-based object-oriented programming (sometimes referred to as prototype-based programming). Self [6], ECMAScript [17], JavaScript and NewtonScript [18, 19] are examples of languages using this classless programming style [20] [21] [22]. 3. OSC MESSAGE FEATURES FOR TYPE REPRESENTATION The key idea of Open Sound Control is that user-chosen names ( addresses ) are bound to data values. This is more than just the old idea of naming variables: because OSC messages move out of one program s context across a network into another s, the name/value pairs carry the meaning of the values to the destination. This has great practical value to the programmer, and helps with documenting complex systems. Bundles, the second important idea in OSC, allow many name/values pairs to be bound in a single, atomic structure. These two ideas are sufficient to allow OSC bundles to represent the property lists of Lisp, and SQL tables for example. The ordering of name/value pairs in OSC bundles is sufficient to represent the ordering requirement of C structures. Type tags are the third feature of OSC necessary to support type introspection (a necessary feature for polymorphism) and run time type checking in instancebased programming. Also, type tags and predefined endianness allow OSC messages to be mapped unambiguously to C structures, C++, Java classes or JavaScript objects. 4. OSC OBJECT CONSTRUCTION AND DISPATCH 4.1. Introduction In prototype-based object-oriented programming, objects are created from scratch (ex nihilo), or by cloning [23] and possibly modifying an existing prototype object. We implement cloning by allocating new memory and duplicating the contents of an OSC message from the prototype object (in the spirit of Kevo [24]). This implementation follows the convention of Max primitive types, is easy to understand, avoids atomicity issues and allows programs to be easily distributed to multiple processors without the cost of managing references [25]. For most OSC messages memory is allocated on the call stack of Max object outlet functions so the cost to allocate and free memory is trivial and known in advance Terminology For the rest of this paper objects built from OSC messages will be referred to as bundles and each member of the o. library will be referred to as a method. This avoids confusions that might result from the unconventional claim Max/MSP makes on the terms object, and message. These are respectively function and array in conventional (and ISO standard) parlance. The spirit of using the terms bundle and method is to help make this new dynamic objectprogramming style accessible to both novice and experienced Max/MSP programmers without being burdened with the considerable baggage that comes with the term object. Note that OSC methods are signalled with the name prefix o. as a simple way of establishing a clean name space Ex nihilo object creation The o.message method has the same user interface and input syntax as the Max/MSP message box, providing a constructor for an OSC bundle from a textual description. Just as with the Max message box, Max s list constructor, a simple list selection template operator
3 is invoked using the $1, $2, $n notation to describe how selected values are to be placed in the bundle. So the classic hello world program is implemented as in figure 1. Note the use of the second inlet of an o.message box to view the contents of a bundle directly within a patch. Figure 1. Hello World. Figure 2 better illustrates the dynamic list element substitution familiar to message box users: Figure 2. Bilingual Hello World Figure 3 reflects a more interesting media programming scenario Figure 3. Remote Hello World The last method in the chain results in the text associated with the /english address being sent as a udp packet to the 5007 port on the localhost server. The compact, expressive power illustrated in this example is an important feature of the ``o.'' library that will be more fully explained in section 5.1 after the requisite scaffolding has been described. Figure 5. Aggregating values into OSC bundles. Figure 5 shows how o.build can be used to create an interface to the Max keyboard slider that captures both legacy representations of a music keyboard depression as well as more contemporary ones. Note that bundling the data from each keyboard slider outlet better reflects the atomic binding of the two values implied by the gesture that created them than sending them as separate datum at different times out of separate outlets. This common use of the o.build method is analogous to the named associations style of Ada function call arguments [26]. Instead of having to direct the right parameters at the right time to the appropriate inlet, parameters are named and bound together into a single bundle. The advantages of this alternative to the positional association style of Max/MSP are well demonstrated in Jamoma [27] which adopts the convention that OSC bundles are sent to the first inlet of Jamoma modules o.build The o.build method collects values from its inlets and binds them to the given OSC addresses in the spirit of Max's pack object. It outputs the bundle on receipt of the bang message or a value in its first inlet. Default initial values may be provided after each address name in the argument list as shown in Figure 4. Figure 4. Building OSC Bundle associating values to addresses. Figure 6. OSC bundle from keyboard to synthesizer. Figure 6 illustrates this bussing scheme and how o.build s complementary method o.route can be used to bring values out of the OSC bundle into the Max/MSP
4 message world. Notice that the last outlet of o.route outputs a new bundle containing the unmatched elements of the original bundle. The remainder bundle can be further processed as the patch evolves illustrating the key to this delegation style of object-oriented inheritance. It is useful to contrast this approach with static classbased inheritance. The key difference is that in the delegation style new object types are created dynamically by simply adding new address/value pairs to existing objects. Programmers do not need to consult object definitions or API s to understand objects, their derivatives and promises: they simply look at the data in the objects themselves as they are formed and reformed as they move through the patch. Section 6 includes further discussion of delegation-style inheritance. mapping. By default the result is bound to the same name as the first argument is followed by the names to be assigned to new elements that will be added to the incoming specifies a prefix to be added to the address of the first argument. The value to the Max/MSP programmer of this machinery is that only a handful of new o. methods are needed to bring object-oriented and functional programming into Max/MSP and no changes to the Max/MSP kernel are required. Operations on the values stored in OSC bundles can be done with existing externals and abstractions including all the basic arithmetic and symbolic operations, the zl list objects and JavaScript. Examples are illustrated in Figure Making OSC methods from Max patches Instead of creating a large number of new objects to operate on OSC bundles it is possible to reuse existing Max/MSP externals and patches using functionmapping approaches that are analogous to map and apply from Lisp. The o.call object instantiates a Max patch internally according to its arguments and then routes named messages from incoming OSC packets to the internal Max patch. Finally it gathers the output into an OSC bundle. Figure 7. Keyboard Synthesizer with o.call data flow. Figure 7 illustrates o.call implementing a refined version of the keyboard synthesizer patch of Figure 6. The o.call method uses prefix and suffix operators so it is syntactically closer to Lisp and other functional languages than to C. To clarify subsequent examples we note that the argument list comes first followed by the function description (a Max patch which o.call dynamically instantiates). Finally there may be closing attributes following symbol. These are used to describe what to do with the results of the function call Figure 8. o.call examples using core Max functions. 6. Delegation-style Inheritance The example in Figure 7 has been augmented in Figure 9 with the feature of pitch-dependent panning to illustrate how delegation can be used to add functionality to programs in a way that promotes reuse (the core benefit of object-oriented programming).
5 raw data from the API and then one or more overlays of interpreted data according to the device. For example the HID protocol API provides numbered parameter values as the core data stream. The o.io method consults an XML file that describes how to build a symbolic address space from these numbered parameters according to the device and vendor id. 8. OSC Bundle Methods Figure 9. Delegation-based Inheritance. The /pan message is computed from the /midi/pitch message and added to the existing bundle. This is analogous to inheritance in class based object-oriented programming. The key to reuse is that neither the original patch assembling the description of the keyboard gesture nor the synthesizer need any changes to support the new /pan parameter. The additional sound functionality is added by using the delegation outlet (conventionally the rightmost) of the synthesizer patch. These new functionalities can of course be encapsulated as required. Note that the /pan route operation delegates its unmatched bundle output inviting future inheritance. 7. External Sources and Sinks of OSC Bundles External sources and sinks of OSC data include the venerable udpsend and udpreceive objects and sliposc for serial wrapped OSC (typically from USB serial devices). The new o.io method renders these Max functions obsolete by enumerating and wrapping data from all the core I/O subsystems of OS/X computers as OSC messages. This wrapping function is already partially met with programs such as Osculator ( and Glovepie (glovepie.org). Unfortunately there is measurable and potentially troublesome variance in the delay of messages via these programs. The o.io method minimizes these by time tagging the data using the lowest level API to get as close as possible to the actual time the data was acquired. The o.io method already supports core popular protocols HID, UDP, TCP, MIDI, serial and proprietary API s such as the one provided for the built-in laptop motion sensors and multitouch trackpads. The implementation of o.io was carefully designed for extensibility so that new API s and device types can be easily added. Bundles from o.io typically contain the Certain operations on bundles are clumsy to do by breaking them up into Max/MSP native types and reassembling them with o.build. These include merging, unions, intersections and accumulation for which the o.var method is provided. The o.if method is interesting in that it only inspects the contents of a bundle thereby avoid a copy operation as it directs the bundle out of the true or false outlet according to the evaluation of the conditional expression. The factorial calculation of figure 10 illustrates o.if in action and how recursion is compactly done with o. methods. 1! = 1,n!=n(n 1)! Figure 10. Recursion and o.if The evolving state of this computation is traceable by simply collecting the bundles recursively passed back. The concentration of observable state into bundles turns out to be a very productive programming technique, minimizing bugs that are hard to find because of state hidden within Max externals and patches. OSC time tags can be used in these traces for performance profiling. In the recursive implementation of the factorial function the o. calls correspond directly to the mathematical definition and all the mathematical operations are explicit. In the iterative version of Figure 11 implicit functionality of the uzi object is assumed to be understand as reflected in the different behaviour of each outlet. Figure 11. Factorial by Iteration
6 9. Music Notation Editor Example Figure 12. o.grandstaff Figure 12 shows a musical notation editor called o.grandstaff for Max. This example will serve to amplify the earlier points of the paper and place them in a more sophisticated musical context. With the o.grandstaff visual method notes are entered by pointer and keyboard, or by sending the method OSC bundles containing certain core addresses such as "/pitches" and "/time." The use of OSC bundles allows for the storage of any additional data alongside the core addresses for which the object has methods to interpret. This extensibility allows the composer to build personal elaborations of notation dynamically. Figure 13: Bundle with extra notation In figure 13, for example, commands destined for the synthesizer have been added to the bundle along with a message to be printed in the Max window. Although the synthesizer attached to the patch of Figure 13 may not yet be capable of implementing the highlevel description of an envelope such as "/attack tenuto," the message may still be added to the bundle to record the composer's intention. Until the synthesizer is elaborated the extra information will be stored but ignored. Sound synthesis and processing algorithms often require care in the order in which parameters are updated. Since o.grandstaff outputs OSC bundles, all control Figure 14. o.grandstaff with Synthesizer
7 parameters are delivered atomically to o.route which dispatches them according to the order of its arguments (right to left, following Max programming convention). The ability to associate the state of the instrument (synthesizer) that will play a note with the pitch to be played is closely related to traditional music notation in which timbral and dynamic information is placed near a given note. In figure 15 the lowest note of the first chord in figure 14 is shown in music notation. Figure 15. Sul pont. notation The OSC message "/gain" is encoded as the forte dynamic, "/articulation tenuto" appears as a tenuto mark below the notehead, and the "/brightness" message is analogous to the sul ponticello indication. Note that no intermediate representation (such as MIDI sequencer piano roll) is required or desired in this notation/synthesis system where the two components are coevolved in the course of each composition. 10. Conclusion With the o. library OSC messages are more than simply a new aggregate type for Max/MSP. They represent the glue necessary to integrate modern functional and object-oriented programming styles into a visual, dataflow language. Furthermore the time tags, atomicity and ordering semantics of OSC bundles promote productive development necessary for reactive media programming. 11. Dedication to Max Mathews We dedicate this paper to the memory of Max Mathews who started us all out on computer languages for music and who mentored and inspired three generations of exciting work. 12. Acknowledgements We gratefully acknowledge the support and encouragement of the McEnerney Endowment, Meyer Sound Laboratories, Pixar/Disney, the Concordia University Faculty of Fine Arts and the Concordia Specialized Individual Program (SIP) for interdisciplinary study. 13. Bibliography [1] Wright, M. and Freed, A. Open Sound Control: A New Protocol for Communicating with Sound Synthesizers. International Computer Music Association, City, [2] Wright, M., Freed, A., Lee, A., Madden, T. and Momeni, A. Managing Complexity with Explicit Mapping of Gestures to Sound Control with OSC. International Computer Music Association, City, [3] Sutherland, W. R. The On-Line Graphical Specification of Computer Procedures. Massachusetts Institute of Technology., [4] Wright, M., Wessel, D. and Freed, A. New Musical Control Structures from Standard Gestural Controllers. International Computer Music Association, [5] Smith, W. Class-based NewtonScript programming. PIE Developers1994). [6] Ungar, D. and Smith, R. Self: The power of simplicity. ACM, City, [7] Reynolds, J. Definitional interpreters for higher-order programming languages. Higher-order and symbolic computation, 11, ), [8] Johnsson, T. Lambda lifting: transforming programs to recursive equations. Springer, City, [9] Freed, A. M., J.; Schmeder, A. Composability for Musical Gesture Signal Processing using new OSC-based Object and Functional Programming Extensions to Max/MSP. In Proceedings of the NIME 2011 (OSLO, 2011) [10] Magnusson, T. and Hurtado, E. The Phenomenology of Musical Instruments: A Survey. econtact!, ). [11] Magnusson, T. and Mendieta, E. The acoustic, the digital and the body: A survey on musical instruments. ACM, City, [12] Xiong, Y. and Lee, E. An Extensible Type System for Component-Based Design. Springer Berlin / Heidelberg, City, [13] Lee, E. and Xiong, Y. System-Level Types for Component-Based Design. Springer Berlin / Heidelberg, City, [14] Lee, E. A. and Xiong, Y. A behavioral type system and its application in Ptolemy II. Formal Aspects of Computing, 16, ), [15] Schnell, N., Borghesi, R., Schwarz, D., Bevilacqua, F. and M ller, R. FTMóComplex data structures for Max. Citeseer, City, [16] Wakefield, G. and Smith, W. Using lua for audiovisual composition. City, [17] Hansen, L. Evolutionary Programming and Gradual Typing in ECMAScript 4 (Tutorial). [18] McKeehan, J. and Rhodes, N. Programming for the Newton: software development with NewtonScript. Academic Press Professional, Inc. San Diego, CA, USA, [19] Smith, W. SELF and the Origins of NewtonScript. PIE Developers magazine, July1994). [20] Smith, R. B. Prototype-based languages (panel): object lessons from class-free programming. In Proceedings of the Proceedings of the ninth annual conference on Objectoriented programming systems, language, and applications (Portland, Oregon, United States, 1994). ACM. [21] Noble, J., Taivalsaari, A. and Moore, I. Prototype-Based Programming: Concepts, Languages and Applications. Springer, [22] Dony, C., Malenfant, J. and Bardou, D. Classifying Prototype-based Programming Languages. Prototype-based Programming: Concepts, Languages and Applications, (1998).
8 [23] Taivalsaari, A. Delegation versus concatenation or cloning is inheritance too. SIGPLAN OOPS Mess., 6, ), [24] Taivalsaari, A. Kevo, a prototype-based object-oriented language based on concatenation and module operations. Report LACIR, [25] Levanoni, Y. and Petrank, E. An on-the-fly reference counting garbage collector for Java. ACM, City, [26] Taft, S. and Duff, R. Ada 95 reference manual: language and standard libraries: international standard ISO/IEC 8652: 1995 (E). Springer Verlag, [27] Place, T. and Lossius, T. Jamoma: A modular standard for structuring patches in Max. City, 2006.
Lecture 1: Introduction
Programming Languages Lecture 1: Introduction Benjamin J. Keller Department of Computer Science, Virginia Tech Programming Languages Lecture 1 Introduction 2 Lecture Outline Preview History of Programming
Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages. Corky Cartwright Swarat Chaudhuri November 30, 20111
Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages Corky Cartwright Swarat Chaudhuri November 30, 20111 Overview I In OO languages, data values (except for designated non-oo
Chapter 13 Computer Programs and Programming Languages. Discovering Computers 2012. Your Interactive Guide to the Digital World
Chapter 13 Computer Programs and Programming Languages Discovering Computers 2012 Your Interactive Guide to the Digital World Objectives Overview Differentiate between machine and assembly languages Identify
KITES TECHNOLOGY COURSE MODULE (C, C++, DS)
KITES TECHNOLOGY 360 Degree Solution www.kitestechnology.com/academy.php [email protected] [email protected] Contact: - 8961334776 9433759247 9830639522.NET JAVA WEB DESIGN PHP SQL, PL/SQL
Java (12 Weeks) Introduction to Java Programming Language
Java (12 Weeks) Topic Lecture No. Introduction to Java Programming Language 1 An Introduction to Java o Java as a Programming Platform, The Java "White Paper" Buzzwords, Java and the Internet, A Short
Fundamentals of Java Programming
Fundamentals of Java Programming This document is exclusive property of Cisco Systems, Inc. Permission is granted to print and copy this document for non-commercial distribution and exclusive use by instructors
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:
Moving from CS 61A Scheme to CS 61B Java
Moving from CS 61A Scheme to CS 61B Java Introduction Java is an object-oriented language. This document describes some of the differences between object-oriented programming in Scheme (which we hope you
Introduction to Software Paradigms & Procedural Programming Paradigm
Introduction & Procedural Programming Sample Courseware Introduction to Software Paradigms & Procedural Programming Paradigm This Lesson introduces main terminology to be used in the whole course. Thus,
Course Name: ADVANCE COURSE IN SOFTWARE DEVELOPMENT (Specialization:.Net Technologies)
Course Name: ADVANCE COURSE IN SOFTWARE DEVELOPMENT (Specialization:.Net Technologies) Duration of Course: 6 Months Fees: Rs. 25,000/- (including Service Tax) Eligibility: B.E./B.Tech., M.Sc.(IT/ computer
core. Volume I - Fundamentals Seventh Edition Sun Microsystems Press A Prentice Hall Title ULB Darmstadt
core. 2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. Volume I - Fundamentals Seventh Edition CAY S. HORSTMANN GARY
CSE 307: Principles of Programming Languages
Course Organization Introduction CSE 307: Principles of Programming Languages Spring 2015 R. Sekar Course Organization Introduction 1 / 34 Topics 1. Course Organization Info and Support Course Description
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,
Lesson 4 Web Service Interface Definition (Part I)
Lesson 4 Web Service Interface Definition (Part I) Service Oriented Architectures Module 1 - Basic technologies Unit 3 WSDL Ernesto Damiani Università di Milano Interface Definition Languages (1) IDLs
Curriculum Map. Discipline: Computer Science Course: C++
Curriculum Map Discipline: Computer Science Course: C++ August/September: How can computer programs make problem solving easier and more efficient? In what order does a computer execute the lines of code
Reusable Knowledge-based Components for Building Software. Applications: A Knowledge Modelling Approach
Reusable Knowledge-based Components for Building Software Applications: A Knowledge Modelling Approach Martin Molina, Jose L. Sierra, Jose Cuena Department of Artificial Intelligence, Technical University
The Smalltalk Programming Language. Beatrice Åkerblom [email protected]
The Smalltalk Programming Language Beatrice Åkerblom [email protected] 'The best way to predict the future is to invent it' - Alan Kay. History of Smalltalk Influenced by Lisp and Simula Object-oriented
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
Objectif. Participant. Prérequis. Remarque. Programme. C# 3.0 Programming in the.net Framework. 1. Introduction to the.
Objectif This six-day instructor-led course provides students with the knowledge and skills to develop applications in the.net 3.5 using the C# 3.0 programming language. C# is one of the most popular programming
Chapter 1. Dr. Chris Irwin Davis Email: [email protected] 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: [email protected] Phone: (972) 883-3574 Office: ECSS 4.705 Chapter 1 Topics Reasons for Studying Concepts of Programming
Objective C and iphone App
Objective C and iphone App 6 Months Course Description: Understanding the Objective-C programming language is critical to becoming a successful iphone developer. This class is designed to teach you a solid
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
COMPARISON OF OBJECT-ORIENTED AND PROCEDURE-BASED COMPUTER LANGUAGES: CASE STUDY OF C++ PROGRAMMING
COMPARISON OF OBJECT-ORIENTED AND PROCEDURE-BASED COMPUTER LANGUAGES: CASE STUDY OF C++ PROGRAMMING Kuan C. Chen, Ph.D. Assistant Professor Management Information Systems School of Management Purdue University
Java Application Developer Certificate Program Competencies
Java Application Developer Certificate Program Competencies After completing the following units, you will be able to: Basic Programming Logic Explain the steps involved in the program development cycle
Embedded Software Development with MPS
Embedded Software Development with MPS Markus Voelter independent/itemis The Limitations of C and Modeling Tools Embedded software is usually implemented in C. The language is relatively close to the hardware,
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
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
Organization of Programming Languages CS320/520N. Lecture 05. Razvan C. Bunescu School of Electrical Engineering and Computer Science bunescu@ohio.
Organization of Programming Languages CS320/520N Razvan C. Bunescu School of Electrical Engineering and Computer Science [email protected] Names, Bindings, and Scopes A name is a symbolic identifier used
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
Object-based vs. Class-based Languages
Abstract Object-based vs. Class-based Languages Luca Cardelli Digital Equipment Corporation Systems Research Center PLDIÕ96 Tutorial Class-based object-oriented programming languages take object generators
Object Oriented Database Management System for Decision Support System.
International Refereed Journal of Engineering and Science (IRJES) ISSN (Online) 2319-183X, (Print) 2319-1821 Volume 3, Issue 6 (June 2014), PP.55-59 Object Oriented Database Management System for Decision
Source Code Translation
Source Code Translation Everyone who writes computer software eventually faces the requirement of converting a large code base from one programming language to another. That requirement is sometimes driven
Algorithms, Flowcharts & Program Design. ComPro
Algorithms, Flowcharts & Program Design ComPro Definition Algorithm: o sequence of steps to be performed in order to solve a problem by the computer. Flowchart: o graphical or symbolic representation of
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
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
Max Fundamentals. Juan P Bello
Max Fundamentals Juan P Bello Max Max is a high-level graphic programming language, written in C It provides an interactive programming environment with extensive libraries of pre-compiled and pre-tested
To Java SE 8, and Beyond (Plan B)
11-12-13 To Java SE 8, and Beyond (Plan B) Francisco Morero Peyrona EMEA Java Community Leader 8 9...2012 2020? Priorities for the Java Platforms Grow Developer Base Grow Adoption
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
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
PCI Express Overview. And, by the way, they need to do it in less time.
PCI Express Overview Introduction This paper is intended to introduce design engineers, system architects and business managers to the PCI Express protocol and how this interconnect technology fits into
Chapter 2: Remote Procedure Call (RPC)
Chapter 2: Remote Procedure Call (RPC) Gustavo Alonso Computer Science Department Swiss Federal Institute of Technology (ETHZ) [email protected] http://www.iks.inf.ethz.ch/ Contents - Chapter 2 - RPC
From Faust to Web Audio: Compiling Faust to JavaScript using Emscripten
From Faust to Web Audio: Compiling Faust to JavaScript using Emscripten Myles Borins Center For Computer Research in Music and Acoustics Stanford University Stanford, California United States, [email protected]
Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science. Unit of Study / Textbook Correlation
Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science updated 03/08/2012 Unit 1: JKarel 8 weeks http://www.fcps.edu/is/pos/documents/hs/compsci.htm
Programming and Software Development CTAG Alignments
Programming and Software Development CTAG Alignments This document contains information about four Career-Technical Articulation Numbers (CTANs) for Programming and Software Development Career-Technical
Visual Programming of Logic, Motion, and Robotics
ADVANCED Motion Controls October 2014 Visual Programming of Logic, Motion, and Robotics Sándor Barta Overview The art of programming consists of mentally translating a workflow into a sequential programming
THE IMPACT OF INHERITANCE ON SECURITY IN OBJECT-ORIENTED DATABASE SYSTEMS
THE IMPACT OF INHERITANCE ON SECURITY IN OBJECT-ORIENTED DATABASE SYSTEMS David L. Spooner Computer Science Department Rensselaer Polytechnic Institute Troy, New York 12180 The object-oriented programming
Building Applications Using Micro Focus COBOL
Building Applications Using Micro Focus COBOL Abstract If you look through the Micro Focus COBOL documentation, you will see many different executable file types referenced: int, gnt, exe, dll and others.
Web Services for Management Perl Library VMware ESX Server 3.5, VMware ESX Server 3i version 3.5, and VMware VirtualCenter 2.5
Technical Note Web Services for Management Perl Library VMware ESX Server 3.5, VMware ESX Server 3i version 3.5, and VMware VirtualCenter 2.5 In the VMware Infrastructure (VI) Perl Toolkit 1.5, VMware
Charles Dierbach. Wiley
Charles Dierbach Wiley Contents Preface Acknowledgments About the Author XXI xxv xxvii Introduction 1 MOTIVATION 2 FUNDAMENTALS 2 1.1 What Is Computer Science? 2 1.1.1 The Essence of Computational Problem
Going Interactive: Combining Ad-Hoc and Regression Testing
Going Interactive: Combining Ad-Hoc and Regression Testing Michael Kölling 1, Andrew Patterson 2 1 Mærsk Mc-Kinney Møller Institute, University of Southern Denmark, Denmark [email protected] 2 Deakin University,
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
Compliance and Requirement Traceability for SysML v.1.0a
1. Introduction: Compliance and Traceability for SysML v.1.0a This document provides a formal statement of compliance and associated requirement traceability for the SysML v. 1.0 alpha specification, which
C#5.0 IN A NUTSHELL. Joseph O'REILLY. Albahari and Ben Albahari. Fifth Edition. Tokyo. Sebastopol. Beijing. Cambridge. Koln.
Koln C#5.0 IN A NUTSHELL Fifth Edition Joseph Albahari and Ben Albahari O'REILLY Beijing Cambridge Farnham Sebastopol Tokyo Table of Contents Preface xi 1. Introducing C# and the.net Framework 1 Object
Communication Networks. MAP-TELE 2011/12 José Ruela
Communication Networks MAP-TELE 2011/12 José Ruela Network basic mechanisms Network Architectures Protocol Layering Network architecture concept A network architecture is an abstract model used to describe
Chapter 15 Functional Programming Languages
Chapter 15 Functional Programming Languages Introduction - The design of the imperative languages is based directly on the von Neumann architecture Efficiency (at least at first) is the primary concern,
UML FOR OBJECTIVE-C. Excel Software www.excelsoftware.com
UML FOR OBJECTIVE-C Excel Software www.excelsoftware.com Objective-C is a popular programming language for Mac OS X computers. The Unified Modeling Language (UML) is the industry standard notation for
JOURNAL OF OBJECT TECHNOLOGY
JOURNAL OF OBJECT TECHNOLOGY Online at http://www.jot.fm. Published by ETH Zurich, Chair of Software Engineering JOT, 2006 Vol. 5, No. 6, July - August 2006 On Assuring Software Quality and Curbing Software
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.
Programming Language Inter-conversion
Programming Language Inter-conversion Dony George Priyanka Girase Mahesh Gupta Prachi Gupta Aakanksha Sharma FCRIT, Vashi Navi Mumbai ABSTRACT In this paper, we have presented a new approach of programming
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
MA-WA1920: Enterprise iphone and ipad Programming
MA-WA1920: Enterprise iphone and ipad Programming Description This 5 day iphone training course teaches application development for the ios platform. It covers iphone, ipad and ipod Touch devices. This
DEGREE PLAN INSTRUCTIONS FOR COMPUTER ENGINEERING
DEGREE PLAN INSTRUCTIONS FOR COMPUTER ENGINEERING Fall 2000 The instructions contained in this packet are to be used as a guide in preparing the Departmental Computer Science Degree Plan Form for the Bachelor's
Chapter 12 Programming Concepts and Languages
Chapter 12 Programming Concepts and Languages Chapter 12 Programming Concepts and Languages Paradigm Publishing, Inc. 12-1 Presentation Overview Programming Concepts Problem-Solving Techniques The Evolution
Open Cloud Computing Interface - Monitoring Extension
GFD-I OCCI-WG Augusto Ciuffoletti, Università di Pisa September 22, 2014 Updated: April 13, 2015 Open Cloud Computing Interface - Monitoring Extension Status of this Document This document provides information
Chapter 13: Program Development and Programming Languages
Understanding Computers Today and Tomorrow 12 th Edition Chapter 13: Program Development and Programming Languages Learning Objectives Understand the differences between structured programming, object-oriented
AQA GCSE in Computer Science Computer Science Microsoft IT Academy Mapping
AQA GCSE in Computer Science Computer Science Microsoft IT Academy Mapping 3.1.1 Constants, variables and data types Understand what is mean by terms data and information Be able to describe the difference
McGraw-Hill The McGraw-Hill Companies, Inc., 20 1. 01 0
1.1 McGraw-Hill The McGraw-Hill Companies, Inc., 2000 Objectives: To describe the evolution of programming languages from machine language to high-level languages. To understand how a program in a high-level
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
VDM vs. Programming Language Extensions or their Integration
VDM vs. Programming Language Extensions or their Integration Alexander A. Koptelov and Alexander K. Petrenko Institute for System Programming of Russian Academy of Sciences (ISPRAS), B. Communisticheskaya,
1 Introduction. 2 An Interpreter. 2.1 Handling Source Code
1 Introduction The purpose of this assignment is to write an interpreter for a small subset of the Lisp programming language. The interpreter should be able to perform simple arithmetic and comparisons
CEC225 COURSE COMPACT
CEC225 COURSE COMPACT Course GEC 225 Applied Computer Programming II(2 Units) Compulsory Course Duration Two hours per week for 15 weeks (30 hours) Lecturer Data Name of the lecturer: Dr. Oyelami Olufemi
Software Paradigms (Lesson 1) Introduction & Procedural Programming Paradigm
Software Paradigms (Lesson 1) Introduction & Procedural Programming Paradigm Table of Contents 1 Introduction... 2 1.1 Programming Paradigm... 2 1.2 Software Design Paradigm... 3 1.2.1 Design Patterns...
UML-based Test Generation and Execution
UML-based Test Generation and Execution Jean Hartmann, Marlon Vieira, Herb Foster, Axel Ruder Siemens Corporate Research, Inc. 755 College Road East Princeton NJ 08540, USA [email protected] ABSTRACT
A View Integration Approach to Dynamic Composition of Web Services
A View Integration Approach to Dynamic Composition of Web Services Snehal Thakkar, Craig A. Knoblock, and José Luis Ambite University of Southern California/ Information Sciences Institute 4676 Admiralty
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
Interactive Multimedia Courses-1
Interactive Multimedia Courses-1 IMM 110/Introduction to Digital Media An introduction to digital media for interactive multimedia through the study of state-of-the-art methods of creating digital media:
Integrated Open-Source Geophysical Processing and Visualization
Integrated Open-Source Geophysical Processing and Visualization Glenn Chubak* University of Saskatchewan, Saskatoon, Saskatchewan, Canada [email protected] and Igor Morozov University of Saskatchewan,
TOWARDS A GREEN PROGRAMMING PARADIGM FOR MOBILE SOFTWARE DEVELOPMENT
TOWARDS A GREEN PROGRAMMING PARADIGM FOR MOBILE SOFTWARE DEVELOPMENT Selvakumar Samuel Asia Pacific University of Technology and Innovation Technology Park Malaysia 57000 Bukit Jalil, Malaysia. Email:
SCADE System 17.0. Technical Data Sheet. System Requirements Analysis. Technical Data Sheet SCADE System 17.0 1
SCADE System 17.0 SCADE System is the product line of the ANSYS Embedded software family of products and solutions that empowers users with a systems design environment for use on systems with high dependability
White Paper: 5GL RAD Development
White Paper: 5GL RAD Development After 2.5 hours of training, subjects reduced their development time by 60-90% A Study By: 326 Market Street Harrisburg, PA 17101 Luis Paris, Ph.D. Associate Professor
8 Tutorial: Using ASN.1
8 Tutorial: Using ASN.1 Data Types This tutorial describes how to use ASN.1 types and values in the SDL suite. You will learn how to import and use ASN.1 modules in your SDL diagrams, how to generate code
Web Development in Java
Web Development in Java Detailed Course Brochure @All Rights Reserved. Techcanvass, 265, Powai Plaza, Hiranandani Garden, Powai, Mumbai www.techcanvass.com Tel: +91 22 40155175 Mob: 773 877 3108 P a g
Aculab digital network access cards
Aculab digital network access cards Adding and Using IPv6 Capabilities Guide Revision 1.0.2 PROPRIETARY INFORMATION Aculab Plc makes every effort to ensure that the information in this document is correct
Basic Trends of Modern Software Development
DITF LDI Lietišķo datorsistēmu programmatūras profesora grupa e-business Solutions Basic Trends of Modern Software Development 2 3 Software Engineering FAQ What is software engineering? An engineering
Programming Language Concepts for Software Developers
Programming Language Concepts for Software Developers Peter Sestoft IT University of Copenhagen, Denmark [email protected] Abstract This note describes and motivates our current plans for an undergraduate
Compiling Object Oriented Languages. What is an Object-Oriented Programming Language? Implementation: Dynamic Binding
Compiling Object Oriented Languages What is an Object-Oriented Programming Language? Last time Dynamic compilation Today Introduction to compiling object oriented languages What are the issues? Objects
Standard Languages for Developing Multimodal Applications
Standard Languages for Developing Multimodal Applications James A. Larson Intel Corporation 16055 SW Walker Rd, #402, Beaverton, OR 97006 USA [email protected] Abstract The World Wide Web Consortium
ADVANCED SCHOOL OF SYSTEMS AND DATA STUDIES (ASSDAS) PROGRAM: CTech in Computer Science
ADVANCED SCHOOL OF SYSTEMS AND DATA STUDIES (ASSDAS) PROGRAM: CTech in Computer Science Program Schedule CTech Computer Science Credits CS101 Computer Science I 3 MATH100 Foundations of Mathematics and
Patterns in. Lecture 2 GoF Design Patterns Creational. Sharif University of Technology. Department of Computer Engineering
Patterns in Software Engineering Lecturer: Raman Ramsin Lecture 2 GoF Design Patterns Creational 1 GoF Design Patterns Principles Emphasis on flexibility and reuse through decoupling of classes. The underlying
JavaScript Patterns. Stoyan Stefanov. O'REILLY' Beijing Cambridge Farnham Koln Sebastopol Tokyo
JavaScript Patterns Stoyan Stefanov O'REILLY' Beijing Cambridge Farnham Koln Sebastopol Tokyo Table of Contents Preface xi 1. Introduction 1 Patterns 1 JavaScript: Concepts 3 Object-Oriented 3 No Classes
In: Proceedings of RECPAD 2002-12th Portuguese Conference on Pattern Recognition June 27th- 28th, 2002 Aveiro, Portugal
Paper Title: Generic Framework for Video Analysis Authors: Luís Filipe Tavares INESC Porto [email protected] Luís Teixeira INESC Porto, Universidade Católica Portuguesa [email protected] Luís Corte-Real
Java SE 7 Programming
Java SE 7 Programming The second of two courses that cover the Java Standard Edition 7 (Java SE 7) Platform, this course covers the core Application Programming Interfaces (API) you will use to design
