The Email Sending and Editing Language Members: Yuting Chen (Program Manager) Serge Yegiazarov (Language Guru) Curtis Cooper (System Architect) Jiazhen.

Slides:



Advertisements
Similar presentations
Introduction to Macromedia Director 8.5 – Lingo
Advertisements

11-Jun-14 The assert statement. 2 About the assert statement The purpose of the assert statement is to give you a way to catch program errors early The.
Yoshi
INTRODUCTION Chapter 1 1. Java CPSC 1100 University of Tennessee at Chattanooga 2  Difference between Visual Logic & Java  Lots  Visual Logic Flowcharts.
How to Create a Java program CS115 Fall George Koutsogiannakis.
C#.NET C# language. C# A modern, general-purpose object-oriented language Part of the.NET family of languages ECMA standard Based on C and C++
Outline Java program structure Basic program elements
CS-341 Dick Steflik Introduction. C++ General purpose programming language A superset of C (except for minor details) provides new flexible ways for defining.
1 Problem 2 A Scanner / Parser for Simple C. 2 Outline l Language syntax for SC l Requirements for the scanner l Requirement for the parser l companion.
Honors 101, Fall 2006 Please do not sit in back of room! Lots of info on web page Join the mailing list Download Eclipse and start using it Read the text.
Compiler Construction Parsing I Ran Shaham and Ohad Shacham School of Computer Science Tel-Aviv University.
Introduction to Java.
Programming. Software is made by programmers Computers need all kinds of software, from operating systems to applications People learn how to tell the.
1.3 Executing Programs. How is Computer Code Transformed into an Executable? Interpreters Compilers Hybrid systems.
Copyright 2013 by Pearson Education Building Java Programs Chapter 1 Lecture 1-1: Introduction; Basic Java Programs reading:
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Java Software Solutions Foundations of Program Design Sixth Edition by Lewis.
Chapter 1 - Introduction. Ch 1Goals To understand the activity of programming To learn about the architecture of computers To learn about machine code.
CSE 131 Computer Science 1 Module 1: (basics of Java)
Introducing Java.
Project Manager: Kathy Sun Language Guru: Toni Ma System Architect: Mark Florian System Integrator: Kim Ly System Tester: Madhavan Somanathan COMS W4115.
220 FINAL TEST REVIEW SESSION Omar Abdelwahab. INHERITANCE AND POLYMORPHISM Suppose you have a class FunClass with public methods show, tell, and smile.
THE HOG LANGUAGE A scripting MapReduce language. Jason Halpern Testing/Validation Samuel Messing Project Manager Benjamin Rapaport System Architect Kurry.
CSCI 273: Processing An Introduction. Programming Languages –An abstract "human understandable" language for telling the computer what to do –The abstract.
An intro to programming. The purpose of writing a program is to solve a problem or take advantage of an opportunity Consists of multiple steps:  Understanding.
Boardr The Racing Board Game Creation Language. Project Manager: Eric Leung Language and Tools Guru: Shensi Ding System Architect: Seong Jin Park System.
CS 390- Unix Programming Environment CS 390 Unix Programming Environment Topics to be covered: Distributed Computing Fundamentals.
{ Graphite Grigory Arashkovich, Anuj Khanna, Anirban Gangopadhyay, Michael D’Egidio, Laura Willson.
© 2006 Pearson Education 1 Obj: cont 1.3 and 1.4, to become familiar with identifiers and to understand how programming languages work HW: p.51 #1.8 –
1 Module Objective & Outline Module Objective: After completing this Module, you will be able to, appreciate java as a programming language, write java.
Chapter 1: Introducing JAVA. 2 Introduction Why JAVA Applets and Server Side Programming Very rich GUI libraries Portability (machine independence) A.
CSCE 2013L: Lab 1 Overview  Java Basics The JVM Anatomy of a Java Program  Object-Oriented Programming Overview  Example: Payroll.java JDK Tools and.
The Java Programming Language
CS 11 java track: lecture 1 Administrivia need a CS cluster account cgi-bin/sysadmin/account_request.cgi need to know UNIX
Netprog: Java Intro1 Crash Course in Java. Netprog: Java Intro2 Why Java? Network Programming in Java is very different than in C/C++ –much more language.
CHAPTER 3 GC Java Fundamentals. 2 BASICS OF JAVA ENVIRONMENT  The environment  The language  Java applications programming Interface API  Various.
Interpretation Environments and Evaluation. CS 354 Spring Translation Stages Lexical analysis (scanning) Parsing –Recognizing –Building parse tree.
Introduction to Exception Handling and Defensive Programming.
PL/T Programming Language for Time Supervised by Professor Alfred V. Aho Teaching Assistant: Mr. Yan Zou Laurent Charignon (lc2817): Project Manager Sameer.
FIRST JAVA PROGRAM. JAVA PROGRAMS Every program may consist of 1 or more classes. Syntax of a class: Each class can contain 1 or more methods. public.
BUILD ON THE POLYGLOT COMPILER FRAMEWORK MIHAL BRUMBULLI 7th Workshop “SEERE” Montenegro-Risan 9-14 September 2007 SimJ Programming Language.
1 Compiler Design (40-414)  Main Text Book: Compilers: Principles, Techniques & Tools, 2 nd ed., Aho, Lam, Sethi, and Ullman, 2007  Evaluation:  Midterm.
Chapter 3 Syntax, Errors, and Debugging Fundamentals of Java.
Celluloid An interactive media sequencing language.
Core Java Introduction Byju Veedu Ness Technologies httpdownload.oracle.com/javase/tutorial/getStarted/intro/definition.html.
Dharmen Mehta (Project Manager) Nimai Buch (Language Guru) Yash Parikh (System Architect) Amol Joshi (System Integrator) Chaitanya Korgaonkar (Verifier.
The Facade Pattern (Structural) ©SoftMoore ConsultingSlide 1.
ITP 109 Week 2 Trina Gregory Introduction to Java.
Execution ways of program References: www. en.wikipedia.org/wiki/Integrated_development_environment  You can execute or run a simple java program with.
Announcements Assignment 2 Out Today Quiz today - so I need to shut up at 4:25 1.
Chapter 9: Continuing Classes By Matt Hirsch. Table Of Contents 1.Static Fields and Methods 2.Inheritance I. Recycle Code with Inheritance II. Overriding.
SOFTWARE DEVELOPMENT FOUNDATIONS, 1/12/12 J. Yates Monteith, Clemson University.
Windows Programming Lecture 06. Data Types Classification Data types are classified in two categories that is, – those data types which stores decimal.
CS 201 Lecture 1 (b) Using an IDE Tarik Booker CS 201: Introduction to Programming California State University, Los Angeles.
Copyright 2010 by Pearson Education APCS Building Java Programs Chapter 1 Lecture 1-1: Introduction; Basic Java Programs reading:
 It is a pure oops language and a high level language.  It was developed at sun microsystems by James Gosling.
CS-140 Dick Steflik Lecture 3. Java C++ Interpreted optimized for the internet Runs on virtual ized machine Derived from C++ Good object model Widely.
Lecture 9 Symbol Table and Attributed Grammars
CS210 Intermediate Computing with Data Structures (Java)
Compiler Design (40-414) Main Text Book:
Lecture 2 D&D Chapter 2 & Intro to Eclipse IDE Date.
Working with Java.
Introduction to Compiler Construction
CS 3304 Comparative Languages
Compilation and Debugging
Compilation and Debugging
Internet and Java Foundations, Programming and Practice
Programming without BlueJ Week 12
CS 153: Concepts of Compiler Design November 30 Class Meeting
Introduction to Algorithm Design
CMPE 152: Compiler Design August 23 Class Meeting
Presentation transcript:

The Sending and Editing Language Members: Yuting Chen (Program Manager) Serge Yegiazarov (Language Guru) Curtis Cooper (System Architect) Jiazhen Zhou (System Integrator) I-Hung Wang (System Tester) Karan Bathla (Mentor)

 Elit is a language designed to make the sending of mass customized s incredibly simple and intuitive.  It operates using Oracle’s JavaMail API, but abstracts away all the messy details.  Should be incredibly useful to anyone who has to routinely send out lists of s, including HR representatives, professors, managers, etc.  Uses a familiar and clean C-like syntax.

 Suppose you want to send a “Happy New Years!” message to an entire mailing list, but want to personalize each one with a name.  Suppose you want to send a congratulatory message to an entire mailing list, but don’t want to send the exact same one everywhere.  Suppose you want to send to an entire mailing list, but want to send one type of to one type of colleague, and another to another type.

 Elit builds on top of Java’s incredibly powerful virtual machine, leveraging only the code segments needed for an language.  An Elit source file is translated to a Java file, which is then run on the JVM to produce results.  Error checking occurs on front and back end.  Imperative, strongly and statically typed, statically scoped, pass by value, NE evaluation.

#account{ host = smtp.gmail.com; username = password = password1234; } main{ message happyNewYears = “Happy New Years!”; list contactList; foreach string s in contactList{ send(“Hello!”, happyNewYears, s); } }

“ main ” --> “ { ” --> “ message ” --> “ happyNewYears ” --> “ = ” --> “ “ ” --> “ Happy ” --> “ New ” --> “ Years! ” --> “ ” ” --> “ ; ” --> …etc

AddressTypeName messagehappyNewYears list contactList strings

public class Target { public static void main(String[] args) throws Exception { String happyNewYears = "Happy New Years!"; ArrayList contactList = new ArrayList (); for (String s : contactList) { Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.host", "smtp.gmail.com"); final String username = final String password = “password1234"; Session session = Session.getInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } }); try { Message message = new MimeMessage(session); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(s)); message.setSubject("Hello!"); message.setText(happyNewYears); Transport.send(message); } catch (MessagingException e) { throw new RuntimeException(e); }

 Showcases structs and wildcards.

 By Karan Bathla  Showcases user-defined functions, control flow, and wildcards.

 Showcases #insert, import(), export(), and wildcards.

 Elit is largely a translator, so it does not have its own runtime environment per se. Our environment works by translating Elit source code into a Java file.  The Java file is then executed through the usual Java virtual machine. Thus, the runtime environment of Elit is essentially the runtime environment of Java.  The execution environment consists of three main portions: the Main driving file, all the AST node classes, and the symbol table.  We are able to run this setup via both Eclipse and command line +.jar file.

 JFlex and CUP were used to develop the lexer and parser.  Windows batch scripts were used as early “makefiles”, but later moved to Eclipse.  Notepad++ first used to edit Java files, but later Eclipse.  GitHub for version control.  Google Drive for early lexer + grammar development, papers, and idea exchange.

del Yylex.java call jflex scanner.flex del parser.java java -jar java-cup-11a.jar -interface parser.cup javac -cp java-cup-11a-runtime.jar javax.mail.jar AST.java parser.java sym.java Symtab.java SymtabEntry.java Tstring_literal.java Tmessage_literal.java Tdefinition.java Texp.java Tident.java Tlist.java Tmain_declaration.java Tmessage.java Tnumber.java Tobject_function_call.java Tpar.java Tparlist.java Tprogram.java Tsend_call.java Tstatement_list.java Tstatement.java Tstring.java Tstruct_declaration_list.java Tstruct_declaration.java Tstruct_field_declaration_list.java Tstruct_field_declaration.java Ttype.java Yylex.java Main.java java -cp java-cup-11a-runtime.jar;javax.mail.jar;. Main<example.as PAUSE

 Roles were assigned, but were kept intentionally loose.  Weekly (but necessary) meetings were had.  Constant communication via Google Docs.  One person would initiate section, and others would build on top of it.  “Agile” methodology – test while you code.  Project success ultimately dependent on desire and discipline of the group.

 A Windows batch file was used to pump multiple Elit source files into the compiler, while keeping track of errors. boolean bool = 999; Result: Failure type mismatch (999 does not match boolean) int score = abc; Result: Failure type mismatch (abc does not match int) list plt; add(plt); Result: Failure add() takes two arguments

 It is important to begin early and work consistently (consistently meaning a little bit each week, instead of putting in a lot of work one week and taking the next week off).  It is good to keep in touch with your advisor, as he/she has lots of helpful advice.  There is no shame in reaching out to anybody for help - sometimes even the smallest bit of support can give your project weeks worth of progress.  Google Docs is a very useful tool for team communications, but is not ideal for sharing code. Used together with GitHub however, just about all coordination efforts are covered.  Having things planned out early was important and defined reasonable milestones at each development stage.  Make compromises when necessary.