SlideShare a Scribd company logo
Designing the Tetra IDE
Shehan Rajapakse and Ian Finlayson
Department of Computer Science, University of Mary Washington
Conclusions
Conclusions of this research:
• Functional IDE that interacts with language interpreter
• IDE ready to package and distribute
Planned features:
• Ability to show multiple threads at once
• Debugging tool
• Ability to step through code
Acknowledgements
Funding for this project was provided by the UMW Summer
Science Institute
Materials and Methods
To develop the Tetra environment, a C++ based User
Interface/Application software known as Qt was used.
Week 10
Implementing multiple thread windows and redirecting standard output
Week 9
Linking IDE with the compiler and interpreter and catching/displaying errors
Week 8
Implementing line number feature and cursor position
Week 7
Implementing smart indent and navigation
Week 6
Laying out editor and implementing syntax highlighter
Week 5
Implementing standard window controls and shortcuts
Week 4
Designing the editor window and creating menu bars and a toolbar with icons
Week 3
Designing open and close application dialogs
Week 1-2
Learning how to use Qt via web tutorials and practice applications
Further Information
Please visit tetra-lang.org to see updates of the Tetra
development process or learn about getting your own
version of the Tetra IDE.
Abstract
With advances in computer technology, there has always been
an emphasis placed on achieving high speed and efficiency. In
previous decades, a great deal of effort was spent optimizing
the hardware of computers, with the result that computer
speeds have increased tremendously. Lately, however, the
performance of a single CPU core has plateaued. Future
performance gains lie in parallel computing, in which multiple
computations can be done at the same time using multiple
threads of execution on a multi-core CPU. Unfortunately, to
take advantage of these multi-core machines, programs must
be written in a parallel manner. The demand for parallel
programs is relatively new and is still not properly ingrained in
the minds of computer scientists, largely due to the complexity
of parallel hardware and language syntaxes. For this reason,
parallel programming is not nearly as widely understood and
practiced as it should be. Tetra is an educational programming
language that will help students and professionals better write,
debug, and visualize parallel programs, using a simple language
structure and built-in parallelism. To make using Tetra even
simpler, the language includes an Integrated Development
Environment (IDE), where users can write, run, and debug
their Tetra programs. The IDE was created using an
application framework known as Qt and contains Tetra-specific
syntax highlighting as well as the ability to run programs
dynamically. Furthermore, the environment has the capability
of displaying multiple windows for the different threads of a
program, enabling programmers to visualize the way that their
programs will be executed dynamically. Tetra will be used to
teach parallelism to computer scientists so they can more easily
learn how and where to utilize parallel programming
techniques.
Introduction
• The need for parallel processing comes from the fact
that single processor speeds have stagnated
• The parallel languages/tools that currently exist are low-
level and are often hard to learn
• Tetra code compiles to efficient, low-level parallel code
that will run on parallel architectures
Fig. 1. Single processor speeds over time
def main() int:
x = [0]
parallel:
work(x)
work(x)
return i
def work(x [int]):
lock inc:
x[0] += 1
Fig. 2. A snippet of
parallel Tetra code, using
its Python-like syntax
Results
Line numbers
Clickable UI
Buttons
Full Menu Bars Editor Toolbar
Splitter to resize
input/output windows
Syntax highlighting
Fig. 4. Event in the
Tetra IDE where syntax
error is thrown
Fig. 5. Successful build
in the Tetra IDE with
output
Fig. 6. Multiple thread
windows in the Tetra IDE
Line containing error
highlighted
Error message printed to
output window
Value of main() function
shown in output
Printed data shown in
output

More Related Content

What's hot

Overview new programming languages
Overview new programming languagesOverview new programming languages
Overview new programming languagesumoren
 
Programming language
Programming languageProgramming language
Programming language
Shuja Qais
 
10 lesson6
10 lesson610 lesson6
10 lesson6
Mary Grace Uminga
 
Jerry clark ian cabuntucan jr.
Jerry clark ian cabuntucan jr.Jerry clark ian cabuntucan jr.
Jerry clark ian cabuntucan jr.
jerryclarkc
 
10 lesson7
10 lesson710 lesson7
10 lesson7
Mary Grace Uminga
 
Intro To Programming Concepts
Intro To Programming ConceptsIntro To Programming Concepts
Intro To Programming ConceptsJussi Pohjolainen
 
Programming
ProgrammingProgramming
Programming
shalsmart12
 
