From Octave
Jump to navigation Jump to search

A: An introduction[edit]

  • Please describe yourself in three sentences, one of them regarding your current studies.

I'm currently working towards my PhD in Electrical Engineering which focuses on the statistical modeling of 5G wireless networks.

I like cooking, baking and watching food network :)

I am an introvert

    • Which languages do you speak?

English, Urdu.

    • What's your overall background?

PhD Student (2013-current). Full Scholarship. (Tuiton + Stipend). Electrical Engineering (Researching on next generation wireless networks). University of Leeds, UK

MSc. (2011-2013) Electrical Engineering. Tuition Scholarship. (3.90/4.00), National University of Science and Technology, Pakistan. Distinction.

Lab Engineer (6 months. 2013). Projects for Cypress Semiconductor USA, National University of Sciences and Technology, Pakistan

BSc. (2007-2011) Electrical Engineering, National University of Science and Technology, Pakistan.

O/A levels.

  • Why do you want to participate in the Google Summer of Code? What do you hope to gain by doing so?

Participation in GSoC will not only help me be a part of an organization but also provide me the opportunity to be mentored by highly skilled and experienced professionals

The learning curve from this experience will be huge as I will walk through the process of making a normal looking piece of code worthy of integration in a software.

It is an impressive achievement to add on the CV and opens a lot of career options. I have a friend whose career jump started with GSoC :).

    • Please also describe your previous experience with the GSoC, if any.

This is my first formal application for Octave GSoC.

  • Why are you choosing Octave?

My PhD research work involves math/optimization/statistics.

I have a foundation in the area to be able to immediately start contributing as seen by functions added in the Optim package recently.

quadprog in Optim package [1]

lsqlin in Optim package [2]

C: Contact[edit]

  • Please state the (unique and identical where possible) nick you use on IRC and any other communication channel related to Octave.


  • Which time zone do you live in?

UTC+1 April-Oct

  • Please state the timeframe (in UTC+0) when you feel most comfortable working during GSoC. Where are your time buffers?

As a rough guide, 1600 till late. But I am flexible. :)

E: Coding experience[edit]

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 ;-)

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

Matlab. A lot. Throughout graduate and post graduate. Communications/Signal Processing/Optimization/Math.

Octave. See [3] and [4]

  • Please describe your experience with other programming languages.

C/Verilog. AES encryption.

  • Please describe your experience with being in a development team.

Undergraduate group assignments/final project. Involved Digital Design implementation in Verilog.

  • 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.

AES Encryption implementation on Cypress Programmable System on Chip (PSoC) 3 [5] The PSoC has a unique architecture and uses a combination of C/RTL blocks for implementing designs. I was hired during my masters for implementing designs on the PSoC and publish how its architecture enhances implementations of designs. See [6] and [7]

This was mostly a solo task in terms of implementation. The actual documentation was collaborative.

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

quadprog in Optim package [8]

lsqlin in Optim package [9]

F: Feeling fine[edit]

  • Please describe (in short) your experience with the following tools:
    • IRC and mailing lists

Can use them.

    • Mercurial or other source code management systems

Won't need help

    • Mediawiki or other wiki software


    • make, gcc, gdb or other development tools

Will need to learn more for them. But might not need these.

  • What will make you actively stay in our community after this GSoC is over?

Being better positioned to practically contribute further to Octave.

O: Only out of interest[edit]

  • Did you ever hear about Octave before?

Sometimes as a MATLAB alternative.

    • If so, when and where? How far have you been involved already?

Before GSoC. No.

    • If not, where would you expect or advise us to do advertising?

MATLAB alternative is a big advertisement. Closer compatibility.

Better windows installer is coming soon. That was a big barrier to entry.

  • What was the first question concerning Octave you could not find an answer to rather quickly?

Difference between Octave and Octave Forge can be a bit confusing at first. Optim(forge)/Optimization(core). etc.

P: Prerequisites[edit]

  • Please state the operating system you work with.

Windows, Linux Mint.

    • If you have access to more than one, please state them and the conditions under which you are granted this access.

Windows only in university lab. Windows/Linux at home.

  • Please estimate an average time per day you will be able to (if separated) access
    • an internet connection
    • a computer
    • a computer with your progressing work on


  • Please describe the degree up to which you can install new software on computers you have access to.

Portable software on Windows in Lab. Admin rights on home PC/laptop.

S: Self-assessment[edit]

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

I like feedback rather than silence. I prefer constructive criticism. :)

  • How autonomous are you when developing?

After initial direction, I can be mostly autonomous.

    • Do you like to discuss changes intensively and not start coding until you know what you want to do?
    • 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?

I like to have some idea about what I'm going to do to stay focused. Having said that, I don't think the code ever turns out to be perfect at the very first attempt. Many times, it's necessary to write the code, starting from the simplest case for better understanding of the functionality and then extend it according to the project requirements.

Y: Your task[edit]

  • Did you select a task from our list of proposals and ideas?


    • 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.


Discussion and work on project can be seen here.

To summarize, adding functions to the Optim package for Octave using existing back-ends available. And adding another back-end as a stretch goal.

  • Please provide a rough estimated timeline for your work on the task.
      • GSoC Application period

'quadprog' wrapper around 'qp' done

'lsqlin' using 'qp' done

      • Start of GSoC (May)

'lsqnonlin' using 'nonlin_residmin'

'lsqcurvefit' using 'nonlin_curvefit', 'nonlin_residmin', or 'lsqnonlin',

'fmincon' using 'nonlin_min',

'nlinfit' using 'leasqr',

      • Midterm

test cases for these functions [10]

instead of wrappers for top-level functions like qp. Call back-end function (__qp__) to be able to extract lambda. See [11]

      • Stretch Goals

Further missing functions in Optim package. See [12] Implement another back-end algorithm/add variant.