Full Stack Application Developer Job at HIMAI Project – Career Opportunity in Rwanda

Vacancy title:
Full Stack Application Developer

[ Type: FULL TIME , Industry: Nonprofit, and NGO , Category: Computer & IT ]

Jobs at:

HIMAI Project

Deadline of this Job:
02 November 2020  

Duty Station:
Within Rwanda , Kigali , East Africa

Summary
Date Posted: Monday, October 26, 2020 , Base Salary: Not Disclosed


JOB DETAILS:
We’re transforming Africa through innovative scientific training, technical advances, and breakthrough discoveries! The African Institute for Mathematical Sciences (AIMS) is a pan-African network of centers of excellence for postgraduate training in mathematical sciences, research, and public engagement in STEM. Its mission is to enable Africa’s brightest students to flourish as independent thinkers, problem solvers, and innovators capable of propelling Africa’s future scientific, educational, and economic self-sufficiency. The first AIMS centre opened in Cape Town, South Africa in 2003; since 2011, AIMS has opened additional centers in Senegal, Ghana, Cameroon, and Rwanda. .

Each AIMS Centre provides expertly tailored academic and non-academic programs, training around 50 African students each year and preparing them for leadership in the domains of academia, government, and industry. The AIMS academic program relies on top international lecturers who teach in a 24-hour learning environment.
If you bring a collaborative spirit with a passion to effect change, consider this opportunity as the…
Full Stack Application Developer – HIMAI Project
In this role and reporting to the Chief Scientific Officer, AIMS Global Network, you will be an integral part of the development team building our healthcare research application. You will work closely with the AIMS Global Network IT Manager to deliver the completed application on schedule. You will design the backend and frontend architecture of the application. You will design and build intuitive UX/UI. You will build the backend services APIs, and web application. You will build a USSD application. You will build a cross-platform application with Flutter or React Native. You will hunt and fix bugs.
This is a one-year renewable fixed term contract opportunity based in Kigali, Rwanda.

Job Skills: Not Specified


Do you have what we need?
A Bachelor’s degree in computer science/engineering or related discipline,
At least three years of work experience,
Proven experience as a Full Stack Developer or similar role (unfortunately, this one is not ideal for the first-job sort of person),
Proven experience with USSD application development,
Solid experience with front-end frameworks, preferably Vue.js,
Advanced experience with fundamental front end languages such as HTML, CSS, and JavaScript,
Proven experience with Django [preferably] or other backend frameworks such as Laravel, Ruby on Rails, Sails.js, etc,
Proven experience building cross-platform applications with Flutter [preferably] or React Native,
Experience with web and server-side/API development, preferably REST,
Relational databases experience, preferably Postgres,
Cloud services experience, preferably AWS,
Solid experience with version control systems, particularly Git,
Experience with large data sets and heavy web traffic environments,
Solid experience with unit testing,
Excellent communication and teamwork skills,
A curious, eager to learn & innovative mind,
The ability & willingness to work autonomously/independently,
Strong organizational and project management skills,
Attention to detail,
Any combination of relevant education and experience may be substituted for the educational requirement on a year-for-year basis.
Are you ready to be a part of the transformation?

Job Education Requirements: Not Specified


Job Experience Requirements: Not Specified


Work Hours: 8

 

Job application procedure
• Fork (as private) and complete the code challenges in this Github gist

