Summer Internship

 

Our summer internship program offers 7-week, full-time opportunities for graduate students pursuing a Master’s degree in computer science or related areas, mainly from NTNU (Norwegian University of Science and Technology). Open for both 3rd and 4th year students.

 

 

Projects and Master's Theses

 

Selected projects may in cooperation with your university be extended to specialization projects (like this one) and even a Master's thesis as part of your education.

 

Have a look at our project ideas below. Do you have any idea of your own? Please do not hesitate to contact us at work@genus.no.

 

 

Performance optimization of in-memory databases

 

Our product utilizes huge data marts loaded in-memory stored in highly optimized data structures, partly based on work in this in-depth study and a master thesis due in June 2016.

 

If you want to explore still unsolved issues regarding optimization within joining, aggregation, parallelization and indexing, and more - and experiment with real program code using real data, this may be something for you. You will also be given the opportunity to analyze and experiment with algorithms for selection of in-memory storage formats.

 

Our requirements:

  • An interest in algorithms and optimization
  • Experience with C#, C++, or similar programming languages, but not required

 

 

Machine learning proof-of-concept

 

Some problems are seemingly harder than others. In cooperation with some of our customers, we have hand-picked a couple of challenges that seem fit for solving by machine learning, like CV matching, price optimization and increasing customer loyalty.

 

You will be provided with a Microsoft Azure Machine Learning environment, with the ability to extend it by using the R programming language if you like. Real life datasets will be provided in cooperation with our customers.

 

Our requirements:

  • Knowledge of machine learning, through courses in Machine Learning, Artificial Intelligence or similar
  • Experience with machine learning preferred, but not required

 

 

Comparing Genus Apps with other model-driven tools

 

This task is perhaps more suited for a university specialization project or even a master thesis, but if you are really into the subject, we are interested in supporting the task as a summer internship.

 

The task is to conduct an analytical and empirical evaluation and comparison of Genus Apps with one (or more) other model-driven tools used for modeling of business applications.

 

The analytical part of the evaluation shall include different criteria and may include expressivity, suitability for various domains, change flexibility, scalability etc. The empirical part of the evaluation can be performed by carrying out one or more experiments in which participants use the evaluated tools to perform one or more modeling tasks.

 

Our requirements:

  • Keen interest in model-driven tools, BPMS or similar
  • Some theoretical background within this field of study

 

 

Visual meta data explorer

 

In our model-driven tool, models are stored in databases and accessible by our run-time components, including Genus Studio, which is our tool for creating and modifying models. However, all models are based on a meta-model, which is possible to make available as meta data.

 

These meta data provides an exciting possibility for visualization and navigation by making an experimental visual navigation tool. The tool could even offer drill down functionality into the model data level, and even further down to the object level, like “Object Class” -> “Customer” -> “Statoil”.

 

Some keywords are JavaScript, D3.js and RESTful services.

 

Our requirements:

  • Proficient programmer
  • Experience with JavaScript and web technologies in general
  • Curiosity for exploring or inventing new visualization techniques

 

 

Visual decision logic interface

 

We claim that state diagrams, decision graphs or BPMN (Business Process Model and Notation) or similar, all are graphical representations that have failed to deliver precise and detailed enough specifications for 100% model-driven applications.

 

We would like to challenge you by exploring the possibility of fitting such graphical representations (and their non-graphical interpretation) into our model-driven tool by theorizing on the subject and/or making a prototype.

 

We think this ought to be possible by combining elements from various graphical representations, dividing these into building blocks that fits into our existing building blocks on the UI and data level. We believe that the key to solving this riddle, lies in combining different meta levels, different graphical representations and set theory.

 

Our requirements:

  • Keen interest in model-driven tools, BPMS or similar
  • Theoretical interest within these fields of study

 

 

Model revision control management

 

Source code revision control has come a far way since the dawn of programming, like the invention of the distributed revision control system Git a decade ago. However, as the model-driven world is constituted by artifacts other than lines of source code, the model-driven world lags behind.

 

You may view an instance of a Genus Apps model as a general graph made up by edges (references) between various nodes (artifacts) such as Object Classes, Object Class Properties, Forms, Rules etc. stored in a database in formats like XML, JSON and regular tables. So, the question is, if you make a change to one or more of the nodes or even change references to other nodes, how do you store this as a revision? How do you merge revisions from different revision branches in such a graph?

 

We would like to challenge you by theorizing on the subject and/or make a prototype to demonstrate various techniques.

 

Our requirements:

  • Theoretical interest within revision control or graph theory

 

 

What programming language is best suited for making model-driven technology?

 

Programming the Genus Apps tool involves a continuous transition between terms, questions and solutions on different meta-levels. A single line of code may contain all these meta-levels. This calls for a programming language with the ability to handle different model types in a flexible way. Or does it? What if a statically typed programming language is more suitable because it imposes a valuable structure in a dynamic modelled context and thereby is able to keep code complexity down? But surely, declarative programming languages must be more suited than imperative programming languages?

 

We challenge you to make a prototype of selected model-driven mechanisms in different types of programming languages and evaluate different criteria like code quality, code complexity, developer productivity and performance, ultimately aiming for finding what is the right tool for the job.

 

Other keywords: Dynamically typed vs. statically typed programming language, weakly vs. strongly typed language, imperative vs. functional programming.

 

Our requirements:

  • Theoretical interest within programming language theory
  • Motivated for “learning by doing” by experimenting with different programming languages

 

 

Test automation of model-driven apps

 

Intuitively one may think that model-driven apps lend themselves naturally to automated model-driven testing, since the behavior of the app is contained in a model. This may very well be true, but also poses some intriguing questions, like if the model actually contains enough information to generate tests directly, how this can be done (if possible) and which model layer (e.g. UI, logic or data) is best suited for automated testing.

 

We challenge you to explore the field of test automation within this context, using Genus Apps as the basis for the exploration. Focus will be on functional tests over performance tests. We would like you to cover test case generation, test execution, and test evaluation. You will be given access to a selected set of real customer cases and app models.

 

Our requirements:

  • Theoretical interest within these fields of study
  • Interest in exploring different techniques by configuring and performing automated tests

 

 

Comparing code generating versus interpreting (no code/low code) model driven tools

 

Genus Apps is an interpreting model driven tool, and we claim that interpretation is superior to code generating tools mainly because it enables changes faster, it enables more flexibility at runtime and it is more secure.

 

We challenge you to theorize on the subject, and to build and compare apps using different tools, to prove us correct – or wrong. Genus Apps must be one of your selected tools.

 

Our requirements:

  • Theoretical interest within these fields of study
  • Curiosity for building apps and exploring different tools

 

 

Create a great app using Genus Apps

 

Do you want to test a product idea, but do not have the resources or time required to program your app in a traditional programming language? Why not use Genus Apps to make a working solution – really fast? We will gladly share our experience with line-of-business apps and help you get started.

 

Our requirements:

  • A great idea!
  • The endurance to try-and-fail to get the app right!

 

 

Bring your own field-of-study

 

Since Genus Apps is a general purpose development tool, the architects and programmers of the tool face all kinds of challenges.

 

We have programmed an in-memory database to support our huge data marts, graphs controls to support visualization of criminal networks, an object relational mapper to support all kinds of relational databases, a multi-dimensional table to support visualization of spreadsheet-like grids of information – with multi-user concurrency support, hugely scalable app services, on-the-fly UI model dependency resolution and so on.

 

If you have a special interest you want to pursue, why not check with us – it may very well be a match! 

 

 

All projects require the ability to work independently. Interested? Questions? Please contact us at work@genus.no in Norwegian or English.