Introduction to Programming Concepts By Aamir Saleem Ansari
Introduction to Programming Concepts By Aamir Saleem AnsariIntroduction to Programming Concepts By Aamir Saleem Ansari
Introduction to Programming Concepts By Aamir Saleem Ansari
Tech
 
Generations of programming language
Generations of programming languageGenerations of programming language
Generations of programming language
JAIDEVPAUL
 
Error hanadling in c programming presentation
Error hanadling in c programming presentationError hanadling in c programming presentation
Error hanadling in c programming presentation
PranaliPatil76
 
Programming Language Short Descriptions
Programming Language Short DescriptionsProgramming Language Short Descriptions
Programming Language Short Descriptions
Manu Devappa
 
Programming assignment help
Programming assignment helpProgramming assignment help
Programming assignment help
www.myassignmenthelp.net
 
20 Facts about Swift programming language
20 Facts about Swift programming language20 Facts about Swift programming language
20 Facts about Swift programming language
Rohit Tirkey
 
Chapter 3 what is programming
Chapter 3   what is programmingChapter 3   what is programming
Chapter 3 what is programming
Pro Guide
 
Algorithm pseudocode flowchart program notes
Algorithm pseudocode flowchart program notesAlgorithm pseudocode flowchart program notes
Algorithm pseudocode flowchart program notes
ArghodeepPaul
 
Introduction to computer science
Introduction to computer scienceIntroduction to computer science
Introduction to computer science
umardanjumamaiwada
 

What's hot (20)

CV Juhani Polvi
CV Juhani PolviCV Juhani Polvi
CV Juhani Polvi
 
Overview new programming languages
Overview new programming languagesOverview new programming languages
Overview new programming languages
 
Programming language
Programming languageProgramming language
Programming language
 
10 lesson6
10 lesson610 lesson6
10 lesson6
 
Jerry clark ian cabuntucan jr.
Jerry clark ian cabuntucan jr.Jerry clark ian cabuntucan jr.
Jerry clark ian cabuntucan jr.
 
Intro1
Intro1Intro1
Intro1
 
10 lesson7
10 lesson710 lesson7
10 lesson7
 
Intro To Programming Concepts
Intro To Programming ConceptsIntro To Programming Concepts
Intro To Programming Concepts
 
Programming
ProgrammingProgramming
Programming
 
Introduction to Programming Concepts By Aamir Saleem Ansari
Introduction to Programming Concepts By Aamir Saleem AnsariIntroduction to Programming Concepts By Aamir Saleem Ansari
Introduction to Programming Concepts By Aamir Saleem Ansari
 
Resume
ResumeResume
Resume
 
Generations of programming language
Generations of programming languageGenerations of programming language
Generations of programming language
 
Error hanadling in c programming presentation
Error hanadling in c programming presentationError hanadling in c programming presentation
Error hanadling in c programming presentation
 
Programming Language Short Descriptions
Programming Language Short DescriptionsProgramming Language Short Descriptions
Programming Language Short Descriptions
 
Programming assignment help
Programming assignment helpProgramming assignment help
Programming assignment help
 
20 Facts about Swift programming language
20 Facts about Swift programming language20 Facts about Swift programming language
20 Facts about Swift programming language
 
Chapter 3 what is programming
Chapter 3   what is programmingChapter 3   what is programming
Chapter 3 what is programming
 
Algorithm pseudocode flowchart program notes
Algorithm pseudocode flowchart program notesAlgorithm pseudocode flowchart program notes
Algorithm pseudocode flowchart program notes
 
LANGUAGE TRANSLATOR
LANGUAGE TRANSLATORLANGUAGE TRANSLATOR
LANGUAGE TRANSLATOR
 
Introduction to computer science
Introduction to computer scienceIntroduction to computer science
Introduction to computer science
 

Similar to SSI Poster

Portable Code Compiler
Portable Code CompilerPortable Code Compiler
Portable Code Compiler
ijtsrd
 
Stream SQL eventflow visual programming for real programmers presentation
Stream SQL eventflow visual programming for real programmers presentationStream SQL eventflow visual programming for real programmers presentation
Stream SQL eventflow visual programming for real programmers presentation
streambase
 
Latest_Edwin_Alberto_Arias_Espinoza
Latest_Edwin_Alberto_Arias_EspinozaLatest_Edwin_Alberto_Arias_Espinoza
Latest_Edwin_Alberto_Arias_EspinozaEdwin Espinoza
 
VIRTUAL LAB
VIRTUAL LABVIRTUAL LAB
VIRTUAL LAB
SAFAD ISMAIL
 
