
Nenad Korolija
Verified Expert in Engineering
C++ Developer
Belgrade, Serbia
Toptal member since April 14, 2020
Nenad is an experienced software engineer with a strong math and computer science background. During his Ph.D. in the domain of high-performance computing and architectures, he was an intern at Google in California. Based on his Ph.D. on the topic of parallelizing algorithm execution, he has improved the Maxeler infrastructure in London. He possesses extensive problem-solving skills, with expertise in C/C++, but he is also comfortable working with Java, PHP, Python, and database systems.
Portfolio
Experience
- C - 18 years
- C++ - 18 years
- Simulations - 12 years
- Linux - 12 years
- MySQL - 8 years
- Databases - 8 years
- PHP - 8 years
- Python - 2 years
Availability
Preferred Environment
Parallel Programming, GNU Debugger (GDB), MPI, Bash, Linux, SQL, PHP, C++, C
The most amazing...
...improvement I've done in Google was accelerating GDB and the gdbserver communication, as it can affect parallel software development worldwide.
Work Experience
Software Designer and Developer
Tcom d.o.o.
- Developed OCR (optical character recognition) on seven segment displays for android phones in C++.
- Recruited employment software developers that now form a team for digital and analog OCR and related server applications.
- Led OCR for digital and analog numbers and co-led the development of two projects in PHP, Laravel, C++, and statistics.
Researcher
University of Belgrade, School of Electrical Engineering
- Contributed to projects for the Ministry of Science, European FP7 (HiPEAC, ARTreat), etc.
- Programmed the Maxeler FPGA-based dataflow hardware using C++, Java, and MaxJ.
- Led students who were competing in regional/international programming contests.
- Taught two courses for two years: Software Project Management, and Business Communication: A Practical Course.
- Organized computer laboratories and implemented a portion of faculty websites using PHP and MySQL.
C++ and Java Developer
Khloud Abdeen
- Developed an algorithm that automatically parallelizes C++ programs with certain C++ constructs (e.g. loops and function calls) using MPI and OpenMP.
- Developed a parser that acts as an interpreter of C++ expressions. Therefore, variables whose values could be detected in the compile time will be known, and loop parallelization can be scheduled accordingly.
- Developed a method to automatically serialize arguments of functions from a given C++ program and deserialize at the receiving MPI process. Types of parameters are extracted in the compile time using a macro.
Software Developer (Contract)
Maxeler Technologies
- Improved the infrastructure by developing a C++ analyzer of data streams to be processed on an FPGA (Field Programmable Gate Arrays) hardware.
- Developed a C++ simulator for running high-performance applications on an FPGA hardware with reduced precision of floating-point numbers.
- Implemented support for fixed-point real numbers arithmetic.
- Continued simulator development with a team assigned for this purpose in Belgrade until the end of the year.
Intern
Google Inc.
- Improved the GNU debugger (GDB). Speeded-up the communication between GDB and the gdbserver.
- Designed and implemented a test framework in Python for testing GDB pretty-printers and changed the biggest pretty-printer accordingly.
- Discussed the Google infrastructure and possibilities for improving the performance of a custom compiler.
Researcher
Department of Information Engineering, University of Sienna
- Extended a decoupled threaded architecture simulator in C++.
- Developed highly parallel benchmarks in DTA assembler and analyzed the architecture performances.
- Worked remotely on development for one year from the School of Electrical Engineering, University of Belgrade, Serbia.
Software Developer
IPSI
- Designed the software cache management as a parallel version of the server infrastructure. This was a project for Dow Jones, USA.
- Implemented SwanLink, a Visual C++ P2P collaborating drawing application for teaching. This was a project for Panthesis in Bellevue, WA, USA.
- Improved and ported a C++ MPEG multiplexer from Windows to Linux. This was a project for IPSI Fraunhofer Institute, Germany.
Researcher
Institute of Parallel and Distributed Systems
- Developed the conjugate gradient method (2D and 3D) in C.
- Implemented a parallel version of the 3D CG method using the MPI library.
- Optimized computer communication—scalable up to 128 processors that the cluster had.
- Attended and helped to organize multiple DAAD conferences and courses for learning MPI in Belgrade and neighboring countries. Presented results.
Experience
Research: SCI Journal Papers and Book Chapters
- Research papers related to high-performance computing: algorithm parallelization, dataflow scheduling, and cloud scheduling, among other topics.
- Numerous book chapters published by Springer (https://scholar.google.com/scholar?q=nenad+korolija+springer).
- A PHP and a MySQL website, together with a methodology for grading changes in the assessment of facial attractiveness, that resulted in an SCI journal paper.
Teaching Support Websites in PHP and MySQL
- Book computer laboratories.
- Submit homework.
- Define diploma thesis topics.
- Choose their laboratory slots for teaching activities.
These websites have been used by more than 10,000 students.
I also implemented a CMS for the teaching staff to support the definition of all previously mentioned activities.
A Novel Method to Detect Recycled Counterfeit Integrated Circuits
This research was supported by the Army Research Office (ARO) and by Texas Instruments Inc. The results were published at the IEEE journal and the paper was recommended by the associate editor.
According to a paper by M. Pecht and S. Tiku (https://ieeexplore.ieee.org/abstract/document/1628506), legitimate electronics companies miss out on about USD $100 billion of global revenue every year because of counterfeiting.
Visual Simulator of the Process of Alloy Casting
I shared knowledge on the topic at international conferences and wrote a related paper.
Parallelizing Latice-Boltzmann Method Using FPGAs
Education
Ph.D. in Electrical Engineering and Computer Science
School of Electrical Engineering, University of Belgrade - Serbia
Postgraduate Degree in Electrical Engineering and Computer Science
School of Electrical Engineering, University of Belgrade - Serbia
Bachelor Degree in Electrical Engineering and Computer Science
School of Electrical Engineering, University of Belgrade - Serbia
Skills
Libraries/APIs
MPI, Open MPI
Tools
GNU Debugger (GDB), Git, Makefile, Jira, Perforce, Cloud Dataflow
Languages
C++, C, PHP, Bash Script, HTML, SQL, Bash, Tcl, Java, Assembler, Python, XML, JavaScript, CSS
Platforms
Linux, Windows
Storage
MySQL, Databases
Frameworks
JUnit
Paradigms
Database Design, Parallel Programming
Other
Software Engineering, Simulations, Architecture, FPGA, Algorithms, Parsers
How to Work with Toptal
Toptal matches you directly with global industry experts from our network in hours—not weeks or months.
Share your needs
Choose your talent
Start your risk-free talent trial
Top talent is in high demand.
Start hiring