A few years ago, while I was a graduate student in Greece, I was preparing slides for my talk at the SIAM Parallel Processing 2012 conference. While showing my slides to one of my colleagues, one of his comments was: “All good, but why do you guys doing numerical linear algebra and parallel computing always use the Message Passing Interface to communicate between the processors?”. Having read* the book review of Beresford Parlett in , I did have the wit to imitate Marvin Minsky and reply “Is there any other way?”. Nowadays, this question is even more interesting, and my answer would certainly be longer (perhaps too long!). Execution of programs in distributed computing environments requires communication between the processors. It is then natural to consider by what protocols and guidelines should the processors communicate with each other? This is the question to which the Message Passing Interface (MPI) has been the answer for more than 25 years.
Artificial Neural Networks (ANNs) are used everyday for tackling a broad spectrum of prediction and classification problems, and for scaling up applications which would otherwise require intractable amounts of data. ML has been witnessing a “Neural Revolution”1 since the mid 2000s, as ANNs found application in tools and technologies such as search engines, automatic translation, or video classification. Though structurally diverse, Convolutional Neural Networks (CNNs) stand out for their ubiquity of use, expanding the ANN domain of applicability from feature vectors to variable-length inputs.
What can a 1000 scientists achieve when they invest one hour doing voluntary work?
At the heart of Silicon Valley, the CHI 2016 conference broke through new ceilings. CHI (pronounced kai) is the most prestigious international conference in the field of human-computer interaction (HCI). It attracts researchers, designers, engineers, and artists who want to (re)shape technology and media to enhance people’s quality of life. This year, the conference took place in San Jose, USA. Over 3,800 participants from 52 countries presented their work in various media formats, including keynote presentations, media installations, interactive demos, and posters.
In the opening keynote, Dayo Olopade, a Nigerian-American journalist and author, portrayed the challenges she faced moving from the USA to Nairobi, and how the demographics and culture of different countries are unique and should be taken into account in the design of new digital tools. Dayo took the audience on a voyage to Africa where she slowly dissolved the western lense allowing them to see the chaotic, desperate Africa reveal its unconventional systems as an efficient act of “kanju”, a term which refers to the creativity that comes out of African difficulties. Continue reading
Long, long time ago … I started with Octave and Matlab.They were amazing and allowed me to solve a lot of interesting problems in my research. I loved the command window of Octave, but I needed the productivity an IDE gives when developing complex calculations. None of the available IDE’s for Octave were not as powerful as the Matlab IDE. The problem was that Matlab was not GNU and buying a license was very expensive. Then, I found R and I realized that none Octave neither Matlab were the tool I needed for my research. I needed advanced project and file management through repositories, fast data manipulation, an easy way to export my calculations, a creative way of authoring reports and a powerful IDE that let me access my beloved command window. Now R gives me all I need and is an important part of my everyday toolbox. For those who does not known R, I must say that R is a well known programming language that is widely used on mathematics, economy, biology… Its main benefits includes the ability to work easily with statistics and data manipulation. R is very popular on academics and research, is GNU, very powerful and have a lot of packages that allows do magical things in a few clicks or with a few commands.
In software engineering the “big data” catchphrase refers to in-homogeneous large-scale data that can stem from all software development cycles. Such data can be: source code, software bugs and errors, system logs, commits, issues from backtracking systems, discussion threads from consulting sites (e.g. stackoverflow.com), emails from mailing-lists, as well as developers’ demographic data and characteristics and user requirements and reviews. Software engineering can benefit from the aforementioned data in many ways, but there are several challenges regarding the handling of such data.