Issues for internship

Task 1.
Create a module, which could save&load observational products, with Java.
You can find the definition of Herschel Observational product from the Herschel Products Definitions.
Product is a flexible data structure, so you must pay some attention at the design of the model.

Task 2.
Implement a router, which supports multiple senders and receivers, with java.
You may depend on external system like RabbitMQ or ApacheMQ, but must make sure that the router support at least 20 packets per second.
Packet can be any data structure but the size should be smaller than 4KB.
Perhaps you have to make a sender and a receiver to show how your router working.

Task 3.
Create a XTCE file parser. You may google CCSDS and XTCE to find detailed information.
The input of the parser is XTCE definition. You may create a XTCE definition to show how your parser working.
The output of the parser are a description about content of the packet and a builder which can build packet with the structure defined by the XTCE definition.
Perhaps you have to learn something about JAXB at first.

Task 4.
Create a module that can plot scientific curves. Please use Java language.
Your module should be able to draw two dimensional curves at least.
The input of the plot module is array data.
The output is curve.
You may google jplot2d to check out our plot engine for reference.

Task 5.
Design quick look tool for telemetry packet with Java.
You may google CCSDS-102×0-b-5 to find the definition of telemetry packet.
The quick look tool is used for some continuous data source. You may have to create a random packet generator to show how your quick look tool working.
This quick look tool should be able to show the content and some crucial parameter of the packet.
The below requirement is not mandatory:
Plot curves to show changes of some parameters of packet.

Task 6.
Design a storage system for telemetry packet (TMPacket) with Java.
You may google CCSDS-102×0-b-5 to find the definition of telemetry packet.
Your TMPacket storage system may depend on database like MySQL or PostgreSQL.
Your TMPaclet storage system must support querying packet with parameters of packet primary header.

Task 7.
Design a small GUI application which only has a blank window but can be extended through putting JAR files and XML files into the installation folder of the application.
The XML files tell your GUI application what of the JAR files to be used.
Users may add content to the blank window or add new windows with different contents.
For example, I can add a snake.jar into the installation folder and in my XML file I say “use the com.snake.SnakeGame as the content”. Then I can play Snake in your application.
You may have to learn Java Reflection at first.

Task 8.
Design a module which support Fourier transform.
You may have to generate some example data to show how your module working.
The input is array data. Assume that the sampling period is uniform.
The output is amplitude and frequency parameter of the input data.