User:Gouzouni: Difference between revisions

From Octave
Jump to navigation Jump to search
(Created page with "<!DOCTYPE html> <html lang="en" dir="ltr" class="client-nojs"> <head> <title>Template:Student application template public - Octave</title> <meta charset="UTF-8" /> <meta name=...")
 
 
(65 intermediate revisions by the same user not shown)
Line 1: Line 1:
<!DOCTYPE html>
== A: An introduction ==
<html lang="en" dir="ltr" class="client-nojs">
<head>
<title>Template:Student application template public - Octave</title>
<meta charset="UTF-8" />
<meta name="generator" content="MediaWiki 1.18.2" />
<link rel="alternate" type="application/x-wiki" title="Edit" href="/wiki/index.php?title=Template:Student_application_template_public&amp;action=edit" />
<link rel="edit" title="Edit" href="/wiki/index.php?title=Template:Student_application_template_public&amp;action=edit" />
<link rel="shortcut icon" href="/favicon.ico" />
<link rel="search" type="application/opensearchdescription+xml" href="/wiki/opensearch_desc.php" title="Octave (en)" />
<link rel="EditURI" type="application/rsd+xml" href="http://wiki.octave.org/wiki/api.php?action=rsd" />
<link rel="alternate" type="application/atom+xml" title="Octave Atom feed" href="/wiki/index.php?title=Special:RecentChanges&amp;feed=atom" />
<link rel="stylesheet" href="/wiki/load.php?debug=false&amp;lang=en&amp;modules=mediawiki.legacy.commonPrint%2Cshared%7Cskins.monobook&amp;only=styles&amp;skin=monobook&amp;*" />
<!--[if lt IE 5.5000]><link rel="stylesheet" href="/wiki/skins/monobook/IE50Fixes.css?303" media="screen" /><![endif]-->
<!--[if IE 5.5000]><link rel="stylesheet" href="/wiki/skins/monobook/IE55Fixes.css?303" media="screen" /><![endif]-->
<!--[if IE 6]><link rel="stylesheet" href="/wiki/skins/monobook/IE60Fixes.css?303" media="screen" /><![endif]-->
<!--[if IE 7]><link rel="stylesheet" href="/wiki/skins/monobook/IE70Fixes.css?303" media="screen" /><![endif]--><meta name="ResourceLoaderDynamicStyles" content="" />
<style>a:lang(ar),a:lang(ckb),a:lang(fa),a:lang(kk-arab),a:lang(mzn),a:lang(ps),a:lang(ur){text-decoration:none}a.new,#quickbar a.new{color:#ba0000}