Write a function Estimator(str) that evaluates the mathematical expression in a str parameter passed to it. For instance, if the string is "5+(2/1)*6" the output should be 17. The function must abide by the order of arithmetic operations – Parentheses, Exponents, Multiplication/Division, Addition/Subtraction (PEMDAS). You should ignore decimal operations.
Examples
Input: "5+(2/1)*6"
Output: 17
view raw code-challenge-1.txt hosted with ❤ by GitHub
Have the function SwitchSort(arr) take arr which will be an an array consisting of integers 1…size(arr) and determine what the fewest number of steps is in order to sort the array from least to greatest using the following technique: Each element E in the array can swap places with another element that is arr[E] spaces to the left or right of the chosen element. You can loop from one end of the array to the other. For example: if arr is the array [1, 3, 4, 2] then you can choose the second element which is the number 3, and if you count 3 places to the left you'll loop around the array and end up at the number 4. Then you swap these elements and arr is then [1, 4, 3, 2]. From here only one more step is required, you choose the last element which is the number 2, count 2 places to the left and you'll reach the number 4, then you swap these elements and you end up with a sorted array [1, 2, 3, 4]. Your program should return an integer that specifies the least amount of steps needed in order to sort the array using the following switch sort technique.
The array arr will at most contain five elements and will contain at least two elements.
Examples
Input: [3,1,2]
Output: 2
Input: [1,3,4,2]
Output: 2
view raw code-challenge-2.txt hosted with ❤ by GitHub
In the Bash script, wite a program that gets the raw output logs that exist at URL https://drive.google.com/file/d/1pkwpc0i56sGZrcfNoCFuypFXmmLeXtDC/view?usp=sharing. The logs there are a sample of real web server logs. Each line begins with a date, e.g. Apr 10 11:17:35. Your program should do the following:
Loop through each log item, and find the lines that contain the string aimsnei apache2/vhost. For each of those, echo the request_id value to a new line, and if the fwd key has the value of MASKED, then add a [M] to the end of the line with a space before it. Your final output should look something like the following:
b19a87a1-1bbb-000-00000
b19a87a1-1bbb-000-11111
8bb2413c-3c67-4180-22222 [M]
10f93da3-2753-48a3-33333 [M]
view raw code-challenge-3.txt hosted with ❤ by GitHub
We provided some simple Vue.js template code. Your goal is to create a functioning Tic Tac Toe game. It should work the following way: the first player to go places an X anywhere on the board by clicking a square, and then the next player will be able to place an O, and it continues alternating like this every turn.
You should also implement a function to determine if any player won by getting 3 X's or O's in a row. If there is a winner, display a message at the top. If nobody wins, then do not display any message. Finally, you should also implement the reset function that resets the entire board.
<template>
<div id="app">
<div class="status">{{ status }}</div>
<button>Reset</button>
<template v-for="row in 3">
<div class="row" :key="row">
<button v-for="button in 3" class="square" style="width:40px;height:40px;"></button>
</div>
</template>
</div>
</template>
<script>
export default {
name: "App",
data() {
return {
status: 'Next player: X'
};
}
};
</script>
view raw code-challenge-4.txt hosted with ❤ by GitHub
We provided some simple React template code. Your goal is to create a functioning Tic Tac Toe game. It should work the following way: the first player to go places an X anywhere on the board by clicking a square, and then the next player will be able to place an O, and it continues alternating like this every turn.
You should also implement a function to determine if any player won by getting 3 X's or O's in a row. If there is a winner, display a message at the top. If nobody wins, then do not display any message. Finally, you should also implement the reset function that resets the entire board.
Submit your code once it is complete and our system will validate your output.
import React from 'react';
import ReactDOM from 'react-dom';
const rowStyle = {
display: 'flex'
}
const squareStyle = {
'width':'60px',
'height':'60px',
'backgroundColor': '#ddd',
'margin': '4px',
'display': 'flex',
'justifyContent': 'center',
'alignItems': 'center',
'fontSize': '20px',
'color': 'white'
}
const boardStyle = {
'backgroundColor': '#eee',
'width': '208px',
'alignItems': 'center',
'justifyContent': 'center',
'display': 'flex',
'flexDirection': 'column',
'border': '3px #eee solid'
}
const containerStyle = {
'display': 'flex',
'alignItems': 'center',
'flexDirection': 'column'
}
const instructionsStyle = {
'marginTop': '5px',
'marginBottom': '5px',
'fontWeight': 'bold',
'fontSize': '16px',
}
const buttonStyle = {
'marginTop': '15px',
'marginBottom': '16px',
'width': '80px',
'height': '40px',
'backgroundColor': '#8acaca',
'color': 'white',
'fontSize': '16px',
}
class Square extends React.Component {
render() {
return (
<div
className="square"
style={squareStyle}>
</div>
);
}
}
class Board extends React.Component {
render() {
return (
<div style={containerStyle} className="gameBoard">
<div className="status" style={instructionsStyle}>Next player: X</div>
<div className="winner" style={instructionsStyle}>Winner: None</div>
<button style={buttonStyle}>Reset</button>
<div style={boardStyle}>
<div className="board-row" style={rowStyle}>
<Square />
<Square />
<Square />
</div>
<div className="board-row" style={rowStyle}>
<Square />
<Square />
<Square />
</div>
<div className="board-row" style={rowStyle}>
<Square />
<Square />
<Square />
</div>
</div>
</div>
);
}
}
class Game extends React.Component {
render() {
return (
<div className="game">
<div className="game-board">
<Board />
</div>
</div>
);
}
}
ReactDOM.render(
<Game />,
document.getElementById('root')
);
view raw code-challenge-5.txt hosted with ❤ by GitHub
Your table: maintable_LJI9C
Table URL: https://drive.google.com/file/d/1996QUer6dbtTpCsM73ArOE6h8hHlXit_/view?usp=sharing
MySQL version: 5.5.56-log
In this MySQL challenge, your query should return the names of the people who are reported to (excluding null values), the number of members that report to them, and the average age of those members as an integer. The rows should be ordered by the names in alphabetical order. Your output should look like the following table.
+———————–+———+————-+
| ReportsTo | Members | Average Age |
| Agbeko Tagbor | 2 | 24 |
| Nutifafa Agbenyegah | 1 | 22 |
| Nuseli Vava | 1 | 25 |
| Elorm Nyatefe | 2 | 31 |
+———————–+———+————-+
view raw code-challenge-6.txt hosted with ❤ by GitHub
Have the function StringScramble(str1,str2) take both parameters being passed and return the string true if a portion of str1 characters can be rearranged to match str2, otherwise return the string false. For example: if str1 is "rkqodlw" and str2 is "world" the output should return true. Punctuation and symbols will not be entered with the parameters.
Examples
Input: "cdore" & str2= "coder"
Output: true
Input: "h3llko" & str2 = "hello"
Output: false
view raw code-challenge-7.txt hosted with ❤ by GitHub
Have the function CoinDeterminer(num) take the input, which will be an integer ranging from 1 to 250, and return an integer output that will specify the least number of coins, that when added, equal the input integer. Coins are based on a system as follows: there are coins representing the integers 1, 5, 7, 9, and 11. So for example: if num is 16, then the output should be 2 because you can achieve the number 16 with the coins 9 and 7. If num is 25, then the output should be 3 because you can achieve 25 with either 11, 9, and 5 coins or with 9, 9, and 7 coins.
Examples
Input: 6
Output: 2
Input: 16
Output: 2
view raw code-challenge-8.txt hosted with ❤ by GitHub
  . You must include the URL to the (private) Github gist with your solutions to the code challenges in the application form.
• Complete the application form at this link https://forms.gle/Wfm4Miyrdh3MJj7s8   .
• Upload your letter of motivation, including salary expectations, and a detailed CV in English, merged as one PDF file, via the application form.
• Include a link to your portfolio in the application form.
• Applications will be accepted until November 2, 2020.
Should no feedback be received from AIMS-NEI within four weeks of your submission, kindly accept that your application will not be further pursued. AIMS-NEI reserves the right not to make an appointment at its sole discretion.
AIMS-NEI is an equal opportunity employer. Visit www.nexteinstein.org to learn more about AIMS

Partagez et envoyez cette annonce à vos amis !