VidyaBhooshanMishra_CV
VidyaBhooshanMishra_CVVidyaBhooshanMishra_CV
VidyaBhooshanMishra_CVLandis+Gyr
 
DOT NET FULL STACK.pptx
DOT NET FULL STACK.pptxDOT NET FULL STACK.pptx
DOT NET FULL STACK.pptx
shaikruhiarsha3zenco
 
Java report by ravi raja
Java report by ravi rajaJava report by ravi raja
Java report by ravi raja
RaviRaja55
 
Synapse india fundamentals of dotnet development
Synapse india fundamentals of dotnet  developmentSynapse india fundamentals of dotnet  development
Synapse india fundamentals of dotnet development
Synapseindiappsdevelopment
 
Training report anish
Training report anishTraining report anish
Training report anishAnish Yadav
 
Shuzworld Analysis
Shuzworld AnalysisShuzworld Analysis
Shuzworld Analysis
Brenda Thomas
 
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.Elyra - a set of AI-centric extensions to JupyterLab Notebooks.
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.
Luciano Resende
 
The Nuxeo Way: leveraging open source to build a world-class ECM platform
The Nuxeo Way: leveraging open source to build a world-class ECM platformThe Nuxeo Way: leveraging open source to build a world-class ECM platform
The Nuxeo Way: leveraging open source to build a world-class ECM platform
Nuxeo
 
Katalon Studio - Successful Test Automation for both Testers and Developers
Katalon Studio - Successful Test Automation for both Testers and DevelopersKatalon Studio - Successful Test Automation for both Testers and Developers
Katalon Studio - Successful Test Automation for both Testers and Developers
Katalon Studio
 
How .NET Framework Supports Cost-Effective Application Development
How .NET Framework Supports Cost-Effective Application DevelopmentHow .NET Framework Supports Cost-Effective Application Development
How .NET Framework Supports Cost-Effective Application Development
Sara Suarez
 
Dot net
Dot netDot net
Dot net
public
 
Fantasy cricket game using python(intershala project)
Fantasy cricket game using python(intershala project)Fantasy cricket game using python(intershala project)
Fantasy cricket game using python(intershala project)
Rr
 
Declare Your Language: What is a Compiler?
Declare Your Language: What is a Compiler?Declare Your Language: What is a Compiler?
Declare Your Language: What is a Compiler?
Eelco Visser
 
Difference between .net and asp.net all you need to know
Difference between .net and asp.net  all you need to knowDifference between .net and asp.net  all you need to know
Difference between .net and asp.net all you need to know
sophiaaaddison
 

Similar to SSI Poster (20)

Portable Code Compiler
Portable Code CompilerPortable Code Compiler
Portable Code Compiler
 
Stream SQL eventflow visual programming for real programmers presentation
Stream SQL eventflow visual programming for real programmers presentationStream SQL eventflow visual programming for real programmers presentation
Stream SQL eventflow visual programming for real programmers presentation
 
Mannu_Kumar_CV
Mannu_Kumar_CVMannu_Kumar_CV
Mannu_Kumar_CV
 
Latest_Edwin_Alberto_Arias_Espinoza
Latest_Edwin_Alberto_Arias_EspinozaLatest_Edwin_Alberto_Arias_Espinoza
Latest_Edwin_Alberto_Arias_Espinoza
 
VIRTUAL LAB
VIRTUAL LABVIRTUAL LAB
VIRTUAL LAB
 
VidyaBhooshanMishra_CV
VidyaBhooshanMishra_CVVidyaBhooshanMishra_CV
VidyaBhooshanMishra_CV
 
DOT NET FULL STACK.pptx
DOT NET FULL STACK.pptxDOT NET FULL STACK.pptx
DOT NET FULL STACK.pptx
 
Java report by ravi raja
Java report by ravi rajaJava report by ravi raja
Java report by ravi raja
 
Synapse india fundamentals of dotnet development
Synapse india fundamentals of dotnet  developmentSynapse india fundamentals of dotnet  development
Synapse india fundamentals of dotnet development
 
Uday Resume
Uday ResumeUday Resume
Uday Resume
 
Training report anish
Training report anishTraining report anish
Training report anish
 
Shuzworld Analysis
Shuzworld AnalysisShuzworld Analysis
Shuzworld Analysis
 
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.Elyra - a set of AI-centric extensions to JupyterLab Notebooks.
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.
 
The Nuxeo Way: leveraging open source to build a world-class ECM platform
The Nuxeo Way: leveraging open source to build a world-class ECM platformThe Nuxeo Way: leveraging open source to build a world-class ECM platform
The Nuxeo Way: leveraging open source to build a world-class ECM platform
 
