2007 Science of Design (SoD) PI Meeting – Project Nuggets NSF SoD Award No: NSF SoD-HCER-0613885 Project Title: Learning Based Programming Investigator.

Slides:



Advertisements
Similar presentations
Agenda Definitions Evolution of Programming Languages and Personal Computers The C Language.
Advertisements

Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.
Architecture Representation
Chapter 3: Modules, Hierarchy Charts, and Documentation
INTRODUCTION TO MODELING
MotoHawk Training Model-Based Design of Embedded Systems.
2 We need programming languages to communicate with a computer. The two broad classifications of programming languages are: Low-level and High- level.
Programming with Objects: Class Libraries and Reusable Code.
Programming Languages Language Design Issues Why study programming languages Language development Software architectures Design goals Attributes of a good.
Inheritance and Class Hierarchies Chapter 3. Chapter 3: Inheritance and Class Hierarchies2 Chapter Objectives To understand inheritance and how it facilitates.
OOP in Java Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
HAS. Patterns The use of patterns is essentially the reuse of well established good ideas. A pattern is a named well understood good solution to a common.
Describing Syntax and Semantics
Software Engineering Principles and C++ Classes
Data Structures Using C++1 Chapter 1 Software Engineering Principles and C++ Classes.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 16 Slide 1 User interface design.
Access Control Problem A primary consideration in object- oriented design is to “separate the things that change from the things that stay.
Bridging the chasm between MDE and the world of compilation Nondini Das 1.
1 Chapter 5: Names, Bindings and Scopes Lionel Williams Jr. and Victoria Yan CSci 210, Advanced Software Paradigms September 26, 2010.
Katanosh Morovat.   This concept is a formal approach for identifying the rules that encapsulate the structure, constraint, and control of the operation.
Chapter 2 The process Process, Methods, and Tools
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
MT311 Java Application Development and Programming Languages Li Tak Sing( 李德成 )
Experiences with the Design and Development Process of DDI Requirements for Future Work Ideas for Improvement Joachim Wackerow.
High level & Low level language High level programming languages are more structured, are closer to spoken language and are more intuitive than low level.
ICOM 5995: Performance Instrumentation and Visualization for High Performance Computer Systems Lecture 7 October 16, 2002 Nayda G. Santiago.
หลักการโปรแกรม เพื่อแก้ปัญหาโดยใช้คอมพิวเตอร์
Chapter 1 Introduction Dr. Frank Lee. 1.1 Why Study Compiler? To write more efficient code in a high-level language To provide solid foundation in parsing.
Chapter 10: Compilers and Language Translation Invitation to Computer Science, Java Version, Third Edition.
CSCI 130 Chapter 1. History of C Bell Telephone Laboratories (1972) Dennis Ritchie (also created UNIX) A - B - C.
Chapter 1 Introduction. Goal to learn about computers and programming to compile and run your first Java program to recognize compile-time and run-time.
Copyright © 2006, The McGraw-Hill Companies, Inc. All rights reserved. Decision Support Systems Chapter 10.
CS200 Algorithms and Data StructuresColorado State University Part 4. Advanced Java Topics Instructor: Sangmi Pallickara
CSE 219 Computer Science III Program Design Principles.
Guided Notes Ch. 9 ADT and Modules Ch. 10 Object-Oriented Programming PHP support for OOP and Assignment 4 Term project proposal C++ and Java Designer.
Problem Solving Techniques. Compiler n Is a computer program whose purpose is to take a description of a desired program coded in a programming language.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 20 Slide 1 Critical systems development 3.
Data Structures Using C++1 Chapter 1 Software Engineering Principles and C++ Classes.
Software Production ( ) First Semester 2011/2012 Dr. Samer Odeh Hanna (PhD)
1 COMS 261 Computer Science I Title: C++ Fundamentals Date: September 05, 2005 Lecture Number: 4.
9-Dec Dec-15  INTRODUCTION.  FEATURES OF OOP.  ORGANIZATION OF DATA & FUNCTION IN OOP.  OOP’S DESIGN.
Software Engineering and Object-Oriented Design Topics: Solutions Modules Key Programming Issues Development Methods Object-Oriented Principles.
EGR 115 Introduction to Computing for Engineers Branching & Program Design – Part 1 Monday 29 Sept 2014 EGR 115 Introduction to Computing for Engineers.
OOP (Object Oriented Programming) Lecture 1. Why a new paradigm is needed? Complexity Five attributes of complex systems –Frequently, complexity takes.
CSI 1340 Introduction to Computer Science II Chapter 1 Software Engineering Principles.
Introduction to OOP CPS235: Introduction.
Software Development Introduction
Inheritance and Class Hierarchies Chapter 3. Chapter 3: Inheritance and Class Hierarchies2 Chapter Objectives To understand inheritance and how it facilitates.
By: Nelson Webster. Algorithm Engineers Algorithm engineers study the effectiveness and efficiency of procedures of solving problems on a computer.
Program Design. Simple Program Design, Fourth Edition Chapter 1 2 Objectives In this chapter you will be able to: Describe the steps in the program development.
Static model noOverlaps :: ArgumentCandidate[] candidates -> discrete[] types for (i : (0.. candidates.size() - 1)) for (j : (i candidates.size()
Software Engineering Algorithms, Compilers, & Lifecycle.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
Chapter 2 Bring systems into being April Aims of this Lecture To explain what is “System Life-Cycle” To understand the systems engineering process.
Object-oriented programming (OOP) is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their.
EGR 115 Introduction to Computing for Engineers
Visit for more Learning Resources
Basic Concepts in Software Design
About the Presentations
Comp Sci 200 Programming I Jim Williams, PhD.
Developing Applications
Introduction to Problem Solving
Programming Fundamentals (750113) Ch1. Problem Solving
Programming Fundamentals (750113) Ch1. Problem Solving
Programming Fundamentals (750113) Ch1. Problem Solving
Chapter 10: Compilers and Language Translation
An Orchestration Language for Parallel Objects
Dan Roth Department of Computer Science
Software Architecture & Design
Presentation transcript:

2007 Science of Design (SoD) PI Meeting – Project Nuggets NSF SoD Award No: NSF SoD-HCER Project Title: Learning Based Programming Investigator Name: Dan Roth Institution Name: University of Illinois at Urbana- Champaign Website URL: LBP provides clean modularization and a rapid development cycle for applications involving functions whose definitions are data-driven and difficult to write explicitly. Project Description and Outcomes: Conventional programming languages rely on a programmer to explicitly define all the concepts and relations involved. On the other hand, programming with naturally-occurring data, that is highly variable and ambiguous at the measurement level, necessitates a programming model in which some of the variables, concepts and relations may not be known at programming time, may be defined only in a data driven way, or may not be unambiguously defined without relying on other concepts acquired this way. Learning Based Programming (LBP) is a programming paradigm for seamless incorporation of trainable variables into the program and, consequently, the ability to reason using high level concepts without the need to explicitly define them in terms of all the variables they might depend on, or the functional dependencies among them. These may be determined in a data-driven way, via learning operators the operation of which is abstracted away from the programmer. Learning Based Programming (LBP) is intended to support designing and combining multiple discriminative functions into a coherent, global inference solution. LBP functions may be defined deterministically or in a stochastic, data driven manner with the aid of learning algorithms. Therefore, an LBP program represents a set of possible programs. The element of that set which will actually execute is not known until data is acquired. Furthermore, LBP provides a principled framework for combining the functions’ outputs into an optimized inference solution by enforcing global constraints on their values. This Work is notable because (potential contributions to the Science of Design): This project will lead to cross-fertilization and mutual reinvigoration of the software engineering and machine learning fields. Enabling the development of computer systems that interact and cope with the variability of naturally occurring (sensor) data will require fundamental advances in compilation and software engineering issues. Conversely, availability of the LBP vehicle will motivate researchers in machine learning to explore the process of making inferences that rely on a large number of mutually dependent learners as a means to providing programmers with better abstractions so that they can more effectively tackle a broad range of increasingly complex applications involving such data. Progress so far: Learning Based Java (LBJ) is our implementation of LBP. We have developed beta versions of the LBJ compiler and run-time library. The LBJ compiler takes as input a source file containing a list of function and constraint declarations. The compiler then produces Java code that works in concert with the run-time library to perform inference: the outputs of the functions are combined, optimizing their values while respecting the constraints.