/* cache key: octave_org:resourceloader:filter:minify-css:4:c88e2bcd56513749bec09a7e29cb3ffa */
* ''' Please describe yourself in three sentences, one of them regarding your current studies. '''
</style>
** '''  Which languages do you speak? '''
<script src="/wiki/load.php?debug=false&amp;lang=en&amp;modules=startup&amp;only=scripts&amp;skin=monobook&amp;*"></script>
** '''  What's your overall background? '''
<script>if(window.mw){
My name is ''' Georgios Ouzounis '''. I am a fourth year undergraduate student in the School of Electrical and Computer Engineering in Aristotle University of Thessaloniki, Greece [http://ee.auth.gr/en/ link ] (engineering bachelor includes 5 years of studies in my country). I love computer programming, mathematics and engineering and I hope to be able to stay involved with them through my whole life. My native language is Greek and I can also use English very well. As the title of my School indicates, my current field of study is Electrical and Computer Engineering involving subjects related to electrical and electronic circuits and also subjects related to computers and engineering such as control theory, analog and digital signal processing, computer networks etc...
mw.config.set({"wgCanonicalNamespace": "Template", "wgCanonicalSpecialPageName": false, "wgNamespaceNumber": 10, "wgPageName": "Template:Student_application_template_public", "wgTitle": "Student application template public", "wgCurRevisionId": 3058, "wgArticleId": 192, "wgIsArticle": true, "wgAction": "view", "wgUserName": "Gouzouni", "wgUserGroups": ["*", "user", "autoconfirmed"], "wgCategories": ["Summer of Code"], "wgBreakFrames": false, "wgRestrictionEdit": [], "wgRestrictionMove": []});
}
</script><script>if(window.mw){
mw.loader.load(["mediawiki.page.startup"]);
}
</script>
</head>
<body class="mediawiki ltr sitedir-ltr ns-10 ns-subject page-Template_Student_application_template_public action-view skin-monobook">
<div id="globalWrapper">
<div id="column-content"><div id="content">
<a id="top"></a>
<h1 id="firstHeading" class="firstHeading">Template:Student application template public</h1>
<div id="bodyContent">
<div id="siteSub">From Octave</div>
<div id="contentSub"></div>
<div id="jump-to-nav">Jump to: <a href="#column-one">navigation</a>, <a href="#searchInput">search</a></div>
<!-- start content -->
<div lang="en" dir="ltr" class="mw-content-ltr"><table id="toc" class="toc"><tr><td><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="#Public_application_template"><span class="tocnumber">1</span> <span class="toctext">Public application template</span></a>
<ul>
<li class="toclevel-2 tocsection-2"><a href="#A:_An_introduction"><span class="tocnumber">1.1</span> <span class="toctext">A: An introduction</span></a></li>
<li class="toclevel-2 tocsection-3"><a href="#C:_Contact"><span class="tocnumber">1.2</span> <span class="toctext">C: Contact</span></a></li>
<li class="toclevel-2 tocsection-4"><a href="#E:_Coding_experience"><span class="tocnumber">1.3</span> <span class="toctext">E: Coding experience</span></a></li>
<li class="toclevel-2 tocsection-5"><a href="#F:_Feeling_fine"><span class="tocnumber">1.4</span> <span class="toctext">F: Feeling fine</span></a></li>
<li class="toclevel-2 tocsection-6"><a href="#O:_Only_out_of_interest"><span class="tocnumber">1.5</span> <span class="toctext">O: Only out of interest</span></a></li>
<li class="toclevel-2 tocsection-7"><a href="#P:_Prerequisites"><span class="tocnumber">1.6</span> <span class="toctext">P: Prerequisites</span></a></li>
<li class="toclevel-2 tocsection-8"><a href="#S:_Self-assessment"><span class="tocnumber">1.7</span> <span class="toctext">S: Self-assessment</span></a></li>
<li class="toclevel-2 tocsection-9"><a href="#Y:_Your_task"><span class="tocnumber">1.8</span> <span class="toctext">Y: Your task</span></a></li>
</ul>
</li>
</ul>
</td></tr></table>
<h1><span class="editsection">[<a href="/wiki/index.php?title=Template:Student_application_template_public&amp;action=edit&amp;section=1" title="Edit section: Public application template">edit</a>]</span> <span class="mw-headline" id="Public_application_template"> Public application template </span></h1>
<p>This part is answered in public on your <a href="/Special:MyPage" title="Special:MyPage">user page</a>. Please copy its source (<b>edit</b>) and then fill. Delete any examples and annotations (<i>this markup</i>) afterwards. Same for questions that do not apply to your situation.
</p>
<h2><span class="editsection">[<a href="/wiki/index.php?title=Template:Student_application_template_public&amp;action=edit&amp;section=2" title="Edit section: A: An introduction">edit</a>]</span> <span class="mw-headline" id="A:_An_introduction"> A: An introduction </span></h2>
<ul><li> Please describe yourself in three sentences, one of them regarding your current studies.
<ul><li> Which languages do you speak?
</li><li> What's your overall background? <i>The general field you work in or are studying, e.g. computer science, physics, artificial intelligence, control theory...</i>
</li></ul>
</li><li> Why do you want to participate in the Google Summer of Code? What do you hope to gain by doing so?
<ul><li> Please also describe your previous experience with the GSoC, if any. <i>Includes any community-bonding, mentor experience or application, not necessarily accepted. We use this subquestion to identify which students are unfamiliar with how the program goes, providing further support. It has no negative impact on your rating!</i>
</li></ul>
</li><li> Why are you choosing Octave?
</li></ul>
<h2><span class="editsection">[<a href="/wiki/index.php?title=Template:Student_application_template_public&amp;action=edit&amp;section=3" title="Edit section: C: Contact">edit</a>]</span> <span class="mw-headline" id="C:_Contact"> C: Contact </span></h2>
<ul><li> Please state the (unique and identical where possible) nick you use on IRC and any other communication channel related to Octave. <i>We really want unique nicks. You might want to bold it.</i>
</li><li> Which time zone do you live in? Will that change over GSoC duration? <i>Perhaps DST adjustment or a relocation. Note that both UTC and GMT are not aware of daylight saving time! Please state UTC+x or -x.</i>
</li><li> Please state the timeframe (in UTC+0) when you feel most comfortable working during GSoC. Where are your time buffers? <i>Example: I usually code around 9.00 to 18.00 and could also try to start earlier (~7.00) for few days&#160;;-)</i>
</li></ul>
<h2><span class="editsection">[<a href="/wiki/index.php?title=Template:Student_application_template_public&amp;action=edit&amp;section=4" title="Edit section: E: Coding experience">edit</a>]</span> <span class="mw-headline" id="E:_Coding_experience"> E: Coding experience </span></h2>
<p>This part is one of the more important ones in your application. You are allowed to be as verbose as you want, as long as you stay on topic&#160;;-)
</p>
<ul><li> Please describe your experience with C++, Octave or Matlab m-scripts, OpenGL and Qt.
</li><li> Please describe your experience with other programming languages.
</li><li> Please describe your experience with being in a development team. <i>Do you have experience working with open source or free projects?</i>
</li><li> Please describe the biggest project you have written code for and what you learned by doing so. Also describe your role in that project over time.
</li><li> Please state the commits and patches you already contributed to Octave. <i>This question (one of the most important parts by the way) is the only part of your application our wiki admins will edit for you even after the application deadline. Code sometimes speaks louder than many words do.</i>
</li></ul>
<h2><span class="editsection">[<a href="/wiki/index.php?title=Template:Student_application_template_public&amp;action=edit&amp;section=5" title="Edit section: F: Feeling fine">edit</a>]</span> <span class="mw-headline" id="F:_Feeling_fine"> F: Feeling fine </span></h2>
<ul><li> Please describe (in short) your experience with the following tools: <i>We only use this question to determine where you need guidance, not for rating!  We by no means expect you to be familiar with all of these and you'll won't necessarily need them while working with us.</i>
<ul><li> IRC and mailing lists
</li><li> Mercurial or other source code management systems
</li><li> Mediawiki or other wiki software
</li><li> make, gcc, gdb or other development tools
</li></ul>
</li><li> What will make you actively stay in our community after this GSoC is over? <i>You can also tell us after applications close and we'll happily try to fulfill&#160;:-)</i>
</li></ul>
<h2><span class="editsection">[<a href="/wiki/index.php?title=Template:Student_application_template_public&amp;action=edit&amp;section=6" title="Edit section: O: Only out of interest">edit</a>]</span> <span class="mw-headline" id="O:_Only_out_of_interest"> O: Only out of interest </span></h2>
<ul><li> Did you ever hear about Octave before?
<ul><li> If so, when and where? How far have you been involved already?
</li><li> If not, where would you expect or advise us to do advertising?
</li></ul>
</li><li> What was the first question concerning Octave you could not find an answer to rather quickly? <i>Of course more than one question can be stated. We try to improve based on this each year! Includes learning how to use it, code, website, GSoC application, …</i>
</li></ul>
<h2><span class="editsection">[<a href="/wiki/index.php?title=Template:Student_application_template_public&amp;action=edit&amp;section=7" title="Edit section: P: Prerequisites">edit</a>]</span> <span class="mw-headline" id="P:_Prerequisites"> P: Prerequisites </span></h2>
<ul><li> Please state the operating system you work with.
<ul><li> If you have access to more than one, please state them and the conditions under which you are granted this access.
</li></ul>
</li><li> Please estimate an average time per day you will be able to <i>(if separated)</i> access
<ul><li> an internet connection
</li><li> a computer
</li><li> a computer with your progressing work on
</li></ul>
</li><li> Please describe the degree up to which you can install new software on computers you have access to.
</li></ul>
<h2><span class="editsection">[<a href="/wiki/index.php?title=Template:Student_application_template_public&amp;action=edit&amp;section=8" title="Edit section: S: Self-assessment">edit</a>]</span> <span class="mw-headline" id="S:_Self-assessment"> S: Self-assessment </span></h2>
<ul><li> Please describe how useful criticism looks from your point of view as committing student.
</li><li> How autonomous are you when developing? <i>If you answer both subquestions with "Yes, definitely", we are a tad confused.&#160;;-)</i>
<ul><li> Do you like to discuss changes intensively and not start coding until you know what you want to do?
</li><li> Do you like to code a proof of concept to 'see how it turns out', modifying that and taking the risk of having work thrown away if it doesn't match what the project or original proponent had in mind?
</li></ul>
</li></ul>
<h2><span class="editsection">[<a href="/wiki/index.php?title=Template:Student_application_template_public&amp;action=edit&amp;section=9" title="Edit section: Y: Your task">edit</a>]</span> <span class="mw-headline" id="Y:_Your_task"> Y: Your task </span></h2>
<ul><li> Did you select a task from our list of proposals and ideas?
<ul><li> If yes, what task did you choose? Please describe what part of it you especially want to focus on if you can already provide this information. <i>Please also wiki-link the page for your elaborated proposal here.</i>
</li><li> If you apply for a task you have added yourself instead, please describe this task, its scope and people you already talked to concerning it. What field of tasks did you miss on the list?
</li></ul>
</li><li> Please provide a rough estimated timeline for your work on the task. <i>This should include the GSoC midterms and personal commitments like exams or vacation ("non-coding time"). Optionally include two or three milestones you expect.</i>
</li></ul>


<!--
* ''' Why do you want to participate in the Summer of Code? What do you hope to gain by doing so? '''
NewPP limit report
** ''' Please also describe your previous experience with the SoC, if any. '''
Preprocessor node count: 34/1000000
My application for the Google Summer of Code 2014 on GNU Octave was rejected so applying on SOCIS is my second attempt on a program like this. Applying for participation in the Summer of Code in Space(SOCIS) is my first step towards real world software development. Until now I have been programming mainly for university projects so what I hope to gain from SOCIS is experience and knowledge on how to create software to be used by others.
Post-expand include size: 0/2097152 bytes
Template argument size: 0/2097152 bytes
Expensive parser function count: 0/100
-->


<!-- Saved in parser cache with key octave_org:pcache:idhash:192-0!*!*!!en!*!* and timestamp 20140302190917 -->
* ''' Why are you choosing Octave? '''
</div><div class="printfooter">
The past two years I had to deal with many university projects that required the use of software like Matlab or Octave. Using both of them I came
Retrieved from "<a href="http://wiki.octave.org/wiki/index.php?title=Template:Student_application_template_public&amp;oldid=3058">http://wiki.octave.org/wiki/index.php?title=Template:Student_application_template_public&amp;oldid=3058</a>"</div>
to realize the power of such tools. That is the main reason why I chose Octave. I have actually wanted to contribute to Octave long before finding SOCIS but never found the nerve to try it until now.
<div id='catlinks' class='catlinks'><div id="mw-normal-catlinks"><a href="/Special:Categories" title="Special:Categories">Category</a>: <ul><li><a href="/Category:Summer_of_Code" title="Category:Summer of Code">Summer of Code</a></li></ul></div></div> <!-- end content -->
 
<div class="visualClear"></div>
== C: Contact ==
</div>
 
</div></div>
* ''' Please state the (unique and identical where possible) nick you use on IRC and any other communication channel related to Octave. We really want unique nicks.
<div id="column-one">
 
<div id="p-cactions" class="portlet">
* ''' Which time zone do you live in? Will that change over SOCIS duration?'''
<h5>Views</h5>
 
<div class="pBody">
* ''' Please state the timeframe (in UTC+0) when you feel most comfortable working during SOCIS. Where are your time buffers?'''
<ul>
My nick in IRC, wiki.octave.org and the patch tracker is '''gouzouni''' ('''Gouzouni''' on the wiki). The time zone in my country is UTC+3
<li id="ca-nstab-template" class="selected"><a href="/Template:Student_application_template_public" title="View the template [c]" accesskey="c">Template</a></li>
(Eastern European Time Zone) and this is not going to change during the whole SOCIS period. I usually code around 5.00 to 11.00 but time is not
<li id="ca-talk" class="new"><a href="/wiki/index.php?title=Template_talk:Student_application_template_public&amp;action=edit&amp;redlink=1" title="Discussion about the content page [t]" accesskey="t">Discussion</a></li>
really a matter. Evenings are good as well!
<li id="ca-edit"><a href="/wiki/index.php?title=Template:Student_application_template_public&amp;action=edit" title="You can edit this page. Please use the preview button before saving [e]" accesskey="e">Edit</a></li>
 
<li id="ca-history"><a href="/wiki/index.php?title=Template:Student_application_template_public&amp;action=history" title="Past revisions of this page [h]" accesskey="h">History</a></li>
Other contact informations are my e-mail '''geoconstructor625@gmail.com''' and my Facebook account [https://www.facebook.com/georgios.ouzounis.3?ref=tn_tnmn Georgios Ouzounis]. You can also find me in Skype under the name " '''Georgios Ouzounis''' ".
<li id="ca-move"><a href="/Special:MovePage/Template:Student_application_template_public" title="Move this page [m]" accesskey="m">Move</a></li>
 
<li id="ca-watch"><a href="/wiki/index.php?title=Template:Student_application_template_public&amp;action=watch&amp;token=29a1764eb11bb1146d2be21494c17881%2B%5C" title="Add this page to your watchlist [w]" accesskey="w">Watch</a></li>
== E: Coding experience ==
</ul>
 
</div>
* ''' Please describe your experience with C++, Octave or Matlab m-scripts, OpenGL and Qt.'''
</div>
I have been writing code in C and C++ for the last 4 years both for university projects and personal use. I have a very good understanding of these languages. I am well aware of the object oriented programming concept and I can use debuggers such as GDB well. As far as Octave m-scripts are concerned, I have been writing such code for the past 2 years mostly for university projects. I have written scripts for a wide spectrum of subjects such as optimization, image and signal processing, system recognition, control systems, machine learning and mathematics. I have very good knowledge of mathematics which helps in many ways such as writing vectorized code which is much faster than using loops. I have no experience using OpenGL or Qt.
<div class="portlet" id="p-personal">
 
<h5>Personal tools</h5>
*''' Please describe your experience with other programming languages.'''
<div class="pBody">
Other programming languages that I use frequently and I am comfortable with are Java and Assembly. I have also used Python for some time. I am comfortable with using PThreads, Cuda and MPI and I am comfortable with parallel computing in languages such as Java, C++ and Matlab/Octave.
<ul>
 
<li id="pt-userpage"><a href="/User:Gouzouni" class="new" title="Your user page [.]" accesskey=".">Gouzouni</a></li>
* ''' Please describe your experience with being in a development team. ''Do you have experience working with open source or free projects?'''''
<li id="pt-mytalk"><a href="/User_talk:Gouzouni" class="new" title="Your talk page [n]" accesskey="n">My talk</a></li>
I have no experience working with open source or free projects. I have good experience with being in a development team but only for small projects at the university, nothing as large as Octave.  
<li id="pt-preferences"><a href="/Special:Preferences" title="Your preferences">My preferences</a></li>
 
<li id="pt-watchlist"><a href="/Special:Watchlist" title="A list of pages you are monitoring for changes [l]" accesskey="l">My watchlist</a></li>
*''' Please describe the biggest project you have written code for and what you learned by doing so. Also describe your role in that project over time.'''
<li id="pt-mycontris"><a href="/Special:Contributions/Gouzouni" title="A list of your contributions [y]" accesskey="y">My contributions</a></li>
The biggest project I have written code for is an Android application, a calculator, I developed last summer. It is about 2500-3000 lines of code. What I have mainly learned from that is if the small parts are well developed and documented then the big ones can be done quite easily. On the other hand, not being cautious in the first steps is going to be a big trouble on the later stages of a project. I was the only one working on that project so I had no specific role.
<li id="pt-logout"><a href="/wiki/index.php?title=Special:UserLogout&amp;returnto=Template%3AStudent+application+template+public" title="Log out">Log out</a></li>
 
</ul>
* ''' Please state the commits and patches you already contributed to Octave.'''
</div>
Until now I have committed the patches [https://savannah.gnu.org/patch/?8379 #8379], [https://savannah.gnu.org/patch/?8383 #8383] and [https://savannah.gnu.org/patch/?8384 #8384]. The first one includes the uencode and udecode functions of the signal package, the second one includes the peak2peak function of the signal package and the third one includes the shiftdata and unshiftdata functions of the signal package.
</div>
 
<div class="portlet" id="p-logo">
== F: Feeling fine ==
<a title="Visit the main page" style="background-image: url(/wiki/skins/octave/images/logo.png);" href="/Main_Page"></a>
* I am new to IRC but I have been using mailing lists for a while. I am also new to Mercurial and generally source code management systems. I have been using wiki sites before ( wikipedia and other ) but this is the first time I am modifying one. I am comfortable with make, gcc and gdb but I wouldn't say I am a master of the last one.
</div>
 
<script type="text/javascript"> if (window.isMSIE55) fixalpha(); </script>
* I intent to stay in Octave's community after SOCIS is over no matter if I get picked to participate or not. I like programming and Octave's nature (mathematics, digital and analog signals etc...) is what I am comfortable working on. I would love to continue contributing.
<div class="generated-sidebar portlet" id="p-navigation">
 
<h5>Navigation</h5>
== O: Only out of interest ==
<div class='pBody'>
* My access to Matlab was(and still is) limited only inside the university campus so if I wanted to work my projects at home and not stay until late in the campus I had to use other software. That is how I found out about Octave two years ago. I have been using it for the last two years and another
<ul>
reason why I want to contribute to it, is to help make it bigger. What gave me a hard time was the lack of a fullest symbolic package, that is why I want
<li id="n-mainpage-description"><a href="/Main_Page" title="Visit the main page [z]" accesskey="z">Main page</a></li>
to work on it sometime after SOCIS.
<li id="n-portal"><a href="/Octave:Community_portal" title="About the project, what you can do, where to find things">Community portal</a></li>
 
<li id="n-currentevents"><a href="/Octave:Current_events" title="Find background information on current events">Current events</a></li>
* A thing that I had a little trouble finding an answer to how to contribute to Octave's development but I guess that was due to the fact that I had no idea what a source code management system is.
<li id="n-recentchanges"><a href="/Special:RecentChanges" title="A list of recent changes in the wiki [r]" accesskey="r">Recent changes</a></li>
 
<li id="n-Package-list"><a href="/Category:Packages">Package list</a></li>
== P: Prerequisites ==
<li id="n-Index"><a href="/Special:Categories">Index</a></li>
* For the past year I have been using Ubuntu 13.10(13.04 before) and before that I used windows 8. I have both these operating systems installed
<li id="n-randompage"><a href="/Special:Random" title="Load a random page [x]" accesskey="x">Random page</a></li>
on my laptop and I have root access to both of them.
<li id="n-help"><a href="/Help:Contents" title="The place to find out">Help</a></li>
 
</ul>
* I have a 24/7 access on an Internet connection, a computer and a computer with my progressing work on.
</div>
 
</div>
* I am free to install any new software on my laptop.
<div id="p-search" class="portlet">
 
<h5><label for="searchInput">Search</label></h5>
== S: Self-assessment ==
<div id="searchBody" class="pBody">
 
<form action="/wiki/index.php" id="searchform">
*''' Please describe how useful criticism looks from your point of view as committing student.'''
<input type='hidden' name="title" value="Special:Search"/>
After realizing that I was not born a good programmer (that was a long time ago :P ) I begun to appreciate any criticism. It's not that I like to be
<input type="search" name="search" title="Search Octave [f]" accesskey="f" id="searchInput" />
told that I am wrong, but if I am, I try my best to correct my mistakes.
<input type="submit" name="go" value="Go" title="Go to a page with this exact name if exists" id="searchGoButton" class="searchButton" />&#160;
 
<input type="submit" name="fulltext" value="Search" title="Search the pages for this text" id="mw-searchButton" class="searchButton" />
*''' How autonomous are you when developing?'''
</form>
When I get a project on my hands I usually have a good deal of questions at first. Mostly clarification questions. After a while and when I get to
</div>
understand what is actually needed I can say I am pretty autonomous both in working on the project and solving the new questions coming up. What I
</div>
like though, is a frequent feedback on whether I am on the right course or not. I hate what some of my university professors do, giving me a project
<div class="portlet" id="p-tb">
and meeting me again a month after to check on what level I am. I like a frequent, say every 3 or 4 days, communication with other members on the project
<h5>Toolbox</h5>
or the mentor in order to check if everything is ok. It's the more frequent the contact is the better the outcome will be.
<div class="pBody">
 
<ul>
*''' Do you like to discuss changes intensively and not start coding until you know what you want to do?'''
<li id="t-whatlinkshere"><a href="/Special:WhatLinksHere/Template:Student_application_template_public" title="A list of all wiki pages that link here [j]" accesskey="j">What links here</a></li>
My answer is yes, I do like to discuss changes intensively and not start coding until I know what I want to do. I don't expect to have everything figured out from the beginning but I like to have a decent schedule before starting writing code.
<li id="t-recentchangeslinked"><a href="/Special:RecentChangesLinked/Template:Student_application_template_public" title="Recent changes in pages linked from this page [k]" accesskey="k">Related changes</a></li>
 
<li id="t-upload"><a href="/Special:Upload" title="Upload files [u]" accesskey="u">Upload file</a></li>
* ''' Do you like to code a proof of concept to 'see how it turns out', modifying that and taking the risk of having work thrown away if it doesn't match''' '''what the project or original proponent had in mind?'''
<li id="t-specialpages"><a href="/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q">Special pages</a></li>
Yes I do. I like to try many different ways of doing something in order to find the best. Since how will it turn out is not clear at the beginning,
<li><a href="/wiki/index.php?title=Template:Student_application_template_public&amp;printable=yes" rel="alternate">Printable version</a></li>
throwing work away, even if it is a week's work, is a risk I am willing to take.
<li id="t-permalink"><a href="/wiki/index.php?title=Template:Student_application_template_public&amp;oldid=3058" title="Permanent link to this revision of the page">Permanent link</a></li>
 
</ul>
== Y: Your task ==
</div>
* The task I have chosen is the implementation of [http://wiki.octave.org/Summer_of_Code_Project_Ideas#High_Precision_Arithmetic_Computation "High Precision Arithmetic Computation"]. The part that I would like to focus on would be the completion and test of the multi-precision class along with the implementation of several linear algebra algorithms which will support the use of multi-precision inputs.
</div>
 
</div><!-- end of the left (by default at least) column -->
* A rough estimated timeline for my work on the task would be :
<div class="visualClear"></div>
 
<div id="footer">
'''Beginning until the end of first month ( June 1st - June 30th )'''
<div id="f-poweredbyico">
 
<a href="http://www.mediawiki.org/"><img src="/wiki/skins/common/images/poweredby_mediawiki_88x31.png" alt="Powered by MediaWiki" width="88" height="31" /></a>
Include support for array and complex numbers on the already existent version of the multi-precision package.
</div>
 
<ul id="f-list">
Implement upclassing on operations involving objects of the multi-precision class.
<li id="lastmod"> This page was last modified on 16 August 2013, at 03:53.</li>
 
<li id="viewcount">This page has been accessed 1,401 times.</li>
Milestone 1 : End of first month : The goal at this moment will be to have a fully functioning multi-precision class, including array, complex number support and upclassing.
<li id="privacy"><a href="/Octave:Privacy_policy" title="Octave:Privacy policy">Privacy policy</a></li>
 
<li id="about"><a href="/Octave:About" title="Octave:About">About Octave</a></li>
All deliverables will be tested and debugged during this period.
<li id="disclaimer"><a href="/Octave:General_disclaimer" title="Octave:General disclaimer">Disclaimers</a></li>
 
</ul>
''' (July 1st - July 4th) '''
</div>
 
</div>
Testing, documentation, further debugging.
<script>if(window.mw){
 
mw.loader.load(["mediawiki.user", "mediawiki.util", "mediawiki.page.ready", "mediawiki.legacy.wikibits", "mediawiki.legacy.ajax", "mediawiki.action.watch.ajax"]);
''' (July 5th - July 15th)
}
 
</script>
Break. As stated below, my examination period starts at June 10th and end at July 4th, so I would like to have a 10 days break in order to rest
<script>if(window.mw){
and clear up my mind.
mw.user.options.set({"ccmeonemails":0,"cols":80,"date":"default","diffonly":0,"disablemail":0,"disablesuggest":0,"editfont":"default","editondblclick":0,"editsection":1,"editsectiononrightclick":0,"enotifminoredits":0,"enotifrevealaddr":0,"enotifusertalkpages":1,"enotifwatchlistpages":0,"extendwatchlist":0,"externaldiff":0,"externaleditor":0,"fancysig":0,"forceeditsummary":0,"gender":"male","hideminor":0,"hidepatrolled":0,"highlightbroken":1,"imagesize":2,"justify":0,"math":1,"minordefault":0,"newpageshidepatrolled":0,"nocache":0,"noconvertlink":0,"norollbackdiff":0,"numberheadings":0,"previewonfirst":0,"previewontop":1,"quickbar":5,"rcdays":7,"rclimit":50,"rememberpassword":0,"rows":25,"searchlimit":20,"showhiddencats":0,"showjumplinks":1,"shownumberswatching":1,"showtoc":1,"showtoolbar":1,"skin":"monobook","stubthreshold":0,"thumbsize":2,"underline":2,"uselivepreview":0,"usenewrc":0,"watchcreations":0,"watchdefault":0,"watchdeletion":0,"watchlistdays":3,"watchlisthideanons":0,
 
"watchlisthidebots":0,"watchlisthideliu":0,"watchlisthideminor":0,"watchlisthideown":0,"watchlisthidepatrolled":0,"watchmoves":0,"wllimit":250,"variant":"en","language":"en","searchNs0":true,"searchNs1":false,"searchNs2":false,"searchNs3":false,"searchNs4":false,"searchNs5":false,"searchNs6":false,"searchNs7":false,"searchNs8":false,"searchNs9":false,"searchNs10":false,"searchNs11":false,"searchNs12":false,"searchNs13":false,"searchNs14":false,"searchNs15":false,"nickname":"","timecorrection":"Offset|0","watchlisttoken":""});;mw.user.tokens.set({"editToken":"5e52a41660df8ee5c1dc3575042c951f+\\","watchToken":"b3e79c46a99e3e3a5038942602f6cf37+\\"});;mw.loader.state({"user.options":"ready","user.tokens":"ready"});
'''( July 16th - August 15th )'''
 
/* cache key: octave_org:resourceloader:filter:minify-js:4:b967b6c0909ac0cfb9c0960631b99710 */
Continue with the algorithms' development. Given the four days per algorithm estimation, about 7 - 8 different algorithms should be created during this period.
}
 
</script><!-- Served in 0.556 secs. --></body></html>
Milestone 2 : The goal for the end of this period will be to have a fully functioning multi-precision class ( or new basic numerical type ) and also a big enough arsenal of algorithms upon it.
 
''' (August 16th - August 31st) '''
 
Wrapping up the project. Finish what is left to be done. Documentation, debugging and testing.
 
A list of algorithms that will be implemented ( not necessary in this order ) to support multi-precision objects is given below :
 
Singular Value Decomposition ( SVD ),
QR factorization,
Cholesky factorization ( chol ),
Inverse matrix computation,
Eigenvalues and eigenvectors calculation,
Solving linear systems,
Root of non-linear function finder ( fzero ),
Minimum value finder ( fmins ).
 
''' Development methodology '''
 
A rough schedule that will be followed ( not necessarily in this order ) while developing the above algorithms will be :
 
Step 1 : Check if there is some library based on GMP or MPFR implementing any of those algorithms and if this can be embedded on Octave.
 
Step 2 : Study Octave's already implemented for double precision algorithms and see if they can be re-formed in order to support multiple precision.
 
Step 3 : Check if there is any Fortran code implementing any of the required algorithms and if it can be used to add support for multiple precision.
 
Step 4 : Implementing the algorithm from the scratch. This will be the final choice, and will be done only if there is no other way to implement an algorithm.
 
Imponderables like illness, bad days, Internet going down globally and such stuff are considered by the above schedule, this is why a precise estimation of days per algorithm is not given.
 
The only commitment I have for the summer is my university exam period which starts at June 10th and ends at July 4th. Despite that, I will keep coding during these days for about 5 - 6 hours everyday as stated above. Studying for the exams will be done the other hours of the day.
 
== N: News ==
 
I studied Octave's code for matrices and arrays and created the skeleton for adding matrix functionality on the [http://hg.code.sf.net/p/octave/multi-precision multi-precision] package. The skeleton was uploaded as a patch here [https://savannah.gnu.org/patch/?8429 8429].
 
The matrix support for the [http://hg.code.sf.net/p/octave/multi-precision multi-precision]  package is planned to be implemented by 2 classes.
 
1) MpvNDArray class, subclass of MArray<octave_mp>, implementing N-dimentional arrays of multiple precision objects ( octave_mp objects ).
 
2) octave_mpv_matrix class, subclass of octave_base_matrix<MpvNDArray>, implementing matrices of multiple precision objects.
 
The goal is to imitate the implementation of [http://octave.sourceforge.net/doxygen/html/dd/d24/classFloatNDArray.html FloatNDArray]  and [http://octave.sourceforge.net/doxygen/html/df/d1e/classoctave__float__matrix.html octave_float_matrix] classes, and adjust it to work on multiple precision objects.
 
== P: Private application submitted on SOCIS website ==
 
* '''First Name (mandatory):'''
Georgios
* '''Last Name (mandatory) :'''
Ouzounis
* '''Email contact (mandatory) :'''
geoconstructor625@gmail.com
* '''Personal website :'''
* '''Date of birth (mandatory) :'''
12/09/1992
* '''Nationality or nationalities (mandatory) :'''
Hellenic
* '''Institution (mandatory) :'''
School of Electrical and Computer Engineering Aristotle University of Thessaloniki
* '''Institution location (mandatory) :'''
Greece
* '''Mentoring organization (mandatory) :'''
GNU Octave
* '''Project proposal (mandatory) :'''
 
* ''' A: An introduction '''
 
My name is Georgios Ouzounis. I am 21 years old and I am a fourth year undergraduate student at the School of Electrical and Computer Engineering at Aristotle University of Thessaloniki, Greece ( http://ee.auth.gr/en/ ).
 
** Previous Experience :
Summer of Code in Space (SOCIS) is my second attempt to participate in a program like that after my application getting rejected at the Google Summer of Code 2014. I have been using Octave for the last two years and I have written many scripts for university projects on fields like signal processing, system identification, numerical analysis, electronic circuits etc... As far as my experience on C / C++ is concerned, I have been using these languages for the last four years, writing programs for university projects and personal use.
 
** A time frame :
I usually code around 5:00 to 11:00 ( UTC+0 ) and I plan on spending about 5 - 6 hours daily working on SOCIS project including Saturdays and Sundays. I will also be able to join the IRC channel during my coding hours.
 
The only commitment I have for the summer is my university exam period which starts at June 10th and ends at July 4th. Despite that, I will keep coding during these days for about 5 - 6 hours everyday as stated above. Studying for the exams will be done the other hours of the day. I also plan
to have a 10 days break right after the end of my examination period (5th - 15th of July) to clear up my mind and rest.
 
** Describing my English :
I can use English very well both in writing and speaking, so there will not be any problems regarding communication with other community members. I have a C1 level certificate for the English language.
 
* ''' C: Contact '''
 
My nick in IRC and the patch tracker is gouzouni and my nick on wiki.octave.org is Gouzouni.
 
My e-mail address is geoconstructor625@gmail.com .
 
My country's time zone is UTC+3 ( Eastern European Time Zone ), and that is not going to change over SOCIS duration.
 
The instant message networks I daily use are Skype (name Georgios Ouzounis) and Facebook (name Georgios Ouzounis). I have no particular preference on the way the communication is done. E-mails are good for me, so do Facebook and Skype. Whatever suits the other side.
 
In case of inability to connect on the internet, my mobile's phone number is +30 6972173897.
 
 
* ''' S: Self-assessment '''
 
From my university experience and my fellow students comments I would say that I can give constructive advice. Many of my fellow students come to me for advice when they are having a problem with a project they are working on. I guess I could say that I can also receive advice, even though I support my opinion unless there are strong arguments that I am mistaken.
 
As far as sorting useful criticisms from useless ones is concerned, I would say that I can generally sort useful information from useless so I am good at picking what is needed and leaving the rest.
 
 
* ''' Y: Your task '''
 
The project I would like to work on is "High Precision Arithmetic Computation".
 
** Addressing the problem :
There are numerous real world examples where double precision numbers, used by Octave, are not enough. Modelling exponential behaviours as found in semiconductor materials and electrical circuits (diodes and transistors) is an example. All of them, end up to solving linear systems of equations where the corresponding matrices are mathematically invertible but numerically not, due to large ratio between their first and last singular values.
 
** Proposing a solution :
A solution of the above problem would be the creation of an interface numerical over GNU MPFR (http://www.mpfr.org/) which is (quoting the site) "a C library for multiple-precision floating-point computations with correct rounding". This interface will give the ability to the user to use numbers with arbitrary precision, limited of course by the machine's internal memory. After having that interface (or numerical type) created to support matrices and complex numbers the next step would be the implementation of certain algorithms to work with those arbitrary precision numbers. Some examples of such algorithms would be computing inverse Matrix, Solving linear systems, calculating eigenvalues etc...
 
** Expected output :
The amplification of the already existent multi-precision package on the Mercurial repository (http://hg.code.sf.net/p/octave/multi-precision) in order to support matrix and complex number computations ('+', '-', '/', '*', 'determinant' and 'subsref') and also support the algorithms stated above.
 
The existence of this package for Octave can be a useful tool for it's users and for its developers too. More users will be using Octave for their computational needs and so Octave's community will grow. The outcome of this project could be combined with packages like the Electronic Circuit Simulator and the Signal package to make them more powerful. Prompted by my experience in my university, I can say it could be also useful in robotics where high precision is needed.
 
** Why choose me :
The first answer would be, because I really want to. This is not enough on its own but it's a good start. My programming experience is described at the beginning of this application under the label "Previous Experience" and also on my public application at wiki.octave.org/user:Gouzouni . Moreover, I have a very strong mathematical background including but not limited to linear algebra and numerical analysis. This background gives me the ability to translate a problem written in words to a mathematical problem and then use a computer to solve it. I can also easily understand any linear algebra algorithm or concept.
 
What I hope to gain from this project is experience. It would be my first time to join an open source community and I know there are a lot to learn. In addition, I hope to get a very good idea of how things are done on a project of that scale.
 
** A rough schedule of my work :
 
A rough estimated timeline for my work on the task would be :
 
'''Beginning until the end of first month ( June 1st - June 30th )'''
 
Include support for array and complex numbers on the already existent version of the multi-precision package.
 
Implement upclassing on operations involving objects of the multi-precision class.
 
Milestone 1 : End of first month : The goal at this moment will be to have a fully functioning multi-precision class, including array, complex number support and upclassing.
 
All deliverables will be tested and debugged during this period.
 
'''(July 1st - July 4th)'''
 
Testing, documentation, further debugging.
 
'''(July 5th - July 15th)'''
 
Break. As stated above, my examination period starts at June 10th and ends at July 4th, so I would like to have a 10 days break in order to rest and clear up my mind.
 
'''( July 16th - August 15th )'''
 
Continue with the algorithms' development. Given the four days per algorithm estimation, about 7 - 8 different algorithms should be created during this period.
 
Milestone 2 : The goal for the end of this period will be to have a fully functioning multi-precision class ( or new basic numerical type ) and also a big enough arsenal of algorithms upon it.
 
'''(August 16th - August 31st)'''
 
Wrapping up the project. Finish what is left to be done. Documentation, debugging and testing.
 
A list of algorithms that will be implemented ( not necessary in this order ) to support multi-precision objects is given below :
 
Singular Value Decomposition ( SVD ), QR factorization, Cholesky factorization ( chol ), Inverse matrix computation, Eigenvalues and eigenvectors calculation, Solving linear systems, Root of non-linear function finder ( fzero ), Minimum value finder ( fmins ).
 
Development methodology
 
A rough schedule that will be followed ( not necessarily in this order ) while developing the above algorithms will be :
 
Step 1 : Check if there is some library based on GMP or MPFR implementing any of those algorithms and if this can be embedded on Octave.
 
Step 2 : Study Octave's already implemented for double precision algorithms and see if they can be re-formed in order to support multiple precision.
 
Step 3 : Check if there is any Fortran code implementing any of the required algorithms and if it can be used to add support for multiple precision.
 
Step 4 : Implementing the algorithm from the scratch. This will be the final choice, and will be done only if there is no other way to implement an algorithm.
 
Imponderables like illness, bad days, Internet going down globally and such stuff are considered by the above schedule, this is why a precise estimation of days per algorithm is not given.
 
'''Additional notes : '''

Latest revision as of 08:54, 14 May 2014

A: An introduction[edit]

  • Please describe yourself in three sentences, one of them regarding your current studies.
    • Which languages do you speak?
    • What's your overall background?

My name is Georgios Ouzounis . I am a fourth year undergraduate student in the School of Electrical and Computer Engineering in Aristotle University of Thessaloniki, Greece link (engineering bachelor includes 5 years of studies in my country). I love computer programming, mathematics and engineering and I hope to be able to stay involved with them through my whole life. My native language is Greek and I can also use English very well. As the title of my School indicates, my current field of study is Electrical and Computer Engineering involving subjects related to electrical and electronic circuits and also subjects related to computers and engineering such as control theory, analog and digital signal processing, computer networks etc...

  • Why do you want to participate in the Summer of Code? What do you hope to gain by doing so?
    • Please also describe your previous experience with the SoC, if any.

My application for the Google Summer of Code 2014 on GNU Octave was rejected so applying on SOCIS is my second attempt on a program like this. Applying for participation in the Summer of Code in Space(SOCIS) is my first step towards real world software development. Until now I have been programming mainly for university projects so what I hope to gain from SOCIS is experience and knowledge on how to create software to be used by others.

  • Why are you choosing Octave?

The past two years I had to deal with many university projects that required the use of software like Matlab or Octave. Using both of them I came to realize the power of such tools. That is the main reason why I chose Octave. I have actually wanted to contribute to Octave long before finding SOCIS but never found the nerve to try it until now.

C: Contact[edit]

  • Please state the (unique and identical where possible) nick you use on IRC and any other communication channel related to Octave. We really want unique nicks.
  • Which time zone do you live in? Will that change over SOCIS duration?
  • Please state the timeframe (in UTC+0) when you feel most comfortable working during SOCIS. Where are your time buffers?

My nick in IRC, wiki.octave.org and the patch tracker is gouzouni (Gouzouni on the wiki). The time zone in my country is UTC+3 (Eastern European Time Zone) and this is not going to change during the whole SOCIS period. I usually code around 5.00 to 11.00 but time is not really a matter. Evenings are good as well!

Other contact informations are my e-mail geoconstructor625@gmail.com and my Facebook account Georgios Ouzounis. You can also find me in Skype under the name " Georgios Ouzounis ".

E: Coding experience[edit]

  • Please describe your experience with C++, Octave or Matlab m-scripts, OpenGL and Qt.

I have been writing code in C and C++ for the last 4 years both for university projects and personal use. I have a very good understanding of these languages. I am well aware of the object oriented programming concept and I can use debuggers such as GDB well. As far as Octave m-scripts are concerned, I have been writing such code for the past 2 years mostly for university projects. I have written scripts for a wide spectrum of subjects such as optimization, image and signal processing, system recognition, control systems, machine learning and mathematics. I have very good knowledge of mathematics which helps in many ways such as writing vectorized code which is much faster than using loops. I have no experience using OpenGL or Qt.

  • Please describe your experience with other programming languages.

Other programming languages that I use frequently and I am comfortable with are Java and Assembly. I have also used Python for some time. I am comfortable with using PThreads, Cuda and MPI and I am comfortable with parallel computing in languages such as Java, C++ and Matlab/Octave.

  • Please describe your experience with being in a development team. Do you have experience working with open source or free projects?

I have no experience working with open source or free projects. I have good experience with being in a development team but only for small projects at the university, nothing as large as Octave.

  • Please describe the biggest project you have written code for and what you learned by doing so. Also describe your role in that project over time.

The biggest project I have written code for is an Android application, a calculator, I developed last summer. It is about 2500-3000 lines of code. What I have mainly learned from that is if the small parts are well developed and documented then the big ones can be done quite easily. On the other hand, not being cautious in the first steps is going to be a big trouble on the later stages of a project. I was the only one working on that project so I had no specific role.

  • Please state the commits and patches you already contributed to Octave.

Until now I have committed the patches #8379, #8383 and #8384. The first one includes the uencode and udecode functions of the signal package, the second one includes the peak2peak function of the signal package and the third one includes the shiftdata and unshiftdata functions of the signal package.

F: Feeling fine[edit]

  • I am new to IRC but I have been using mailing lists for a while. I am also new to Mercurial and generally source code management systems. I have been using wiki sites before ( wikipedia and other ) but this is the first time I am modifying one. I am comfortable with make, gcc and gdb but I wouldn't say I am a master of the last one.
  • I intent to stay in Octave's community after SOCIS is over no matter if I get picked to participate or not. I like programming and Octave's nature (mathematics, digital and analog signals etc...) is what I am comfortable working on. I would love to continue contributing.

O: Only out of interest[edit]

  • My access to Matlab was(and still is) limited only inside the university campus so if I wanted to work my projects at home and not stay until late in the campus I had to use other software. That is how I found out about Octave two years ago. I have been using it for the last two years and another

reason why I want to contribute to it, is to help make it bigger. What gave me a hard time was the lack of a fullest symbolic package, that is why I want to work on it sometime after SOCIS.

  • A thing that I had a little trouble finding an answer to how to contribute to Octave's development but I guess that was due to the fact that I had no idea what a source code management system is.

P: Prerequisites[edit]

  • For the past year I have been using Ubuntu 13.10(13.04 before) and before that I used windows 8. I have both these operating systems installed

on my laptop and I have root access to both of them.

  • I have a 24/7 access on an Internet connection, a computer and a computer with my progressing work on.
  • I am free to install any new software on my laptop.

S: Self-assessment[edit]

  • Please describe how useful criticism looks from your point of view as committing student.

After realizing that I was not born a good programmer (that was a long time ago :P ) I begun to appreciate any criticism. It's not that I like to be told that I am wrong, but if I am, I try my best to correct my mistakes.

  • How autonomous are you when developing?

When I get a project on my hands I usually have a good deal of questions at first. Mostly clarification questions. After a while and when I get to understand what is actually needed I can say I am pretty autonomous both in working on the project and solving the new questions coming up. What I like though, is a frequent feedback on whether I am on the right course or not. I hate what some of my university professors do, giving me a project and meeting me again a month after to check on what level I am. I like a frequent, say every 3 or 4 days, communication with other members on the project or the mentor in order to check if everything is ok. It's the more frequent the contact is the better the outcome will be.

  • Do you like to discuss changes intensively and not start coding until you know what you want to do?

My answer is yes, I do like to discuss changes intensively and not start coding until I know what I want to do. I don't expect to have everything figured out from the beginning but I like to have a decent schedule before starting writing code.

  • Do you like to code a proof of concept to 'see how it turns out', modifying that and taking the risk of having work thrown away if it doesn't match what the project or original proponent had in mind?

Yes I do. I like to try many different ways of doing something in order to find the best. Since how will it turn out is not clear at the beginning, throwing work away, even if it is a week's work, is a risk I am willing to take.

Y: Your task[edit]

  • The task I have chosen is the implementation of "High Precision Arithmetic Computation". The part that I would like to focus on would be the completion and test of the multi-precision class along with the implementation of several linear algebra algorithms which will support the use of multi-precision inputs.
  • A rough estimated timeline for my work on the task would be :

Beginning until the end of first month ( June 1st - June 30th )

Include support for array and complex numbers on the already existent version of the multi-precision package.

Implement upclassing on operations involving objects of the multi-precision class.

Milestone 1 : End of first month : The goal at this moment will be to have a fully functioning multi-precision class, including array, complex number support and upclassing.

All deliverables will be tested and debugged during this period.

(July 1st - July 4th)

Testing, documentation, further debugging.

(July 5th - July 15th)

Break. As stated below, my examination period starts at June 10th and end at July 4th, so I would like to have a 10 days break in order to rest and clear up my mind.

( July 16th - August 15th )

Continue with the algorithms' development. Given the four days per algorithm estimation, about 7 - 8 different algorithms should be created during this period.

Milestone 2 : The goal for the end of this period will be to have a fully functioning multi-precision class ( or new basic numerical type ) and also a big enough arsenal of algorithms upon it.

(August 16th - August 31st)

Wrapping up the project. Finish what is left to be done. Documentation, debugging and testing.

A list of algorithms that will be implemented ( not necessary in this order ) to support multi-precision objects is given below :

Singular Value Decomposition ( SVD ), QR factorization, Cholesky factorization ( chol ), Inverse matrix computation, Eigenvalues and eigenvectors calculation, Solving linear systems, Root of non-linear function finder ( fzero ), Minimum value finder ( fmins ).

Development methodology

A rough schedule that will be followed ( not necessarily in this order ) while developing the above algorithms will be :

Step 1 : Check if there is some library based on GMP or MPFR implementing any of those algorithms and if this can be embedded on Octave.

Step 2 : Study Octave's already implemented for double precision algorithms and see if they can be re-formed in order to support multiple precision.

Step 3 : Check if there is any Fortran code implementing any of the required algorithms and if it can be used to add support for multiple precision.

Step 4 : Implementing the algorithm from the scratch. This will be the final choice, and will be done only if there is no other way to implement an algorithm.

Imponderables like illness, bad days, Internet going down globally and such stuff are considered by the above schedule, this is why a precise estimation of days per algorithm is not given.

The only commitment I have for the summer is my university exam period which starts at June 10th and ends at July 4th. Despite that, I will keep coding during these days for about 5 - 6 hours everyday as stated above. Studying for the exams will be done the other hours of the day.

N: News[edit]

I studied Octave's code for matrices and arrays and created the skeleton for adding matrix functionality on the multi-precision package. The skeleton was uploaded as a patch here 8429.

The matrix support for the multi-precision package is planned to be implemented by 2 classes.

1) MpvNDArray class, subclass of MArray<octave_mp>, implementing N-dimentional arrays of multiple precision objects ( octave_mp objects ).

2) octave_mpv_matrix class, subclass of octave_base_matrix<MpvNDArray>, implementing matrices of multiple precision objects.

The goal is to imitate the implementation of FloatNDArray and octave_float_matrix classes, and adjust it to work on multiple precision objects.

P: Private application submitted on SOCIS website[edit]

  • First Name (mandatory):

Georgios

  • Last Name (mandatory) :

Ouzounis

  • Email contact (mandatory) :

geoconstructor625@gmail.com

  • Personal website :
  • Date of birth (mandatory) :

12/09/1992

  • Nationality or nationalities (mandatory) :

Hellenic

  • Institution (mandatory) :

School of Electrical and Computer Engineering Aristotle University of Thessaloniki

  • Institution location (mandatory) :

Greece

  • Mentoring organization (mandatory) :

GNU Octave

  • Project proposal (mandatory) :
  • A: An introduction

My name is Georgios Ouzounis. I am 21 years old and I am a fourth year undergraduate student at the School of Electrical and Computer Engineering at Aristotle University of Thessaloniki, Greece ( http://ee.auth.gr/en/ ).

    • Previous Experience :

Summer of Code in Space (SOCIS) is my second attempt to participate in a program like that after my application getting rejected at the Google Summer of Code 2014. I have been using Octave for the last two years and I have written many scripts for university projects on fields like signal processing, system identification, numerical analysis, electronic circuits etc... As far as my experience on C / C++ is concerned, I have been using these languages for the last four years, writing programs for university projects and personal use.

    • A time frame :

I usually code around 5:00 to 11:00 ( UTC+0 ) and I plan on spending about 5 - 6 hours daily working on SOCIS project including Saturdays and Sundays. I will also be able to join the IRC channel during my coding hours.

The only commitment I have for the summer is my university exam period which starts at June 10th and ends at July 4th. Despite that, I will keep coding during these days for about 5 - 6 hours everyday as stated above. Studying for the exams will be done the other hours of the day. I also plan to have a 10 days break right after the end of my examination period (5th - 15th of July) to clear up my mind and rest.

    • Describing my English :

I can use English very well both in writing and speaking, so there will not be any problems regarding communication with other community members. I have a C1 level certificate for the English language.

  • C: Contact

My nick in IRC and the patch tracker is gouzouni and my nick on wiki.octave.org is Gouzouni.

My e-mail address is geoconstructor625@gmail.com .

My country's time zone is UTC+3 ( Eastern European Time Zone ), and that is not going to change over SOCIS duration.

The instant message networks I daily use are Skype (name Georgios Ouzounis) and Facebook (name Georgios Ouzounis). I have no particular preference on the way the communication is done. E-mails are good for me, so do Facebook and Skype. Whatever suits the other side.

In case of inability to connect on the internet, my mobile's phone number is +30 6972173897.


  • S: Self-assessment

From my university experience and my fellow students comments I would say that I can give constructive advice. Many of my fellow students come to me for advice when they are having a problem with a project they are working on. I guess I could say that I can also receive advice, even though I support my opinion unless there are strong arguments that I am mistaken.

As far as sorting useful criticisms from useless ones is concerned, I would say that I can generally sort useful information from useless so I am good at picking what is needed and leaving the rest.


  • Y: Your task

The project I would like to work on is "High Precision Arithmetic Computation".

    • Addressing the problem :

There are numerous real world examples where double precision numbers, used by Octave, are not enough. Modelling exponential behaviours as found in semiconductor materials and electrical circuits (diodes and transistors) is an example. All of them, end up to solving linear systems of equations where the corresponding matrices are mathematically invertible but numerically not, due to large ratio between their first and last singular values.

    • Proposing a solution :

A solution of the above problem would be the creation of an interface numerical over GNU MPFR (http://www.mpfr.org/) which is (quoting the site) "a C library for multiple-precision floating-point computations with correct rounding". This interface will give the ability to the user to use numbers with arbitrary precision, limited of course by the machine's internal memory. After having that interface (or numerical type) created to support matrices and complex numbers the next step would be the implementation of certain algorithms to work with those arbitrary precision numbers. Some examples of such algorithms would be computing inverse Matrix, Solving linear systems, calculating eigenvalues etc...

    • Expected output :

The amplification of the already existent multi-precision package on the Mercurial repository (http://hg.code.sf.net/p/octave/multi-precision) in order to support matrix and complex number computations ('+', '-', '/', '*', 'determinant' and 'subsref') and also support the algorithms stated above.

The existence of this package for Octave can be a useful tool for it's users and for its developers too. More users will be using Octave for their computational needs and so Octave's community will grow. The outcome of this project could be combined with packages like the Electronic Circuit Simulator and the Signal package to make them more powerful. Prompted by my experience in my university, I can say it could be also useful in robotics where high precision is needed.

    • Why choose me :

The first answer would be, because I really want to. This is not enough on its own but it's a good start. My programming experience is described at the beginning of this application under the label "Previous Experience" and also on my public application at wiki.octave.org/user:Gouzouni . Moreover, I have a very strong mathematical background including but not limited to linear algebra and numerical analysis. This background gives me the ability to translate a problem written in words to a mathematical problem and then use a computer to solve it. I can also easily understand any linear algebra algorithm or concept.

What I hope to gain from this project is experience. It would be my first time to join an open source community and I know there are a lot to learn. In addition, I hope to get a very good idea of how things are done on a project of that scale.

    • A rough schedule of my work :

A rough estimated timeline for my work on the task would be :

Beginning until the end of first month ( June 1st - June 30th )

Include support for array and complex numbers on the already existent version of the multi-precision package.

Implement upclassing on operations involving objects of the multi-precision class.

Milestone 1 : End of first month : The goal at this moment will be to have a fully functioning multi-precision class, including array, complex number support and upclassing.

All deliverables will be tested and debugged during this period.

(July 1st - July 4th)

Testing, documentation, further debugging.

(July 5th - July 15th)

Break. As stated above, my examination period starts at June 10th and ends at July 4th, so I would like to have a 10 days break in order to rest and clear up my mind.

( July 16th - August 15th )

Continue with the algorithms' development. Given the four days per algorithm estimation, about 7 - 8 different algorithms should be created during this period.

Milestone 2 : The goal for the end of this period will be to have a fully functioning multi-precision class ( or new basic numerical type ) and also a big enough arsenal of algorithms upon it.

(August 16th - August 31st)

Wrapping up the project. Finish what is left to be done. Documentation, debugging and testing.

A list of algorithms that will be implemented ( not necessary in this order ) to support multi-precision objects is given below :

Singular Value Decomposition ( SVD ), QR factorization, Cholesky factorization ( chol ), Inverse matrix computation, Eigenvalues and eigenvectors calculation, Solving linear systems, Root of non-linear function finder ( fzero ), Minimum value finder ( fmins ).

Development methodology

A rough schedule that will be followed ( not necessarily in this order ) while developing the above algorithms will be :

Step 1 : Check if there is some library based on GMP or MPFR implementing any of those algorithms and if this can be embedded on Octave.

Step 2 : Study Octave's already implemented for double precision algorithms and see if they can be re-formed in order to support multiple precision.

Step 3 : Check if there is any Fortran code implementing any of the required algorithms and if it can be used to add support for multiple precision.

Step 4 : Implementing the algorithm from the scratch. This will be the final choice, and will be done only if there is no other way to implement an algorithm.

Imponderables like illness, bad days, Internet going down globally and such stuff are considered by the above schedule, this is why a precise estimation of days per algorithm is not given.

Additional notes :