Katalon Studio - Successful Test Automation for both Testers and Developers
Katalon Studio - Successful Test Automation for both Testers and DevelopersKatalon Studio - Successful Test Automation for both Testers and Developers
Katalon Studio - Successful Test Automation for both Testers and Developers
 
How .NET Framework Supports Cost-Effective Application Development
How .NET Framework Supports Cost-Effective Application DevelopmentHow .NET Framework Supports Cost-Effective Application Development
How .NET Framework Supports Cost-Effective Application Development
 
Dot net
Dot netDot net
Dot net
 
Fantasy cricket game using python(intershala project)
Fantasy cricket game using python(intershala project)Fantasy cricket game using python(intershala project)
Fantasy cricket game using python(intershala project)
 
Declare Your Language: What is a Compiler?
Declare Your Language: What is a Compiler?Declare Your Language: What is a Compiler?
Declare Your Language: What is a Compiler?
 
Difference between .net and asp.net all you need to know
Difference between .net and asp.net  all you need to knowDifference between .net and asp.net  all you need to know
Difference between .net and asp.net all you need to know
 

SSI Poster

  • 1. Designing the Tetra IDE Shehan Rajapakse and Ian Finlayson Department of Computer Science, University of Mary Washington Conclusions Conclusions of this research: • Functional IDE that interacts with language interpreter • IDE ready to package and distribute Planned features: • Ability to show multiple threads at once • Debugging tool • Ability to step through code Acknowledgements Funding for this project was provided by the UMW Summer Science Institute Materials and Methods To develop the Tetra environment, a C++ based User Interface/Application software known as Qt was used. Week 10 Implementing multiple thread windows and redirecting standard output Week 9 Linking IDE with the compiler and interpreter and catching/displaying errors Week 8 Implementing line number feature and cursor position Week 7 Implementing smart indent and navigation Week 6 Laying out editor and implementing syntax highlighter Week 5 Implementing standard window controls and shortcuts Week 4 Designing the editor window and creating menu bars and a toolbar with icons Week 3 Designing open and close application dialogs Week 1-2 Learning how to use Qt via web tutorials and practice applications Further Information Please visit tetra-lang.org to see updates of the Tetra development process or learn about getting your own version of the Tetra IDE. Abstract With advances in computer technology, there has always been an emphasis placed on achieving high speed and efficiency. In previous decades, a great deal of effort was spent optimizing the hardware of computers, with the result that computer speeds have increased tremendously. Lately, however, the performance of a single CPU core has plateaued. Future performance gains lie in parallel computing, in which multiple computations can be done at the same time using multiple threads of execution on a multi-core CPU. Unfortunately, to take advantage of these multi-core machines, programs must be written in a parallel manner. The demand for parallel programs is relatively new and is still not properly ingrained in the minds of computer scientists, largely due to the complexity of parallel hardware and language syntaxes. For this reason, parallel programming is not nearly as widely understood and practiced as it should be. Tetra is an educational programming language that will help students and professionals better write, debug, and visualize parallel programs, using a simple language structure and built-in parallelism. To make using Tetra even simpler, the language includes an Integrated Development Environment (IDE), where users can write, run, and debug their Tetra programs. The IDE was created using an application framework known as Qt and contains Tetra-specific syntax highlighting as well as the ability to run programs dynamically. Furthermore, the environment has the capability of displaying multiple windows for the different threads of a program, enabling programmers to visualize the way that their programs will be executed dynamically. Tetra will be used to teach parallelism to computer scientists so they can more easily learn how and where to utilize parallel programming techniques. Introduction • The need for parallel processing comes from the fact that single processor speeds have stagnated • The parallel languages/tools that currently exist are low- level and are often hard to learn • Tetra code compiles to efficient, low-level parallel code that will run on parallel architectures Fig. 1. Single processor speeds over time def main() int: x = [0] parallel: work(x) work(x) return i def work(x [int]): lock inc: x[0] += 1 Fig. 2. A snippet of parallel Tetra code, using its Python-like syntax Results Line numbers Clickable UI Buttons Full Menu Bars Editor Toolbar Splitter to resize input/output windows Syntax highlighting Fig. 4. Event in the Tetra IDE where syntax error is thrown Fig. 5. Successful build in the Tetra IDE with output Fig. 6. Multiple thread windows in the Tetra IDE Line containing error highlighted Error message printed to output window Value of main() function shown in output Printed data shown in output