feat(learn): python certification projects (#38216)
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com> Co-authored-by: Kristofer Koishigawa <scissorsneedfoodtoo@gmail.com> Co-authored-by: Beau Carnes <beaucarnes@gmail.com>
This commit is contained in:
committed by
Mrugesh Mohapatra
parent
3c3ceaa3f5
commit
22afc2a0ca
@ -172,6 +172,21 @@
|
|||||||
"description": "Camper is full stack certified (2018)",
|
"description": "Camper is full stack certified (2018)",
|
||||||
"default": false
|
"default": false
|
||||||
},
|
},
|
||||||
|
"isSciCompPyCert": {
|
||||||
|
"type": "boolean",
|
||||||
|
"description": "Camper is scientific computing with Python certified",
|
||||||
|
"default": false
|
||||||
|
},
|
||||||
|
"isDataAnalysisPyCert": {
|
||||||
|
"type": "boolean",
|
||||||
|
"description": "Camper is data analysis with Python certified",
|
||||||
|
"default": false
|
||||||
|
},
|
||||||
|
"isMachineLearningPyCert": {
|
||||||
|
"type": "boolean",
|
||||||
|
"description": "Camper is machine learning with Python certified",
|
||||||
|
"default": false
|
||||||
|
},
|
||||||
"completedChallenges": {
|
"completedChallenges": {
|
||||||
"type": [
|
"type": [
|
||||||
{
|
{
|
||||||
|
@ -19,7 +19,10 @@ import {
|
|||||||
dataVis2018Id,
|
dataVis2018Id,
|
||||||
apisMicroservicesId,
|
apisMicroservicesId,
|
||||||
infosecQaId,
|
infosecQaId,
|
||||||
fullStackId
|
fullStackId,
|
||||||
|
sciCompPyId,
|
||||||
|
dataAnalysisPyId,
|
||||||
|
machineLearningPyId
|
||||||
} from '../utils/constantStrings.json';
|
} from '../utils/constantStrings.json';
|
||||||
import { oldDataVizId } from '../../../config/misc';
|
import { oldDataVizId } from '../../../config/misc';
|
||||||
import certTypes from '../utils/certTypes.json';
|
import certTypes from '../utils/certTypes.json';
|
||||||
@ -104,7 +107,13 @@ function createCertTypeIds(app) {
|
|||||||
Challenge
|
Challenge
|
||||||
),
|
),
|
||||||
[certTypes.infosecQa]: getIdsForCert$(infosecQaId, Challenge),
|
[certTypes.infosecQa]: getIdsForCert$(infosecQaId, Challenge),
|
||||||
[certTypes.fullStack]: getIdsForCert$(fullStackId, Challenge)
|
[certTypes.fullStack]: getIdsForCert$(fullStackId, Challenge),
|
||||||
|
[certTypes.sciCompPy]: getIdsForCert$(sciCompPyId, Challenge),
|
||||||
|
[certTypes.dataAnalysisPy]: getIdsForCert$(dataAnalysisPyId, Challenge),
|
||||||
|
[certTypes.machineLearningPy]: getIdsForCert$(
|
||||||
|
machineLearningPyId,
|
||||||
|
Challenge
|
||||||
|
)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -124,7 +133,10 @@ const certIds = {
|
|||||||
[certTypes.dataVis2018]: dataVis2018Id,
|
[certTypes.dataVis2018]: dataVis2018Id,
|
||||||
[certTypes.apisMicroservices]: apisMicroservicesId,
|
[certTypes.apisMicroservices]: apisMicroservicesId,
|
||||||
[certTypes.infosecQa]: infosecQaId,
|
[certTypes.infosecQa]: infosecQaId,
|
||||||
[certTypes.fullStack]: fullStackId
|
[certTypes.fullStack]: fullStackId,
|
||||||
|
[certTypes.sciCompPy]: sciCompPyId,
|
||||||
|
[certTypes.dataAnalysisPy]: dataAnalysisPyId,
|
||||||
|
[certTypes.machineLearningPy]: machineLearningPyId
|
||||||
};
|
};
|
||||||
|
|
||||||
const certText = {
|
const certText = {
|
||||||
@ -137,7 +149,10 @@ const certText = {
|
|||||||
[certTypes.jsAlgoDataStruct]: 'JavaScript Algorithms and Data Structures',
|
[certTypes.jsAlgoDataStruct]: 'JavaScript Algorithms and Data Structures',
|
||||||
[certTypes.dataVis2018]: 'Data Visualization',
|
[certTypes.dataVis2018]: 'Data Visualization',
|
||||||
[certTypes.apisMicroservices]: 'APIs and Microservices',
|
[certTypes.apisMicroservices]: 'APIs and Microservices',
|
||||||
[certTypes.infosecQa]: 'Information Security and Quality Assurance'
|
[certTypes.infosecQa]: 'Information Security and Quality Assurance',
|
||||||
|
[certTypes.sciCompPy]: 'Scientific Computing with Python',
|
||||||
|
[certTypes.dataAnalysisPy]: 'Data Analysis with Python',
|
||||||
|
[certTypes.machineLearningPy]: 'Machine Learning with Python'
|
||||||
};
|
};
|
||||||
|
|
||||||
const completionHours = {
|
const completionHours = {
|
||||||
@ -150,7 +165,10 @@ const completionHours = {
|
|||||||
[certTypes.jsAlgoDataStruct]: 300,
|
[certTypes.jsAlgoDataStruct]: 300,
|
||||||
[certTypes.dataVis2018]: 300,
|
[certTypes.dataVis2018]: 300,
|
||||||
[certTypes.apisMicroservices]: 300,
|
[certTypes.apisMicroservices]: 300,
|
||||||
[certTypes.infosecQa]: 300
|
[certTypes.infosecQa]: 300,
|
||||||
|
[certTypes.sciCompPy]: 400,
|
||||||
|
[certTypes.dataAnalysisPy]: 400,
|
||||||
|
[certTypes.machineLearningPy]: 400
|
||||||
};
|
};
|
||||||
|
|
||||||
function getIdsForCert$(id, Challenge) {
|
function getIdsForCert$(id, Challenge) {
|
||||||
@ -174,7 +192,10 @@ function sendCertifiedEmail(
|
|||||||
isJsAlgoDataStructCert,
|
isJsAlgoDataStructCert,
|
||||||
isDataVisCert,
|
isDataVisCert,
|
||||||
isApisMicroservicesCert,
|
isApisMicroservicesCert,
|
||||||
isInfosecQaCert
|
isInfosecQaCert,
|
||||||
|
isSciCompPyCert,
|
||||||
|
isDataAnalysisPyCert,
|
||||||
|
isMachineLearningPyCert
|
||||||
},
|
},
|
||||||
send$
|
send$
|
||||||
) {
|
) {
|
||||||
@ -185,7 +206,10 @@ function sendCertifiedEmail(
|
|||||||
!isJsAlgoDataStructCert ||
|
!isJsAlgoDataStructCert ||
|
||||||
!isDataVisCert ||
|
!isDataVisCert ||
|
||||||
!isApisMicroservicesCert ||
|
!isApisMicroservicesCert ||
|
||||||
!isInfosecQaCert
|
!isInfosecQaCert ||
|
||||||
|
!isSciCompPyCert ||
|
||||||
|
!isDataAnalysisPyCert ||
|
||||||
|
!isMachineLearningPyCert
|
||||||
) {
|
) {
|
||||||
return Observable.just(false);
|
return Observable.just(false);
|
||||||
}
|
}
|
||||||
@ -216,7 +240,10 @@ function getUserIsCertMap(user) {
|
|||||||
isFrontEndCert = false,
|
isFrontEndCert = false,
|
||||||
isBackEndCert = false,
|
isBackEndCert = false,
|
||||||
isDataVisCert = false,
|
isDataVisCert = false,
|
||||||
isFullStackCert = false
|
isFullStackCert = false,
|
||||||
|
isSciCompPyCert = false,
|
||||||
|
isDataAnalysisPyCert = false,
|
||||||
|
isMachineLearningPyCert = false
|
||||||
} = user;
|
} = user;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@ -229,7 +256,10 @@ function getUserIsCertMap(user) {
|
|||||||
isFrontEndCert,
|
isFrontEndCert,
|
||||||
isBackEndCert,
|
isBackEndCert,
|
||||||
isDataVisCert,
|
isDataVisCert,
|
||||||
isFullStackCert
|
isFullStackCert,
|
||||||
|
isSciCompPyCert,
|
||||||
|
isDataAnalysisPyCert,
|
||||||
|
isMachineLearningPyCert
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -350,6 +380,9 @@ function createShowCert(app) {
|
|||||||
is2018DataVisCert: true,
|
is2018DataVisCert: true,
|
||||||
isApisMicroservicesCert: true,
|
isApisMicroservicesCert: true,
|
||||||
isInfosecQaCert: true,
|
isInfosecQaCert: true,
|
||||||
|
isSciCompPyCert: true,
|
||||||
|
isDataAnalysisPyCert: true,
|
||||||
|
isMachineLearningPyCert: true,
|
||||||
isHonest: true,
|
isHonest: true,
|
||||||
username: true,
|
username: true,
|
||||||
name: true,
|
name: true,
|
||||||
|
@ -167,6 +167,9 @@ function postResetProgress(req, res, next) {
|
|||||||
isBackEndCert: false,
|
isBackEndCert: false,
|
||||||
isDataVisCert: false,
|
isDataVisCert: false,
|
||||||
isFullStackCert: false,
|
isFullStackCert: false,
|
||||||
|
isSciCompPyCert: false,
|
||||||
|
isDataAnalysisPyCert: false,
|
||||||
|
isMachineLearningPyCert: false,
|
||||||
completedChallenges: []
|
completedChallenges: []
|
||||||
},
|
},
|
||||||
function(err) {
|
function(err) {
|
||||||
|
@ -8,5 +8,8 @@
|
|||||||
"jsAlgoDataStruct": "isJsAlgoDataStructCert",
|
"jsAlgoDataStruct": "isJsAlgoDataStructCert",
|
||||||
"apisMicroservices": "isApisMicroservicesCert",
|
"apisMicroservices": "isApisMicroservicesCert",
|
||||||
"infosecQa": "isInfosecQaCert",
|
"infosecQa": "isInfosecQaCert",
|
||||||
"fullStack": "isFullStackCert"
|
"fullStack": "isFullStackCert",
|
||||||
|
"sciCompPy": "isSciCompPyCert",
|
||||||
|
"dataAnalysisPy": "isDataAnalysisPyCert",
|
||||||
|
"machineLearningPy": "isMachineLearningPyCert"
|
||||||
}
|
}
|
||||||
|
@ -2,10 +2,13 @@
|
|||||||
"frontEndCert": "Front End Development Certification",
|
"frontEndCert": "Front End Development Certification",
|
||||||
"backEndCert": "Back End Development Certification",
|
"backEndCert": "Back End Development Certification",
|
||||||
"fullStackCert": "Full Stack Development Certification",
|
"fullStackCert": "Full Stack Development Certification",
|
||||||
"respWebDesign": "Responsive Web Design Certification",
|
"respWebDesignCert": "Responsive Web Design Certification",
|
||||||
"frontEndLibs": "Front End Libraries Certification",
|
"frontEndLibsCert": "Front End Libraries Certification",
|
||||||
"jsAlgoDataStruct": "JavaScript Algorithms and Data Structures Certification",
|
"jsAlgoDataStructCert": "JavaScript Algorithms and Data Structures Certification",
|
||||||
"dataVis": "Data Visualisation Certification",
|
"dataVisCert": "Data Visualisation Certification",
|
||||||
"apisMicroservices": "APIs and Microservices Certification",
|
"apisMicroservicesCert": "APIs and Microservices Certification",
|
||||||
"infosecQa": "Information Security and Quality Assurance Certification"
|
"infosecQaCert": "Information Security and Quality Assurance Certification",
|
||||||
|
"sciCompPyCert": "Scientific Computing with Python Certification",
|
||||||
|
"dataAnalysisPyCert": "Data Analysis with Python Certification",
|
||||||
|
"machineLearningPyCert": "Machine Learning with Python Certification"
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,10 @@ export function completeCommitment$(user) {
|
|||||||
isJsAlgoDataStructCert,
|
isJsAlgoDataStructCert,
|
||||||
isDataVisCert,
|
isDataVisCert,
|
||||||
isApisMicroservicesCert,
|
isApisMicroservicesCert,
|
||||||
isInfosecQaCert
|
isInfosecQaCert,
|
||||||
|
isSciCompPyCert,
|
||||||
|
isDataAnalysisPyCert,
|
||||||
|
isMachineLearningPyCert
|
||||||
} = user;
|
} = user;
|
||||||
|
|
||||||
return Observable.fromNodeCallback(user.pledge, user)().flatMap(pledge => {
|
return Observable.fromNodeCallback(user.pledge, user)().flatMap(pledge => {
|
||||||
@ -36,7 +39,10 @@ export function completeCommitment$(user) {
|
|||||||
(isJsAlgoDataStructCert && goal === commitGoals.jsAlgoDataStructCert) ||
|
(isJsAlgoDataStructCert && goal === commitGoals.jsAlgoDataStructCert) ||
|
||||||
(isDataVisCert && goal === commitGoals.dataVisCert) ||
|
(isDataVisCert && goal === commitGoals.dataVisCert) ||
|
||||||
(isApisMicroservicesCert && goal === commitGoals.apisMicroservicesCert) ||
|
(isApisMicroservicesCert && goal === commitGoals.apisMicroservicesCert) ||
|
||||||
(isInfosecQaCert && goal === commitGoals.infosecQaCert)
|
(isInfosecQaCert && goal === commitGoals.infosecQaCert) ||
|
||||||
|
(isSciCompPyCert && goal === commitGoals.sciCompPyCert) ||
|
||||||
|
(isDataAnalysisPyCert && goal === commitGoals.dataAnalysisPyCert) ||
|
||||||
|
(isMachineLearningPyCert && goal === commitGoals.machineLearningPyCert)
|
||||||
) {
|
) {
|
||||||
debug('marking goal complete');
|
debug('marking goal complete');
|
||||||
pledge.isCompleted = true;
|
pledge.isCompleted = true;
|
||||||
|
@ -11,5 +11,8 @@
|
|||||||
"jsAlgoDataStructId": "561abd10cb81ac38a17513bc",
|
"jsAlgoDataStructId": "561abd10cb81ac38a17513bc",
|
||||||
"apisMicroservicesId": "561add10cb82ac38a17523bc",
|
"apisMicroservicesId": "561add10cb82ac38a17523bc",
|
||||||
"infosecQaId": "561add10cb82ac38a17213bc",
|
"infosecQaId": "561add10cb82ac38a17213bc",
|
||||||
"fullStackId": "561add10cb82ac38a17213bd"
|
"fullStackId": "561add10cb82ac38a17213bd",
|
||||||
|
"sciCompPyId": "5e44431b903586ffb414c951",
|
||||||
|
"dataAnalysisPyId": "5e46fc95ac417301a38fb934",
|
||||||
|
"machineLearningPyId": "5e46fc95ac417301a38fb935"
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,10 @@ function getCompletedCertCount(user) {
|
|||||||
'isFrontEndLibsCert',
|
'isFrontEndLibsCert',
|
||||||
'isInfosecQaCert',
|
'isInfosecQaCert',
|
||||||
'isJsAlgoDataStructCert',
|
'isJsAlgoDataStructCert',
|
||||||
'isRespWebDesignCert'
|
'isRespWebDesignCert',
|
||||||
|
'isSciCompPyCert',
|
||||||
|
'isDataAnalysisPyCert',
|
||||||
|
'isMachineLearningPyCert'
|
||||||
].reduce((sum, key) => (user[key] ? sum + 1 : sum), 0);
|
].reduce((sum, key) => (user[key] ? sum + 1 : sum), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,6 +25,9 @@ export const publicUserProps = [
|
|||||||
'isInfosecQaCert',
|
'isInfosecQaCert',
|
||||||
'isJsAlgoDataStructCert',
|
'isJsAlgoDataStructCert',
|
||||||
'isRespWebDesignCert',
|
'isRespWebDesignCert',
|
||||||
|
'isSciCompPyCert',
|
||||||
|
'isDataAnalysisPyCert',
|
||||||
|
'isMachineLearningPyCert',
|
||||||
'linkedin',
|
'linkedin',
|
||||||
'location',
|
'location',
|
||||||
'name',
|
'name',
|
||||||
|
@ -13,7 +13,10 @@ const superBlockCertTypeMap = {
|
|||||||
'data-visualization': certTypes.dataVis2018,
|
'data-visualization': certTypes.dataVis2018,
|
||||||
'apis-and-microservices': certTypes.apisMicroservices,
|
'apis-and-microservices': certTypes.apisMicroservices,
|
||||||
'information-security-and-quality-assurance': certTypes.infosecQa,
|
'information-security-and-quality-assurance': certTypes.infosecQa,
|
||||||
'full-stack': certTypes.fullStack
|
'full-stack': certTypes.fullStack,
|
||||||
|
'scientific-computing-with-python': certTypes.sciCompPy,
|
||||||
|
'data-analysis-with-python': certTypes.dataAnalysisPy,
|
||||||
|
'machine-learning-with-python': certTypes.machineLearningPy
|
||||||
};
|
};
|
||||||
|
|
||||||
export default superBlockCertTypeMap;
|
export default superBlockCertTypeMap;
|
||||||
|
@ -144,7 +144,10 @@ function getCompletedCertCount(user) {
|
|||||||
'isFrontEndLibsCert',
|
'isFrontEndLibsCert',
|
||||||
'isInfosecQaCert',
|
'isInfosecQaCert',
|
||||||
'isJsAlgoDataStructCert',
|
'isJsAlgoDataStructCert',
|
||||||
'isRespWebDesignCert'
|
'isRespWebDesignCert',
|
||||||
|
'isSciCompPyCert',
|
||||||
|
'isDataAnalysisPyCert',
|
||||||
|
'isMachineLearningPyCert'
|
||||||
].reduce((sum, key) => (user[key] ? sum + 1 : sum), 0);
|
].reduce((sum, key) => (user[key] ? sum + 1 : sum), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,6 +62,9 @@ const propTypes = {
|
|||||||
isInfosecQaCert: PropTypes.bool,
|
isInfosecQaCert: PropTypes.bool,
|
||||||
isJsAlgoDataStructCert: PropTypes.bool,
|
isJsAlgoDataStructCert: PropTypes.bool,
|
||||||
isRespWebDesignCert: PropTypes.bool,
|
isRespWebDesignCert: PropTypes.bool,
|
||||||
|
isSciCompPyCert: PropTypes.bool,
|
||||||
|
isDataAnalysisPyCert: PropTypes.bool,
|
||||||
|
isMachineLearningPyCert: PropTypes.bool,
|
||||||
linkedin: PropTypes.string,
|
linkedin: PropTypes.string,
|
||||||
location: PropTypes.string,
|
location: PropTypes.string,
|
||||||
name: PropTypes.string,
|
name: PropTypes.string,
|
||||||
@ -132,6 +135,9 @@ export function ShowSettings(props) {
|
|||||||
isFrontEndLibsCert,
|
isFrontEndLibsCert,
|
||||||
isFullStackCert,
|
isFullStackCert,
|
||||||
isRespWebDesignCert,
|
isRespWebDesignCert,
|
||||||
|
isSciCompPyCert,
|
||||||
|
isDataAnalysisPyCert,
|
||||||
|
isMachineLearningPyCert,
|
||||||
isEmailVerified,
|
isEmailVerified,
|
||||||
isHonest,
|
isHonest,
|
||||||
sendQuincyEmail,
|
sendQuincyEmail,
|
||||||
@ -233,6 +239,7 @@ export function ShowSettings(props) {
|
|||||||
is2018DataVisCert={is2018DataVisCert}
|
is2018DataVisCert={is2018DataVisCert}
|
||||||
isApisMicroservicesCert={isApisMicroservicesCert}
|
isApisMicroservicesCert={isApisMicroservicesCert}
|
||||||
isBackEndCert={isBackEndCert}
|
isBackEndCert={isBackEndCert}
|
||||||
|
isDataAnalysisPyCert={isDataAnalysisPyCert}
|
||||||
isDataVisCert={isDataVisCert}
|
isDataVisCert={isDataVisCert}
|
||||||
isFrontEndCert={isFrontEndCert}
|
isFrontEndCert={isFrontEndCert}
|
||||||
isFrontEndLibsCert={isFrontEndLibsCert}
|
isFrontEndLibsCert={isFrontEndLibsCert}
|
||||||
@ -240,7 +247,9 @@ export function ShowSettings(props) {
|
|||||||
isHonest={isHonest}
|
isHonest={isHonest}
|
||||||
isInfosecQaCert={isInfosecQaCert}
|
isInfosecQaCert={isInfosecQaCert}
|
||||||
isJsAlgoDataStructCert={isJsAlgoDataStructCert}
|
isJsAlgoDataStructCert={isJsAlgoDataStructCert}
|
||||||
|
isMachineLearningPyCert={isMachineLearningPyCert}
|
||||||
isRespWebDesignCert={isRespWebDesignCert}
|
isRespWebDesignCert={isRespWebDesignCert}
|
||||||
|
isSciCompPyCert={isSciCompPyCert}
|
||||||
username={username}
|
username={username}
|
||||||
verifyCert={verifyCert}
|
verifyCert={verifyCert}
|
||||||
/>
|
/>
|
||||||
|
@ -40,7 +40,7 @@ const AsFeaturedSection = () => (
|
|||||||
|
|
||||||
export const Landing = ({ edges }) => {
|
export const Landing = ({ edges }) => {
|
||||||
const superBlocks = uniq(edges.map(element => element.node.superBlock));
|
const superBlocks = uniq(edges.map(element => element.node.superBlock));
|
||||||
const interviewPrep = superBlocks.splice(6, 1);
|
const interviewPrep = superBlocks.splice(9, 1);
|
||||||
return (
|
return (
|
||||||
<Fragment>
|
<Fragment>
|
||||||
<Helmet>
|
<Helmet>
|
||||||
|
@ -44,6 +44,7 @@ const propTypes = {
|
|||||||
is2018DataVisCert: PropTypes.bool,
|
is2018DataVisCert: PropTypes.bool,
|
||||||
isApisMicroservicesCert: PropTypes.bool,
|
isApisMicroservicesCert: PropTypes.bool,
|
||||||
isBackEndCert: PropTypes.bool,
|
isBackEndCert: PropTypes.bool,
|
||||||
|
isDataAnalysisPyCert: PropTypes.bool,
|
||||||
isDataVisCert: PropTypes.bool,
|
isDataVisCert: PropTypes.bool,
|
||||||
isFrontEndCert: PropTypes.bool,
|
isFrontEndCert: PropTypes.bool,
|
||||||
isFrontEndLibsCert: PropTypes.bool,
|
isFrontEndLibsCert: PropTypes.bool,
|
||||||
@ -51,7 +52,9 @@ const propTypes = {
|
|||||||
isHonest: PropTypes.bool,
|
isHonest: PropTypes.bool,
|
||||||
isInfosecQaCert: PropTypes.bool,
|
isInfosecQaCert: PropTypes.bool,
|
||||||
isJsAlgoDataStructCert: PropTypes.bool,
|
isJsAlgoDataStructCert: PropTypes.bool,
|
||||||
|
isMachineLearningPyCert: PropTypes.bool,
|
||||||
isRespWebDesignCert: PropTypes.bool,
|
isRespWebDesignCert: PropTypes.bool,
|
||||||
|
isSciCompPyCert: PropTypes.bool,
|
||||||
updateLegacyCert: PropTypes.func.isRequired,
|
updateLegacyCert: PropTypes.func.isRequired,
|
||||||
username: PropTypes.string,
|
username: PropTypes.string,
|
||||||
verifyCert: PropTypes.func.isRequired
|
verifyCert: PropTypes.func.isRequired
|
||||||
@ -69,7 +72,10 @@ const isCertSelector = ({
|
|||||||
isInfosecQaCert,
|
isInfosecQaCert,
|
||||||
isFrontEndLibsCert,
|
isFrontEndLibsCert,
|
||||||
isFullStackCert,
|
isFullStackCert,
|
||||||
isRespWebDesignCert
|
isRespWebDesignCert,
|
||||||
|
isSciCompPyCert,
|
||||||
|
isDataAnalysisPyCert,
|
||||||
|
isMachineLearningPyCert
|
||||||
}) => ({
|
}) => ({
|
||||||
is2018DataVisCert,
|
is2018DataVisCert,
|
||||||
isApisMicroservicesCert,
|
isApisMicroservicesCert,
|
||||||
@ -80,7 +86,10 @@ const isCertSelector = ({
|
|||||||
isInfosecQaCert,
|
isInfosecQaCert,
|
||||||
isFrontEndLibsCert,
|
isFrontEndLibsCert,
|
||||||
isFullStackCert,
|
isFullStackCert,
|
||||||
isRespWebDesignCert
|
isRespWebDesignCert,
|
||||||
|
isSciCompPyCert,
|
||||||
|
isDataAnalysisPyCert,
|
||||||
|
isMachineLearningPyCert
|
||||||
});
|
});
|
||||||
|
|
||||||
const isCertMapSelector = createSelector(
|
const isCertMapSelector = createSelector(
|
||||||
@ -94,7 +103,10 @@ const isCertMapSelector = createSelector(
|
|||||||
isRespWebDesignCert,
|
isRespWebDesignCert,
|
||||||
isDataVisCert,
|
isDataVisCert,
|
||||||
isFrontEndCert,
|
isFrontEndCert,
|
||||||
isBackEndCert
|
isBackEndCert,
|
||||||
|
isSciCompPyCert,
|
||||||
|
isDataAnalysisPyCert,
|
||||||
|
isMachineLearningPyCert
|
||||||
}) => ({
|
}) => ({
|
||||||
'Responsive Web Design': isRespWebDesignCert,
|
'Responsive Web Design': isRespWebDesignCert,
|
||||||
'JavaScript Algorithms and Data Structures': isJsAlgoDataStructCert,
|
'JavaScript Algorithms and Data Structures': isJsAlgoDataStructCert,
|
||||||
@ -102,6 +114,9 @@ const isCertMapSelector = createSelector(
|
|||||||
'Data Visualization': is2018DataVisCert,
|
'Data Visualization': is2018DataVisCert,
|
||||||
"API's and Microservices": isApisMicroservicesCert,
|
"API's and Microservices": isApisMicroservicesCert,
|
||||||
'Information Security And Quality Assurance': isInfosecQaCert,
|
'Information Security And Quality Assurance': isInfosecQaCert,
|
||||||
|
'Scientific Computing with Python': isSciCompPyCert,
|
||||||
|
'Data Analysis with Python': isDataAnalysisPyCert,
|
||||||
|
'Machine Learning with Python': isMachineLearningPyCert,
|
||||||
'Legacy Front End': isFrontEndCert,
|
'Legacy Front End': isFrontEndCert,
|
||||||
'Legacy Data Visualization': isDataVisCert,
|
'Legacy Data Visualization': isDataVisCert,
|
||||||
'Legacy Back End': isBackEndCert
|
'Legacy Back End': isBackEndCert
|
||||||
|
@ -133,6 +133,46 @@ const defaultTestProps = {
|
|||||||
id: 'bd7158d8c443eddfaeb5bdee',
|
id: 'bd7158d8c443eddfaeb5bdee',
|
||||||
solution: 'https://github.com/freeCodeCamp/freeCodeCamp'
|
solution: 'https://github.com/freeCodeCamp/freeCodeCamp'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
id: '5e444147903586ffb414c94c',
|
||||||
|
solution: 'https://github.com/freeCodeCamp/freeCodeCamp'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '5e444147903586ffb414c94d',
|
||||||
|
solution: 'https://github.com/freeCodeCamp/freeCodeCamp'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '5e444147903586ffb414c94e',
|
||||||
|
solution: 'https://github.com/freeCodeCamp/freeCodeCamp'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '5e444147903586ffb414c94f',
|
||||||
|
solution: 'https://github.com/freeCodeCamp/freeCodeCamp'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '5e44414f903586ffb414c950',
|
||||||
|
solution: 'https://github.com/freeCodeCamp/freeCodeCamp'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '5e46f7e5ac417301a38fb928',
|
||||||
|
solution: 'https://github.com/freeCodeCamp/freeCodeCamp'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '5e46f7e5ac417301a38fb929',
|
||||||
|
solution: 'https://github.com/freeCodeCamp/freeCodeCamp'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '5e46f7f8ac417301a38fb92a',
|
||||||
|
solution: 'https://github.com/freeCodeCamp/freeCodeCamp'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '5e46f802ac417301a38fb92b',
|
||||||
|
solution: 'https://github.com/freeCodeCamp/freeCodeCamp'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '5e4f5c4b570f7e3a4949899f',
|
||||||
|
solution: 'https://github.com/freeCodeCamp/freeCodeCamp'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
id: 'bd7157d8c242eddfaeb5bd13',
|
id: 'bd7157d8c242eddfaeb5bd13',
|
||||||
completedDate: 1554272923799,
|
completedDate: 1554272923799,
|
||||||
@ -151,6 +191,9 @@ const defaultTestProps = {
|
|||||||
isInfosecQaCert: false,
|
isInfosecQaCert: false,
|
||||||
isJsAlgoDataStructCert: false,
|
isJsAlgoDataStructCert: false,
|
||||||
isRespWebDesignCert: false,
|
isRespWebDesignCert: false,
|
||||||
|
isSciCompPyCert: false,
|
||||||
|
isDataAnalysisPyCert: false,
|
||||||
|
isMachineLearningPyCert: false,
|
||||||
updateLegacyCert: () => {},
|
updateLegacyCert: () => {},
|
||||||
username: 'developmentuser',
|
username: 'developmentuser',
|
||||||
verifyCert: () => {},
|
verifyCert: () => {},
|
||||||
|
@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
title: Introduction to the Data Analysis with Python Projects
|
||||||
|
block: Data Analysis with Python Projects
|
||||||
|
superBlock: Data Analysis with Python
|
||||||
|
---
|
||||||
|
## Introduction to the Data Analysis with Python Projects
|
||||||
|
|
||||||
|
There are many ways to analyze data with Python! By completing these projects, you will demonstrate that you have a good foundational knowledge of data analysis with Python.
|
||||||
|
|
||||||
|
We are working to finish up the interactive Data Analysis instructional content. For now, here are some videos from freeCodeCamp that will help with the projects. You may also have to use other resources (just like you would have to do when learning new technologies in a job).
|
||||||
|
* [Python NumPy Video Course](https://www.youtube.com/watch?v=QUT1VHiLmmI) (1 hours)
|
||||||
|
* [Data Science Video Course](https://m.youtube.com/watch?v=ua-CiDNNj30) (6 hours)
|
||||||
|
|
||||||
|
In this section you will develop the following projects:
|
||||||
|
* Mean-Variance-Standard Deviation Calculator
|
||||||
|
* Demographic Data Analyzer
|
||||||
|
* Medical Data Visualizer
|
||||||
|
* Page View Time Series Visualizer
|
||||||
|
* Sea Level Predictor
|
||||||
|
|
||||||
|
Have fun and remember to use the [Read-Search-Ask](https://www.freecodecamp.org/forum/t/how-to-get-help-when-you-are-stuck-coding/19514) method if you get stuck.
|
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
title: Data Analysis with Python
|
||||||
|
superBlock: Data Analysis with Python
|
||||||
|
---
|
||||||
|
## Introduction to Data Analysis with Python
|
||||||
|
|
||||||
|
Learn the basics of data analysis with Python.
|
@ -13,5 +13,7 @@ In this section you get the chance to:
|
|||||||
* Build a Personal Library
|
* Build a Personal Library
|
||||||
* Build a Stock Price Checker
|
* Build a Stock Price Checker
|
||||||
* Build an Anonymous Message Board
|
* Build an Anonymous Message Board
|
||||||
|
* Port Scanner
|
||||||
|
* Packet Capturer
|
||||||
|
|
||||||
When you are done, you will have plenty of Information Security & Quality Assurance projects under your belt along with a certification that you can show off to friends, family, and employers. Have fun and remember to use the [Read-Search-Ask](https://www.freecodecamp.org/forum/t/how-to-get-help-when-you-are-stuck/19514) method if you get stuck.
|
When you are done, you will have plenty of Information Security & Quality Assurance projects under your belt along with a certification that you can show off to friends, family, and employers. Have fun and remember to use the [Read-Search-Ask](https://www.freecodecamp.org/forum/t/how-to-get-help-when-you-are-stuck/19514) method if you get stuck.
|
||||||
|
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
title: Machine Learning with Python
|
||||||
|
superBlock: Machine Learning with Python
|
||||||
|
---
|
||||||
|
## Introduction to Machine Learning with Python
|
||||||
|
|
||||||
|
Learn the basics of Machine Learning with Python.
|
@ -0,0 +1,19 @@
|
|||||||
|
---
|
||||||
|
title: Introduction to the Machine Learning Projects
|
||||||
|
block: Machine Learning with Python Projects
|
||||||
|
superBlock: Machine Learning with Python
|
||||||
|
---
|
||||||
|
## Introduction to the Machine Learning Projects
|
||||||
|
|
||||||
|
Machine learning has many practical applications. By completing these projects, you will demonstrate that you have a good foundational knowledge of machine learning.
|
||||||
|
|
||||||
|
We are still developing the interactive instructional content for the machine learning curriculum. For now, check out the videos in this [machine learning playlist on the freeCodeCamp YouTube channel](https://www.youtube.com/playlist?list=PLWKjhJtqVAblStefaz_YOVpDWqcRScc2s). You may also have to use other resources (just like you would have to do when learning new technologies in a job).
|
||||||
|
|
||||||
|
In this section you will develop the following projects:
|
||||||
|
* Rock Paper Scissors
|
||||||
|
* Cat and Dog Image Classifier
|
||||||
|
* Book Recommendation Engine using KNN
|
||||||
|
* Linear Regression Health Costs Calculator
|
||||||
|
* Neural Network SMS Text Classifier
|
||||||
|
|
||||||
|
Have fun and remember to use the [Read-Search-Ask](https://www.freecodecamp.org/forum/t/how-to-get-help-when-you-are-stuck-coding/19514) method if you get stuck.
|
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
title: Scientific Computing with Python
|
||||||
|
superBlock: Scientific Computing with Python
|
||||||
|
---
|
||||||
|
## Introduction to Scientific Computing with Python
|
||||||
|
|
||||||
|
Learn the basics of Python.
|
@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
title: Introduction to the Scientific Computing with Python Projects
|
||||||
|
block: Scientific Computing with Python Projects
|
||||||
|
superBlock: Scientific Computing with Python
|
||||||
|
---
|
||||||
|
## Introduction to the Scientific Computing with Python Projects
|
||||||
|
|
||||||
|
Time to put your Python skills to the test! By completing these projects, you will demonstrate that you have a good foundational knowledge of Python.
|
||||||
|
|
||||||
|
We are working to finish up the interactive Python instructional content. For now, here are some videos on the freeCodeCamp.org YouTube channel that will teach you everything you need to know to complete these projects:
|
||||||
|
* [Python for Everybody Video Course](https://www.freecodecamp.org/news/python-for-everybody/) (14 hours)
|
||||||
|
* [Learn Python Video Course](https://www.freecodecamp.org/news/learn-python-basics-in-depth-video-course/) (4 hours)
|
||||||
|
|
||||||
|
In this section you will develop the following projects:
|
||||||
|
* Arithmetic Formatter
|
||||||
|
* Time Calculator
|
||||||
|
* Budget App
|
||||||
|
* Polygon Area Calculator
|
||||||
|
* Probability Calculator
|
||||||
|
|
||||||
|
Have fun and remember to use the [Read-Search-Ask](https://www.freecodecamp.org/forum/t/how-to-get-help-when-you-are-stuck-coding/19514) method if you get stuck.
|
@ -216,7 +216,10 @@ export const certificatesByNameSelector = username => state => {
|
|||||||
isFrontEndCert,
|
isFrontEndCert,
|
||||||
isBackEndCert,
|
isBackEndCert,
|
||||||
isDataVisCert,
|
isDataVisCert,
|
||||||
isFullStackCert
|
isFullStackCert,
|
||||||
|
isSciCompPyCert,
|
||||||
|
isDataAnalysisPyCert,
|
||||||
|
isMachineLearningPyCert
|
||||||
} = userByNameSelector(username)(state);
|
} = userByNameSelector(username)(state);
|
||||||
return {
|
return {
|
||||||
hasModernCert:
|
hasModernCert:
|
||||||
@ -226,7 +229,10 @@ export const certificatesByNameSelector = username => state => {
|
|||||||
isJsAlgoDataStructCert ||
|
isJsAlgoDataStructCert ||
|
||||||
isApisMicroservicesCert ||
|
isApisMicroservicesCert ||
|
||||||
isInfosecQaCert ||
|
isInfosecQaCert ||
|
||||||
isFullStackCert,
|
isFullStackCert ||
|
||||||
|
isSciCompPyCert ||
|
||||||
|
isDataAnalysisPyCert ||
|
||||||
|
isMachineLearningPyCert,
|
||||||
hasLegacyCert: isFrontEndCert || isBackEndCert || isDataVisCert,
|
hasLegacyCert: isFrontEndCert || isBackEndCert || isDataVisCert,
|
||||||
currentCerts: [
|
currentCerts: [
|
||||||
{
|
{
|
||||||
@ -263,6 +269,21 @@ export const certificatesByNameSelector = username => state => {
|
|||||||
show: isInfosecQaCert,
|
show: isInfosecQaCert,
|
||||||
title: 'Information Security and Quality Assurance Certification',
|
title: 'Information Security and Quality Assurance Certification',
|
||||||
showURL: 'information-security-and-quality-assurance'
|
showURL: 'information-security-and-quality-assurance'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
show: isSciCompPyCert,
|
||||||
|
title: 'Scientific Computing with Python Certification',
|
||||||
|
showURL: 'scientific-computing-with-python'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
show: isDataAnalysisPyCert,
|
||||||
|
title: 'Data Analysis with Python Certification',
|
||||||
|
showURL: 'data-analysis-with-python'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
show: isMachineLearningPyCert,
|
||||||
|
title: 'Machine Learning with Python Certification',
|
||||||
|
showURL: 'machine-learning-with-python'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
legacyCerts: [
|
legacyCerts: [
|
||||||
|
@ -10,6 +10,13 @@ const apiMicroBase =
|
|||||||
const infoSecBase =
|
const infoSecBase =
|
||||||
'/learn/information-security-and-quality-assurance/' +
|
'/learn/information-security-and-quality-assurance/' +
|
||||||
'information-security-and-quality-assurance-projects';
|
'information-security-and-quality-assurance-projects';
|
||||||
|
const sciCompPyBase =
|
||||||
|
'/learn/scientific-computing-with-python/' +
|
||||||
|
'scientific-computing-with-python-projects';
|
||||||
|
const dataAnalysisPyBase =
|
||||||
|
'/learn/data-analysis-with-python/data-analysis-with-python-projects';
|
||||||
|
const machineLearningPyBase =
|
||||||
|
'/learn/machine-learning-with-python/machine-learning-with-python-projects';
|
||||||
const legacyFrontEndBase = '';
|
const legacyFrontEndBase = '';
|
||||||
const legacyBackEndBase = '';
|
const legacyBackEndBase = '';
|
||||||
const legacyDataVisBase = '';
|
const legacyDataVisBase = '';
|
||||||
@ -394,6 +401,114 @@ export const projectMap = {
|
|||||||
title: 'Anonymous Message Board',
|
title: 'Anonymous Message Board',
|
||||||
link: `${infoSecBase}/anonymous-message-board`,
|
link: `${infoSecBase}/anonymous-message-board`,
|
||||||
superBlock: 'information-security-and-quality-assurance'
|
superBlock: 'information-security-and-quality-assurance'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '5e46f979ac417301a38fb932',
|
||||||
|
title: 'Port Scanner',
|
||||||
|
link: `${infoSecBase}/port-scanner`,
|
||||||
|
superBlock: 'information-security-and-quality-assurance'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '5e46f983ac417301a38fb933',
|
||||||
|
title: 'SHA-1 Password Cracker',
|
||||||
|
link: `${infoSecBase}/sha-1-password-cracker`,
|
||||||
|
superBlock: 'information-security-and-quality-assurance'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'Scientific Computing with Python': [
|
||||||
|
{
|
||||||
|
id: '5e44412c903586ffb414c94c',
|
||||||
|
title: 'Arithmetic Formatter',
|
||||||
|
link: `${sciCompPyBase}/arithmetic-formatter`,
|
||||||
|
superBlock: 'scientific-computing-with-python'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '5e444136903586ffb414c94d',
|
||||||
|
title: 'Time Calculator',
|
||||||
|
link: `${sciCompPyBase}/time-calculator`,
|
||||||
|
superBlock: 'scientific-computing-with-python'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '5e44413e903586ffb414c94e',
|
||||||
|
title: 'Budget App',
|
||||||
|
link: `${sciCompPyBase}/budget-app`,
|
||||||
|
superBlock: 'scientific-computing-with-python'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '5e444147903586ffb414c94f',
|
||||||
|
title: 'Polygon Area Calculator',
|
||||||
|
link: `${sciCompPyBase}/polygon-area-calculator`,
|
||||||
|
superBlock: 'scientific-computing-with-python'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '5e44414f903586ffb414c950',
|
||||||
|
title: 'Probability Calculator',
|
||||||
|
link: `${sciCompPyBase}/probability-calculator`,
|
||||||
|
superBlock: 'scientific-computing-with-python'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'Data Analysis with Python': [
|
||||||
|
{
|
||||||
|
id: '5e46f7e5ac417301a38fb928',
|
||||||
|
title: 'Mean-Variance-Standard Deviation Calculator',
|
||||||
|
link: `${dataAnalysisPyBase}/mean-variance-standard-deviation-calculator`,
|
||||||
|
superBlock: 'data-analysis-with-python'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '5e46f7e5ac417301a38fb929',
|
||||||
|
title: 'Demographic Data Analyzer',
|
||||||
|
link: `${dataAnalysisPyBase}/demographic-data-analyzer`,
|
||||||
|
superBlock: 'data-analysis-with-python'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '5e46f7f8ac417301a38fb92a',
|
||||||
|
title: 'Medical Data Visualizer',
|
||||||
|
link: `${dataAnalysisPyBase}/medical-data-visualizer`,
|
||||||
|
superBlock: 'data-analysis-with-python'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '5e46f802ac417301a38fb92b',
|
||||||
|
title: 'Page View Time Series Visualizer',
|
||||||
|
link: `${dataAnalysisPyBase}/page-view-time-series-visualizer`,
|
||||||
|
superBlock: 'data-analysis-with-python'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '5e4f5c4b570f7e3a4949899f',
|
||||||
|
title: 'Sea Level Predictor',
|
||||||
|
link: `${dataAnalysisPyBase}/sea-level-predictor`,
|
||||||
|
superBlock: 'scientific-computing-with-python'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'Machine Learning with Python': [
|
||||||
|
{
|
||||||
|
id: '5e46f8d6ac417301a38fb92d',
|
||||||
|
title: 'Rock Paper Scissors',
|
||||||
|
link: `${machineLearningPyBase}/rock-paper-scissors`,
|
||||||
|
superBlock: 'machine-learning-with-python'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '5e46f8dcac417301a38fb92e',
|
||||||
|
title: 'Cat and Dog Image Classifier',
|
||||||
|
link: `${machineLearningPyBase}/cat-and-dog-image-classifier`,
|
||||||
|
superBlock: 'machine-learning-with-python'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '5e46f8e3ac417301a38fb92f',
|
||||||
|
title: 'Book Recommendation Engine using KNN',
|
||||||
|
link: `${machineLearningPyBase}/book-recommendation-engine-using-knn`,
|
||||||
|
superBlock: 'machine-learning-with-python'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '5e46f8edac417301a38fb930',
|
||||||
|
title: 'Linear Regression Health Costs Calculator',
|
||||||
|
link: `${machineLearningPyBase}/linear-regression-health-costs-calculator`,
|
||||||
|
superBlock: 'machine-learning-with-python'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '5e46f8edac417301a38fb931',
|
||||||
|
title: 'Neural Network SMS Text Classifier',
|
||||||
|
link: `${machineLearningPyBase}/neural-network-sms-text-classifier`,
|
||||||
|
superBlock: 'machine-learning-with-python'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
@ -212,7 +212,10 @@ export const challengeDataSelector = state => {
|
|||||||
...challengeData,
|
...challengeData,
|
||||||
url
|
url
|
||||||
};
|
};
|
||||||
} else if (challengeType === challengeTypes.backEndProject) {
|
} else if (
|
||||||
|
challengeType === challengeTypes.backEndProject ||
|
||||||
|
challengeType === challengeTypes.pythonProject
|
||||||
|
) {
|
||||||
const values = projectFormValuesSelector(state);
|
const values = projectFormValuesSelector(state);
|
||||||
const { solution: url } = values;
|
const { solution: url } = values;
|
||||||
challengeData = {
|
challengeData = {
|
||||||
|
@ -68,7 +68,8 @@ const buildFunctions = {
|
|||||||
[challengeTypes.html]: buildDOMChallenge,
|
[challengeTypes.html]: buildDOMChallenge,
|
||||||
[challengeTypes.modern]: buildDOMChallenge,
|
[challengeTypes.modern]: buildDOMChallenge,
|
||||||
[challengeTypes.backend]: buildBackendChallenge,
|
[challengeTypes.backend]: buildBackendChallenge,
|
||||||
[challengeTypes.backEndProject]: buildBackendChallenge
|
[challengeTypes.backEndProject]: buildBackendChallenge,
|
||||||
|
[challengeTypes.pythonProject]: buildBackendChallenge
|
||||||
};
|
};
|
||||||
|
|
||||||
export function canBuildChallenge(challengeData) {
|
export function canBuildChallenge(challengeData) {
|
||||||
@ -88,7 +89,8 @@ export async function buildChallenge(challengeData, options) {
|
|||||||
const testRunners = {
|
const testRunners = {
|
||||||
[challengeTypes.js]: getJSTestRunner,
|
[challengeTypes.js]: getJSTestRunner,
|
||||||
[challengeTypes.html]: getDOMTestRunner,
|
[challengeTypes.html]: getDOMTestRunner,
|
||||||
[challengeTypes.backend]: getDOMTestRunner
|
[challengeTypes.backend]: getDOMTestRunner,
|
||||||
|
[challengeTypes.pythonProject]: getDOMTestRunner
|
||||||
};
|
};
|
||||||
export function getTestRunner(buildData, { proxyLogger }, document) {
|
export function getTestRunner(buildData, { proxyLogger }, document) {
|
||||||
const { challengeType } = buildData;
|
const { challengeType } = buildData;
|
||||||
|
@ -12,7 +12,15 @@ const preFormattedBlockNames = {
|
|||||||
'mongodb-and-mongoose': 'MongoDB and Mongoose',
|
'mongodb-and-mongoose': 'MongoDB and Mongoose',
|
||||||
'the-dom': 'The DOM',
|
'the-dom': 'The DOM',
|
||||||
'apis-and-microservices': 'APIs and Microservices',
|
'apis-and-microservices': 'APIs and Microservices',
|
||||||
'apis-and-microservices-projects': 'APIs and Microservices Projects'
|
'apis-and-microservices-projects': 'APIs and Microservices Projects',
|
||||||
|
'scientific-computing-with-python': 'Scientific Computing with Python',
|
||||||
|
'scientific-computing-with-python-projects':
|
||||||
|
'Scientific Computing with Python Projects',
|
||||||
|
'data-analysis-with-python': 'Data Analysis with Python',
|
||||||
|
'data-analysis-with-python-projects': 'Data Analysis with Python Projects',
|
||||||
|
'machine-learning-with-python': 'Machine Learning with Python',
|
||||||
|
'machine-learning-with-python-projects':
|
||||||
|
'Machine Learning with Python Projects'
|
||||||
};
|
};
|
||||||
|
|
||||||
const noFormatting = ['and', 'for', 'of', 'the', 'up', 'with'];
|
const noFormatting = ['and', 'for', 'of', 'the', 'up', 'with'];
|
||||||
|
@ -9,11 +9,13 @@ const modern = 6;
|
|||||||
const step = 7;
|
const step = 7;
|
||||||
const quiz = 8;
|
const quiz = 8;
|
||||||
const invalid = 9;
|
const invalid = 9;
|
||||||
|
const pythonProject = 10;
|
||||||
|
|
||||||
// individual exports
|
// individual exports
|
||||||
exports.backend = backend;
|
exports.backend = backend;
|
||||||
exports.frontEndProject = frontEndProject;
|
exports.frontEndProject = frontEndProject;
|
||||||
exports.backEndProject = backEndProject;
|
exports.backEndProject = backEndProject;
|
||||||
|
exports.pythonProject = pythonProject;
|
||||||
|
|
||||||
exports.challengeTypes = {
|
exports.challengeTypes = {
|
||||||
html,
|
html,
|
||||||
@ -22,6 +24,7 @@ exports.challengeTypes = {
|
|||||||
zipline,
|
zipline,
|
||||||
frontEndProject,
|
frontEndProject,
|
||||||
backEndProject,
|
backEndProject,
|
||||||
|
pythonProject,
|
||||||
bonfire,
|
bonfire,
|
||||||
modern,
|
modern,
|
||||||
step,
|
step,
|
||||||
@ -42,6 +45,7 @@ exports.viewTypes = {
|
|||||||
[bonfire]: 'classic',
|
[bonfire]: 'classic',
|
||||||
[frontEndProject]: 'frontend',
|
[frontEndProject]: 'frontend',
|
||||||
[backEndProject]: 'backend',
|
[backEndProject]: 'backend',
|
||||||
|
[pythonProject]: 'backend',
|
||||||
[modern]: 'modern',
|
[modern]: 'modern',
|
||||||
[step]: 'step',
|
[step]: 'step',
|
||||||
[quiz]: 'quiz',
|
[quiz]: 'quiz',
|
||||||
@ -60,7 +64,7 @@ exports.submitTypes = {
|
|||||||
// a hosted URL where the app is running live
|
// a hosted URL where the app is running live
|
||||||
// project code url like GitHub
|
// project code url like GitHub
|
||||||
[backEndProject]: 'project.backEnd',
|
[backEndProject]: 'project.backEnd',
|
||||||
|
[pythonProject]: 'project.backEnd',
|
||||||
[step]: 'step',
|
[step]: 'step',
|
||||||
[quiz]: 'quiz',
|
[quiz]: 'quiz',
|
||||||
[backend]: 'backend',
|
[backend]: 'backend',
|
||||||
@ -111,5 +115,11 @@ exports.helpCategory = {
|
|||||||
'data-structures': 'JavaScript',
|
'data-structures': 'JavaScript',
|
||||||
'take-home-projects': 'Certification Projects',
|
'take-home-projects': 'Certification Projects',
|
||||||
'rosetta-code': 'JavaScript',
|
'rosetta-code': 'JavaScript',
|
||||||
'project-euler': 'JavaScript'
|
'project-euler': 'JavaScript',
|
||||||
|
'scientific-computing-with-python': 'Certification Projects',
|
||||||
|
'scientific-computing-with-python-projects': 'Certification Projects',
|
||||||
|
'data-analysis-with-python': 'Certification Projects',
|
||||||
|
'data-analysis-with-python-projects': 'Certification Projects',
|
||||||
|
'machine-learning-with-python': 'Certification Projects',
|
||||||
|
'machine-learning-with-python-projects': 'Certification Projects'
|
||||||
};
|
};
|
||||||
|
@ -6,6 +6,9 @@ export default [
|
|||||||
'apis-and-microservices',
|
'apis-and-microservices',
|
||||||
'information-security-and-quality-assurance',
|
'information-security-and-quality-assurance',
|
||||||
'full-stack',
|
'full-stack',
|
||||||
|
'scientific-computing-with-python',
|
||||||
|
'data-analysis-with-python',
|
||||||
|
'machine-learning-with-python',
|
||||||
'legacy-front-end',
|
'legacy-front-end',
|
||||||
'legacy-back-end',
|
'legacy-back-end',
|
||||||
'legacy-data-visualization'
|
'legacy-data-visualization'
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
"template": "",
|
"template": "",
|
||||||
"required": [],
|
"required": [],
|
||||||
"superBlock": "coding-interview-prep",
|
"superBlock": "coding-interview-prep",
|
||||||
"superOrder": 8,
|
"superOrder": 10,
|
||||||
"challengeOrder": [
|
"challengeOrder": [
|
||||||
[
|
[
|
||||||
"a3f503de51cf954ede28891d",
|
"a3f503de51cf954ede28891d",
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
"template": "",
|
"template": "",
|
||||||
"required": [],
|
"required": [],
|
||||||
"superBlock": "certificates",
|
"superBlock": "certificates",
|
||||||
"superOrder": 9,
|
"superOrder": 11,
|
||||||
"challengeOrder": [
|
"challengeOrder": [
|
||||||
[
|
[
|
||||||
"561add10cb82ac38a17523bc",
|
"561add10cb82ac38a17523bc",
|
||||||
@ -14,5 +14,5 @@
|
|||||||
]
|
]
|
||||||
],
|
],
|
||||||
"isPrivate": true,
|
"isPrivate": true,
|
||||||
"fileName": "09-certificates/apis-and-microservices-certificate.json"
|
"fileName": "11-certificates/apis-and-microservices-certificate.json"
|
||||||
}
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "Data Analysis with Python Certificate",
|
||||||
|
"dashedName": "data-analysis-with-python-certificate",
|
||||||
|
"order": 8,
|
||||||
|
"time": "",
|
||||||
|
"template": "",
|
||||||
|
"required": [],
|
||||||
|
"superBlock": "certificates",
|
||||||
|
"superOrder": 11,
|
||||||
|
"challengeOrder": [
|
||||||
|
[
|
||||||
|
"5e46fc95ac417301a38fb934",
|
||||||
|
"Data Analysis with Python Certificate"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"isPrivate": true,
|
||||||
|
"fileName": "11-certificates/data-analysis-with-python-certificate.json"
|
||||||
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"name": "Data Analysis with Python Projects",
|
||||||
|
"dashedName": "data-analysis-with-python-projects",
|
||||||
|
"order": 1,
|
||||||
|
"time": "150 hours",
|
||||||
|
"superBlock": "data-analysis-with-python",
|
||||||
|
"superOrder": 8,
|
||||||
|
"challengeOrder": [
|
||||||
|
[
|
||||||
|
"5e46f7e5ac417301a38fb928",
|
||||||
|
"Mean-Variance-Standard Deviation Calculator"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"5e46f7e5ac417301a38fb929",
|
||||||
|
"Demographic Data Analyzer"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"5e46f7f8ac417301a38fb92a",
|
||||||
|
"Medical Data Visualizer"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"5e46f802ac417301a38fb92b",
|
||||||
|
"Page View Time Series Visualizer"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"5e4f5c4b570f7e3a4949899f",
|
||||||
|
"Sea Level Predictor"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
@ -6,7 +6,7 @@
|
|||||||
"template": "",
|
"template": "",
|
||||||
"required": [],
|
"required": [],
|
||||||
"superBlock": "coding-interview-prep",
|
"superBlock": "coding-interview-prep",
|
||||||
"superOrder": 8,
|
"superOrder": 10,
|
||||||
"challengeOrder": [
|
"challengeOrder": [
|
||||||
[
|
[
|
||||||
"587d8253367417b2b2512c6a",
|
"587d8253367417b2b2512c6a",
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
"template": "",
|
"template": "",
|
||||||
"required": [],
|
"required": [],
|
||||||
"superBlock": "certificates",
|
"superBlock": "certificates",
|
||||||
"superOrder": 9,
|
"superOrder": 10,
|
||||||
"challengeOrder": [
|
"challengeOrder": [
|
||||||
[
|
[
|
||||||
"5a553ca864b52e1d8bceea14",
|
"5a553ca864b52e1d8bceea14",
|
||||||
@ -14,5 +14,5 @@
|
|||||||
]
|
]
|
||||||
],
|
],
|
||||||
"isPrivate": true,
|
"isPrivate": true,
|
||||||
"fileName": "09-certificates/data-visualization-certificate.json"
|
"fileName": "11-certificates/data-visualization-certificate.json"
|
||||||
}
|
}
|
@ -6,7 +6,7 @@
|
|||||||
"template": "",
|
"template": "",
|
||||||
"required": [],
|
"required": [],
|
||||||
"superBlock": "certificates",
|
"superBlock": "certificates",
|
||||||
"superOrder": 9,
|
"superOrder": 11,
|
||||||
"challengeOrder": [
|
"challengeOrder": [
|
||||||
[
|
[
|
||||||
"561acd10cb82ac38a17513bc",
|
"561acd10cb82ac38a17513bc",
|
||||||
@ -14,5 +14,5 @@
|
|||||||
]
|
]
|
||||||
],
|
],
|
||||||
"isPrivate": true,
|
"isPrivate": true,
|
||||||
"fileName": "09-certificates/front-end-libraries-certificate.json"
|
"fileName": "11-certificates/front-end-libraries-certificate.json"
|
||||||
}
|
}
|
@ -27,6 +27,14 @@
|
|||||||
[
|
[
|
||||||
"587d824a367417b2b2512c45",
|
"587d824a367417b2b2512c45",
|
||||||
"Anonymous Message Board"
|
"Anonymous Message Board"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"5e46f979ac417301a38fb932",
|
||||||
|
"Port Scanner"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"5e46f983ac417301a38fb933",
|
||||||
|
"SHA-1 Password Cracker"
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"helpRoom": "HelpBackend",
|
"helpRoom": "HelpBackend",
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
"template": "",
|
"template": "",
|
||||||
"required": [],
|
"required": [],
|
||||||
"superBlock": "certificates",
|
"superBlock": "certificates",
|
||||||
"superOrder": 9,
|
"superOrder": 11,
|
||||||
"challengeOrder": [
|
"challengeOrder": [
|
||||||
[
|
[
|
||||||
"561add10cb82ac38a17213bc",
|
"561add10cb82ac38a17213bc",
|
||||||
@ -14,5 +14,5 @@
|
|||||||
]
|
]
|
||||||
],
|
],
|
||||||
"isPrivate": true,
|
"isPrivate": true,
|
||||||
"fileName": "09-certificates/information-security-and-quality-assurance-certificate.json"
|
"fileName": "11-certificates/information-security-and-quality-assurance-certificate.json"
|
||||||
}
|
}
|
@ -6,7 +6,7 @@
|
|||||||
"template": "",
|
"template": "",
|
||||||
"required": [],
|
"required": [],
|
||||||
"superBlock": "certificates",
|
"superBlock": "certificates",
|
||||||
"superOrder": 9,
|
"superOrder": 11,
|
||||||
"challengeOrder": [
|
"challengeOrder": [
|
||||||
[
|
[
|
||||||
"561abd10cb81ac38a17513bc",
|
"561abd10cb81ac38a17513bc",
|
||||||
@ -14,5 +14,5 @@
|
|||||||
]
|
]
|
||||||
],
|
],
|
||||||
"isPrivate": true,
|
"isPrivate": true,
|
||||||
"fileName": "09-certificates/javascript-algorithms-and-data-structures-certificate.json"
|
"fileName": "11-certificates/javascript-algorithms-and-data-structures-certificate.json"
|
||||||
}
|
}
|
@ -6,7 +6,7 @@
|
|||||||
"template": "",
|
"template": "",
|
||||||
"required": [],
|
"required": [],
|
||||||
"superBlock": "certificates",
|
"superBlock": "certificates",
|
||||||
"superOrder": 9,
|
"superOrder": 11,
|
||||||
"challengeOrder": [
|
"challengeOrder": [
|
||||||
[
|
[
|
||||||
"660add10cb82ac38a17513be",
|
"660add10cb82ac38a17513be",
|
||||||
@ -14,5 +14,5 @@
|
|||||||
]
|
]
|
||||||
],
|
],
|
||||||
"isPrivate": true,
|
"isPrivate": true,
|
||||||
"fileName": "09-certificates/legacy-back-end-certificate.json"
|
"fileName": "11-certificates/legacy-back-end-certificate.json"
|
||||||
}
|
}
|
@ -6,7 +6,7 @@
|
|||||||
"template": "",
|
"template": "",
|
||||||
"required": [],
|
"required": [],
|
||||||
"superBlock": "certificates",
|
"superBlock": "certificates",
|
||||||
"superOrder": 9,
|
"superOrder": 11,
|
||||||
"challengeOrder": [
|
"challengeOrder": [
|
||||||
[
|
[
|
||||||
"561add10cb82ac39a17513bc",
|
"561add10cb82ac39a17513bc",
|
||||||
@ -14,5 +14,5 @@
|
|||||||
]
|
]
|
||||||
],
|
],
|
||||||
"isPrivate": true,
|
"isPrivate": true,
|
||||||
"fileName": "09-certificates/legacy-data-visualization-certificate.json"
|
"fileName": "11-certificates/legacy-data-visualization-certificate.json"
|
||||||
}
|
}
|
@ -6,7 +6,7 @@
|
|||||||
"template": "",
|
"template": "",
|
||||||
"required": [],
|
"required": [],
|
||||||
"superBlock": "certificates",
|
"superBlock": "certificates",
|
||||||
"superOrder": 9,
|
"superOrder": 11,
|
||||||
"challengeOrder": [
|
"challengeOrder": [
|
||||||
[
|
[
|
||||||
"561add10cb82ac38a17513be",
|
"561add10cb82ac38a17513be",
|
||||||
@ -14,5 +14,5 @@
|
|||||||
]
|
]
|
||||||
],
|
],
|
||||||
"isPrivate": true,
|
"isPrivate": true,
|
||||||
"fileName": "09-certificates/legacy-front-end-certificate.json"
|
"fileName": "11-certificates/legacy-front-end-certificate.json"
|
||||||
}
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "Machine Learning with Python Certificate",
|
||||||
|
"dashedName": "machine-learning-with-python-certificate",
|
||||||
|
"order": 9,
|
||||||
|
"time": "",
|
||||||
|
"template": "",
|
||||||
|
"required": [],
|
||||||
|
"superBlock": "certificates",
|
||||||
|
"superOrder": 11,
|
||||||
|
"challengeOrder": [
|
||||||
|
[
|
||||||
|
"5e46fc95ac417301a38fb935",
|
||||||
|
"Machine Learning with Python Certificate"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"isPrivate": true,
|
||||||
|
"fileName": "11-certificates/machine-learning-with-python-certificate.json"
|
||||||
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"name": "Machine Learning with Python Projects",
|
||||||
|
"dashedName": "machine-learning-with-python-projects",
|
||||||
|
"order": 1,
|
||||||
|
"time": "150 hours",
|
||||||
|
"superBlock": "machine-learning-with-python",
|
||||||
|
"superOrder": 9,
|
||||||
|
"challengeOrder": [
|
||||||
|
[
|
||||||
|
"5e46f8d6ac417301a38fb92d",
|
||||||
|
"Rock Paper Scissors"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"5e46f8dcac417301a38fb92e",
|
||||||
|
"Cat and Dog Image Classifier"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"5e46f8e3ac417301a38fb92f",
|
||||||
|
"Book Recommendation Engine using KNN"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"5e46f8edac417301a38fb930",
|
||||||
|
"Linear Regression Health Costs Calculator"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"5e46f8edac417301a38fb931",
|
||||||
|
"Neural Network SMS Text Classifier"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
@ -6,7 +6,7 @@
|
|||||||
"template": "",
|
"template": "",
|
||||||
"required": [],
|
"required": [],
|
||||||
"superBlock": "coding-interview-prep",
|
"superBlock": "coding-interview-prep",
|
||||||
"superOrder": 8,
|
"superOrder": 10,
|
||||||
"challengeOrder": [
|
"challengeOrder": [
|
||||||
[
|
[
|
||||||
"5900f36e1000cf542c50fe80",
|
"5900f36e1000cf542c50fe80",
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
"template": "",
|
"template": "",
|
||||||
"required": [],
|
"required": [],
|
||||||
"superBlock": "certificates",
|
"superBlock": "certificates",
|
||||||
"superOrder": 9,
|
"superOrder": 11,
|
||||||
"challengeOrder": [
|
"challengeOrder": [
|
||||||
[
|
[
|
||||||
"561add10cb82ac38a17513bc",
|
"561add10cb82ac38a17513bc",
|
||||||
@ -14,5 +14,5 @@
|
|||||||
]
|
]
|
||||||
],
|
],
|
||||||
"isPrivate": true,
|
"isPrivate": true,
|
||||||
"fileName": "09-certificates/responsive-web-design-certificate.json"
|
"fileName": "11-certificates/responsive-web-design-certificate.json"
|
||||||
}
|
}
|
@ -6,7 +6,7 @@
|
|||||||
"template": "",
|
"template": "",
|
||||||
"required": [],
|
"required": [],
|
||||||
"superBlock": "coding-interview-prep",
|
"superBlock": "coding-interview-prep",
|
||||||
"superOrder": 8,
|
"superOrder": 10,
|
||||||
"challengeOrder": [
|
"challengeOrder": [
|
||||||
[
|
[
|
||||||
"594810f028c0303b75339acb",
|
"594810f028c0303b75339acb",
|
||||||
|
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "Scientific Computing with Python Certificate",
|
||||||
|
"dashedName": "scientific-computing-with-python-certificate",
|
||||||
|
"order": 7,
|
||||||
|
"time": "",
|
||||||
|
"template": "",
|
||||||
|
"required": [],
|
||||||
|
"superBlock": "certificates",
|
||||||
|
"superOrder": 11,
|
||||||
|
"challengeOrder": [
|
||||||
|
[
|
||||||
|
"5e44431b903586ffb414c951",
|
||||||
|
"Scientific Computing with Python Certificate"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"isPrivate": true,
|
||||||
|
"fileName": "11-certificates/scientific-computing-with-python-certificate.json"
|
||||||
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"name": "Scientific Computing with Python Projects",
|
||||||
|
"dashedName": "scientific-computing-with-python-projects",
|
||||||
|
"order": 1,
|
||||||
|
"time": "150 hours",
|
||||||
|
"superBlock": "scientific-computing-with-python",
|
||||||
|
"superOrder": 7,
|
||||||
|
"challengeOrder": [
|
||||||
|
[
|
||||||
|
"5e44412c903586ffb414c94c",
|
||||||
|
"Arithmetic Formatter"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"5e444136903586ffb414c94d",
|
||||||
|
"Time Calculator"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"5e44413e903586ffb414c94e",
|
||||||
|
"Budget App"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"5e444147903586ffb414c94f",
|
||||||
|
"Polygon Area Calculator"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"5e44414f903586ffb414c950",
|
||||||
|
"Probability Calculator"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
@ -6,7 +6,7 @@
|
|||||||
"template": "",
|
"template": "",
|
||||||
"required": [],
|
"required": [],
|
||||||
"superBlock": "coding-interview-prep",
|
"superBlock": "coding-interview-prep",
|
||||||
"superOrder": 8,
|
"superOrder": 10,
|
||||||
"challengeOrder": [
|
"challengeOrder": [
|
||||||
[
|
[
|
||||||
"bd7158d8c442eddfaeb5bd10",
|
"bd7158d8c442eddfaeb5bd10",
|
||||||
|
@ -0,0 +1,59 @@
|
|||||||
|
---
|
||||||
|
id: 5e46f979ac417301a38fb932
|
||||||
|
title: Port Scanner
|
||||||
|
challengeType: 10
|
||||||
|
isRequired: true
|
||||||
|
---
|
||||||
|
|
||||||
|
## Description
|
||||||
|
<section id='description'>
|
||||||
|
Create a port scanner using Python.
|
||||||
|
|
||||||
|
You can access <a href='https://repl.it/@freeCodeCamp/fcc-port-scanner' target='_blank'>the full project description and starter code on repl.it</a>.
|
||||||
|
|
||||||
|
After going to that link, fork the project. Once you complete the project based on the instructions in 'README.md', submit your project link below.
|
||||||
|
|
||||||
|
We are still developing the interactive instructional part of the Python curriculum. For now, here are some videos on the freeCodeCamp.org YouTube channel that will teach you some of the Python skills required for this project:
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href='https://www.freecodecamp.org/news/python-for-everybody/'>Python for Everybody Video Course</a> (14 hours)
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href='https://www.freecodecamp.org/news/learn-python-basics-in-depth-video-course/'>Learn Python Video Course</a> (2 hours)
|
||||||
|
</li>
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Instructions
|
||||||
|
<section id='instructions'>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Tests
|
||||||
|
<section id='tests'>
|
||||||
|
|
||||||
|
```yml
|
||||||
|
tests:
|
||||||
|
- text: 'It should pass all Python tests.'
|
||||||
|
testString: ''
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Challenge Seed
|
||||||
|
<section id='challengeSeed'>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Solution
|
||||||
|
<section id='solution'>
|
||||||
|
|
||||||
|
```py
|
||||||
|
# Python challenges don't need solutions,
|
||||||
|
# because they would need to be tested against a full working project.
|
||||||
|
# Please check our contributing guidelines to learn more.
|
||||||
|
```
|
||||||
|
|
||||||
|
</section>
|
@ -0,0 +1,58 @@
|
|||||||
|
---
|
||||||
|
id: 5e46f983ac417301a38fb933
|
||||||
|
title: SHA-1 Password Cracker
|
||||||
|
challengeType: 10
|
||||||
|
isRequired: true
|
||||||
|
---
|
||||||
|
|
||||||
|
## Description
|
||||||
|
<section id='description'>
|
||||||
|
For this project you will learn about the importance of good security by creating a password cracker to figure out passwords that were hashed using SHA-1.
|
||||||
|
|
||||||
|
You can access <a href='https://repl.it/@freeCodeCamp/fcc-brute-force-password-cracker' target='_blank'>the full project description and starter code on repl.it</a>.
|
||||||
|
|
||||||
|
After going to that link, fork the project. Once you complete the project based on the instructions in 'README.md', submit your project link below.
|
||||||
|
|
||||||
|
We are still developing the interactive instructional part of the Python curriculum. For now, here are some videos on the freeCodeCamp.org YouTube channel that will teach you some of the Python skills required for this project:
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href='https://www.freecodecamp.org/news/python-for-everybody/'>Python for Everybody Video Course</a> (14 hours)
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href='https://www.freecodecamp.org/news/learn-python-basics-in-depth-video-course/'>Learn Python Video Course</a> (2 hours)
|
||||||
|
</li>
|
||||||
|
<ul>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Instructions
|
||||||
|
<section id='instructions'>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Tests
|
||||||
|
<section id='tests'>
|
||||||
|
|
||||||
|
```yml
|
||||||
|
tests:
|
||||||
|
- text: 'It should pass all Python tests.'
|
||||||
|
testString: ''
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Challenge Seed
|
||||||
|
<section id='challengeSeed'>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Solution
|
||||||
|
<section id='solution'>
|
||||||
|
|
||||||
|
```py
|
||||||
|
# Python challenges don't need solutions,
|
||||||
|
# because they would need to be tested against a full working project.
|
||||||
|
# Please check our contributing guidelines to learn more.
|
||||||
|
```
|
||||||
|
|
||||||
|
</section>
|
@ -0,0 +1,61 @@
|
|||||||
|
---
|
||||||
|
id: 5e44412c903586ffb414c94c
|
||||||
|
title: Arithmetic Formatter
|
||||||
|
challengeType: 10
|
||||||
|
isRequired: true
|
||||||
|
---
|
||||||
|
|
||||||
|
## Description
|
||||||
|
<section id='description'>
|
||||||
|
Create a function that receives a list of strings that are arithmetic problems and returns the problems arranged vertically and side-by-side.
|
||||||
|
|
||||||
|
You can access <a href='https://repl.it/@freeCodeCamp/fcc-arithmetic-arranger' target='_blank'>the full project description and starter code on repl.it</a>.
|
||||||
|
|
||||||
|
After going to that link, fork the project. Once you complete the project based on the instructions in 'README.md', submit your project link below.
|
||||||
|
|
||||||
|
We are still developing the interactive instructional part of the Python curriculum. For now, here are some videos on the freeCodeCamp.org YouTube channel that will teach you everything you need to know to complete this project:
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href='https://www.freecodecamp.org/news/python-for-everybody/'>Python for Everybody Video Course</a> (14 hours)
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href='https://www.freecodecamp.org/news/learn-python-basics-in-depth-video-course/'>Learn Python Video Course</a> (2 hours)
|
||||||
|
</li>
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Instructions
|
||||||
|
<section id='instructions'>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Tests
|
||||||
|
<section id='tests'>
|
||||||
|
|
||||||
|
```yml
|
||||||
|
tests:
|
||||||
|
- text: 'It should correctly format an arithmetic problem and pass all tests.'
|
||||||
|
testString: ''
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Challenge Seed
|
||||||
|
<section id='challengeSeed'>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Solution
|
||||||
|
<section id='solution'>
|
||||||
|
|
||||||
|
```js
|
||||||
|
/**
|
||||||
|
Backend challenges don't need solutions,
|
||||||
|
because they would need to be tested against a full working project.
|
||||||
|
Please check our contributing guidelines to learn more.
|
||||||
|
*/
|
||||||
|
```
|
||||||
|
|
||||||
|
</section>
|
@ -0,0 +1,61 @@
|
|||||||
|
---
|
||||||
|
id: 5e44413e903586ffb414c94e
|
||||||
|
title: Budget App
|
||||||
|
challengeType: 10
|
||||||
|
isRequired: true
|
||||||
|
---
|
||||||
|
|
||||||
|
## Description
|
||||||
|
<section id='description'>
|
||||||
|
Create a "Category" class that can be used to create different budget categories.
|
||||||
|
|
||||||
|
You can access <a href='https://repl.it/@freeCodeCamp/fcc-budget-app' target='_blank'>the full project description and starter code on repl.it</a>.
|
||||||
|
|
||||||
|
After going to that link, fork the project. Once you complete the project based on the instructions in 'README.md', submit your project link below.
|
||||||
|
|
||||||
|
We are still developing the interactive instructional part of the Python curriculum. For now, here are some videos on the freeCodeCamp.org YouTube channel that will teach you everything you need to know to complete this project:
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href='https://www.freecodecamp.org/news/python-for-everybody/'>Python for Everybody Video Course</a> (14 hours)
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href='https://www.freecodecamp.org/news/learn-python-basics-in-depth-video-course/'>Learn Python Video Course</a> (2 hours)
|
||||||
|
</li>
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Instructions
|
||||||
|
<section id='instructions'>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Tests
|
||||||
|
<section id='tests'>
|
||||||
|
|
||||||
|
```yml
|
||||||
|
tests:
|
||||||
|
- text: 'It should create a Category class and pass all tests.'
|
||||||
|
testString: ''
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Challenge Seed
|
||||||
|
<section id='challengeSeed'>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Solution
|
||||||
|
<section id='solution'>
|
||||||
|
|
||||||
|
```js
|
||||||
|
/**
|
||||||
|
Backend challenges don't need solutions,
|
||||||
|
because they would need to be tested against a full working project.
|
||||||
|
Please check our contributing guidelines to learn more.
|
||||||
|
*/
|
||||||
|
```
|
||||||
|
|
||||||
|
</section>
|
@ -0,0 +1,61 @@
|
|||||||
|
---
|
||||||
|
id: 5e444147903586ffb414c94f
|
||||||
|
title: Polygon Area Calculator
|
||||||
|
challengeType: 10
|
||||||
|
isRequired: true
|
||||||
|
---
|
||||||
|
|
||||||
|
## Description
|
||||||
|
<section id='description'>
|
||||||
|
In this project you will use object oriented programming to create a Rectangle class and a Square class. The Square class should be a subclass of Rectangle and inherit methods and attributes.
|
||||||
|
|
||||||
|
You can access <a href='https://repl.it/@freeCodeCamp/fcc-shape-calculator' target='_blank'>the full project description and starter code on repl.it</a>.
|
||||||
|
|
||||||
|
After going to that link, fork the project. Once you complete the project based on the instructions in 'README.md', submit your project link below.
|
||||||
|
|
||||||
|
We are still developing the interactive instructional part of the Python curriculum. For now, here are some videos on the freeCodeCamp.org YouTube channel that will teach you everything you need to know to complete this project:
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href='https://www.freecodecamp.org/news/python-for-everybody/'>Python for Everybody Video Course</a> (14 hours)
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href='https://www.freecodecamp.org/news/learn-python-basics-in-depth-video-course/'>Learn Python Video Course</a> (2 hours)
|
||||||
|
</li>
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Instructions
|
||||||
|
<section id='instructions'>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Tests
|
||||||
|
<section id='tests'>
|
||||||
|
|
||||||
|
```yml
|
||||||
|
tests:
|
||||||
|
- text: 'It should create a Rectangle class and Square class and pass all tests.'
|
||||||
|
testString: ''
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Challenge Seed
|
||||||
|
<section id='challengeSeed'>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Solution
|
||||||
|
<section id='solution'>
|
||||||
|
|
||||||
|
```js
|
||||||
|
/**
|
||||||
|
Backend challenges don't need solutions,
|
||||||
|
because they would need to be tested against a full working project.
|
||||||
|
Please check our contributing guidelines to learn more.
|
||||||
|
*/
|
||||||
|
```
|
||||||
|
|
||||||
|
</section>
|
@ -0,0 +1,59 @@
|
|||||||
|
---
|
||||||
|
id: 5e44414f903586ffb414c950
|
||||||
|
title: Probability Calculator
|
||||||
|
challengeType: 10
|
||||||
|
isRequired: true
|
||||||
|
---
|
||||||
|
|
||||||
|
## Description
|
||||||
|
<section id='description'>
|
||||||
|
Write a program to determine the approximate probability of drawing certain balls randomly from a hat.
|
||||||
|
|
||||||
|
You can access <a href='https://repl.it/@freeCodeCamp/fcc-probability-calculator' target='_blank'>the full project description and starter code on repl.it</a>. After going to that link, fork the project. Once you complete the project based on the instructions in 'README.md', submit your project link below.
|
||||||
|
|
||||||
|
We are still developing the interactive instructional part of the Python curriculum. For now, here are some videos on the freeCodeCamp.org YouTube channel that will teach you everything you need to know to complete this project:
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href='https://www.freecodecamp.org/news/python-for-everybody/'>Python for Everybody Video Course</a> (14 hours)
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href='https://www.freecodecamp.org/news/learn-python-basics-in-depth-video-course/'>Learn Python Video Course</a> (2 hours)
|
||||||
|
</li>
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Instructions
|
||||||
|
<section id='instructions'>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Tests
|
||||||
|
<section id='tests'>
|
||||||
|
|
||||||
|
```yml
|
||||||
|
tests:
|
||||||
|
- text: 'It should correctly calculate probabilities and pass all tests.'
|
||||||
|
testString: ''
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Challenge Seed
|
||||||
|
<section id='challengeSeed'>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Solution
|
||||||
|
<section id='solution'>
|
||||||
|
|
||||||
|
```js
|
||||||
|
/**
|
||||||
|
Backend challenges don't need solutions,
|
||||||
|
because they would need to be tested against a full working project.
|
||||||
|
Please check our contributing guidelines to learn more.
|
||||||
|
*/
|
||||||
|
```
|
||||||
|
|
||||||
|
</section>
|
@ -0,0 +1,59 @@
|
|||||||
|
---
|
||||||
|
id: 5e444136903586ffb414c94d
|
||||||
|
title: Time Calculator
|
||||||
|
challengeType: 10
|
||||||
|
isRequired: true
|
||||||
|
---
|
||||||
|
|
||||||
|
## Description
|
||||||
|
<section id='description'>
|
||||||
|
Write a function named "add_time" that can add a duration to a start time and return the result.
|
||||||
|
|
||||||
|
You can access <a href='https://repl.it/@freeCodeCamp/fcc-time-calculator' target='_blank'>the full project description and starter code on repl.it</a>. After going to that link, fork the project. Once you complete the project based on the instructions in 'README.md', submit your project link below.
|
||||||
|
|
||||||
|
We are still developing the interactive instructional part of the Python curriculum. For now, here are some videos on the freeCodeCamp.org YouTube channel that will teach you everything you need to know to complete this project:
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href='https://www.freecodecamp.org/news/python-for-everybody/'>Python for Everybody Video Course</a> (14 hours)
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href='https://www.freecodecamp.org/news/learn-python-basics-in-depth-video-course/'>Learn Python Video Course</a> (2 hours)
|
||||||
|
</li>
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Instructions
|
||||||
|
<section id='instructions'>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Tests
|
||||||
|
<section id='tests'>
|
||||||
|
|
||||||
|
```yml
|
||||||
|
tests:
|
||||||
|
- text: 'It should correctly add times and pass all tests.'
|
||||||
|
testString: ''
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Challenge Seed
|
||||||
|
<section id='challengeSeed'>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Solution
|
||||||
|
<section id='solution'>
|
||||||
|
|
||||||
|
```js
|
||||||
|
/**
|
||||||
|
Backend challenges don't need solutions,
|
||||||
|
because they would need to be tested against a full working project.
|
||||||
|
Please check our contributing guidelines to learn more.
|
||||||
|
*/
|
||||||
|
```
|
||||||
|
|
||||||
|
</section>
|
@ -0,0 +1,50 @@
|
|||||||
|
---
|
||||||
|
id: 5e46f7e5ac417301a38fb929
|
||||||
|
title: Demographic Data Analyzer
|
||||||
|
challengeType: 10
|
||||||
|
isRequired: true
|
||||||
|
---
|
||||||
|
|
||||||
|
## Description
|
||||||
|
<section id='description'>
|
||||||
|
In this challenge you must analyze demographic data using Pandas. You are given a dataset of demographic data that was extracted from the 1994 Census database.
|
||||||
|
|
||||||
|
You can access <a href='https://repl.it/@freeCodeCamp/fcc-demographic-data-analyzer' target='_blank'>the full project description and starter code on repl.it</a>.
|
||||||
|
|
||||||
|
After going to that link, fork the project. Once you complete the project based on the instructions in 'README.md', submit your project link below.
|
||||||
|
|
||||||
|
We are still developing the interactive instructional part of the data analysis with Python curriculum. For now, you will have to use other resources to learn how to pass this challenge.
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Instructions
|
||||||
|
<section id='instructions'>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Tests
|
||||||
|
<section id='tests'>
|
||||||
|
|
||||||
|
```yml
|
||||||
|
tests:
|
||||||
|
- text: 'It should pass all Python tests.'
|
||||||
|
testString: ''
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Challenge Seed
|
||||||
|
<section id='challengeSeed'>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Solution
|
||||||
|
<section id='solution'>
|
||||||
|
|
||||||
|
```py
|
||||||
|
# Python challenges don't need solutions,
|
||||||
|
# because they would need to be tested against a full working project.
|
||||||
|
# Please check our contributing guidelines to learn more.
|
||||||
|
```
|
||||||
|
|
||||||
|
</section>
|
@ -0,0 +1,50 @@
|
|||||||
|
---
|
||||||
|
id: 5e46f7e5ac417301a38fb928
|
||||||
|
title: Mean-Variance-Standard Deviation Calculator
|
||||||
|
challengeType: 10
|
||||||
|
isRequired: true
|
||||||
|
---
|
||||||
|
|
||||||
|
## Description
|
||||||
|
<section id='description'>
|
||||||
|
Create a function that uses Numpy to output the mean, variance, and standard deviation of the rows, columns, and elements in a 3 x 3 matrix.
|
||||||
|
|
||||||
|
You can access <a href='https://repl.it/@freeCodeCamp/fcc-mean-var-std' target='_blank'>the full project description and starter code on repl.it</a>.
|
||||||
|
|
||||||
|
After going to that link, fork the project. Once you complete the project based on the instructions in 'README.md', submit your project link below.
|
||||||
|
|
||||||
|
We are still developing the interactive instructional part of the data analysis with Python curriculum. For now, you will have to use other resources to learn how to pass this challenge.
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Instructions
|
||||||
|
<section id='instructions'>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Tests
|
||||||
|
<section id='tests'>
|
||||||
|
|
||||||
|
```yml
|
||||||
|
tests:
|
||||||
|
- text: 'It should pass all Python tests.'
|
||||||
|
testString: ''
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Challenge Seed
|
||||||
|
<section id='challengeSeed'>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Solution
|
||||||
|
<section id='solution'>
|
||||||
|
|
||||||
|
```py
|
||||||
|
# Python challenges don't need solutions,
|
||||||
|
# because they would need to be tested against a full working project.
|
||||||
|
# Please check our contributing guidelines to learn more.
|
||||||
|
```
|
||||||
|
|
||||||
|
</section>
|
@ -0,0 +1,50 @@
|
|||||||
|
---
|
||||||
|
id: 5e46f7f8ac417301a38fb92a
|
||||||
|
title: Medical Data Visualizer
|
||||||
|
challengeType: 10
|
||||||
|
isRequired: true
|
||||||
|
---
|
||||||
|
|
||||||
|
## Description
|
||||||
|
<section id='description'>
|
||||||
|
In this project, you will visualize and make calculations from medical examination data using matplotlib, seaborn, and pandas.
|
||||||
|
|
||||||
|
You can access <a href='https://repl.it/@freeCodeCamp/fcc-medical-data-visualizer' target='_blank'>the full project description and starter code on repl.it</a>.
|
||||||
|
|
||||||
|
After going to that link, fork the project. Once you complete the project based on the instructions in 'README.md', submit your project link below.
|
||||||
|
|
||||||
|
We are still developing the interactive instructional part of the data analysis with Python curriculum. For now, you will have to use other resources to learn how to pass this challenge.
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Instructions
|
||||||
|
<section id='instructions'>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Tests
|
||||||
|
<section id='tests'>
|
||||||
|
|
||||||
|
```yml
|
||||||
|
tests:
|
||||||
|
- text: 'It should pass all Python tests.'
|
||||||
|
testString: ''
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Challenge Seed
|
||||||
|
<section id='challengeSeed'>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Solution
|
||||||
|
<section id='solution'>
|
||||||
|
|
||||||
|
```py
|
||||||
|
# Python challenges don't need solutions,
|
||||||
|
# because they would need to be tested against a full working project.
|
||||||
|
# Please check our contributing guidelines to learn more.
|
||||||
|
```
|
||||||
|
|
||||||
|
</section>
|
@ -0,0 +1,50 @@
|
|||||||
|
---
|
||||||
|
id: 5e46f802ac417301a38fb92b
|
||||||
|
title: Page View Time Series Visualizer
|
||||||
|
challengeType: 10
|
||||||
|
isRequired: true
|
||||||
|
---
|
||||||
|
|
||||||
|
## Description
|
||||||
|
<section id='description'>
|
||||||
|
For this project you will visualize time series data using a line chart, bar chart, and box plots. You will use Pandas, matplotlib, and seaborn to visualize a dataset containing the number of page views each day on the freeCodeCamp.org forum from 2016-05-09 to 2019-12-03. The data visualizations will help you understand the patterns in visits and identify yearly and monthly growth.
|
||||||
|
|
||||||
|
You can access <a href='https://repl.it/@freeCodeCamp/fcc-time-series-visualizer' target='_blank'>the full project description and starter code on repl.it</a>.
|
||||||
|
|
||||||
|
After going to that link, fork the project. Once you complete the project based on the instructions in 'README.md', submit your project link below.
|
||||||
|
|
||||||
|
We are still developing the interactive instructional part of the data analysis with Python curriculum. For now, you will have to use other resources to learn how to pass this challenge.
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Instructions
|
||||||
|
<section id='instructions'>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Tests
|
||||||
|
<section id='tests'>
|
||||||
|
|
||||||
|
```yml
|
||||||
|
tests:
|
||||||
|
- text: 'It should pass all Python tests.'
|
||||||
|
testString: ''
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Challenge Seed
|
||||||
|
<section id='challengeSeed'>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Solution
|
||||||
|
<section id='solution'>
|
||||||
|
|
||||||
|
```py
|
||||||
|
# Python challenges don't need solutions,
|
||||||
|
# because they would need to be tested against a full working project.
|
||||||
|
# Please check our contributing guidelines to learn more.
|
||||||
|
```
|
||||||
|
|
||||||
|
</section>
|
@ -0,0 +1,50 @@
|
|||||||
|
---
|
||||||
|
id: 5e4f5c4b570f7e3a4949899f
|
||||||
|
title: Sea Level Predictor
|
||||||
|
challengeType: 10
|
||||||
|
isRequired: true
|
||||||
|
---
|
||||||
|
|
||||||
|
## Description
|
||||||
|
<section id='description'>
|
||||||
|
In this project, you will analyze a dataset of the global average sea level change since 1880. You will use the data to predict the sea level change through year 2050.
|
||||||
|
|
||||||
|
You can access <a href='https://repl.it/@freeCodeCamp/fcc-sea-level-predictor' target='_blank'>the full project description and starter code on repl.it</a>.
|
||||||
|
|
||||||
|
After going to that link, fork the project. Once you complete the project based on the instructions in 'README.md', submit your project link below.
|
||||||
|
|
||||||
|
We are still developing the interactive instructional part of the data analysis with Python curriculum. For now, you will have to use other resources to learn how to pass this challenge.
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Instructions
|
||||||
|
<section id='instructions'>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Tests
|
||||||
|
<section id='tests'>
|
||||||
|
|
||||||
|
```yml
|
||||||
|
tests:
|
||||||
|
- text: 'It should pass all Python tests.'
|
||||||
|
testString: ''
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Challenge Seed
|
||||||
|
<section id='challengeSeed'>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Solution
|
||||||
|
<section id='solution'>
|
||||||
|
|
||||||
|
```py
|
||||||
|
# Python challenges don't need solutions,
|
||||||
|
# because they would need to be tested against a full working project.
|
||||||
|
# Please check our contributing guidelines to learn more.
|
||||||
|
```
|
||||||
|
|
||||||
|
</section>
|
@ -0,0 +1,61 @@
|
|||||||
|
---
|
||||||
|
id: 5e46f8e3ac417301a38fb92f
|
||||||
|
title: Book Recommendation Engine using KNN
|
||||||
|
challengeType: 10
|
||||||
|
isRequired: true
|
||||||
|
---
|
||||||
|
|
||||||
|
## Description
|
||||||
|
<section id='description'>
|
||||||
|
In this challenge, you will create a book recommendation algorithm using K-Nearest Neighbors.
|
||||||
|
|
||||||
|
You will use the Book-Crossings dataset. This dataset contains 1.1 million ratings (scale of 1-10) of 270,000 books by 90,000 users.
|
||||||
|
|
||||||
|
You can access <a href='https://colab.research.google.com/drive/1TDgXyXqZwsiGlnuF-bmQ2Rh3x5NcrHEn' target='_blank'>the full project instructions and starter code on Google Colaboratory</a>.
|
||||||
|
|
||||||
|
After going to that link, create a copy of the notebook either in your own account or locally. Once you complete the project and it passes the test (included at that link), submit your project link below. If you are submitting a Google Colaboratory link, make sure to turn on link sharing for "anyone with the link."
|
||||||
|
|
||||||
|
We are still developing the interactive instructional content for the machine learning curriculum. For now, check out these learning resources on the freeCodeCamp.org YouTube channel:
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href='https://www.freecodecamp.org/news/learn-to-develop-neural-networks-using-tensorflow-2-0-in-this-beginners-course/'>TensorFlow 2.0 Course</a> (2 hours)
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href='https://www.youtube.com/playlist?list=PLWKjhJtqVAblStefaz_YOVpDWqcRScc2s'>Machine learning playlist</a>
|
||||||
|
</li>
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Instructions
|
||||||
|
<section id='instructions'>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Tests
|
||||||
|
<section id='tests'>
|
||||||
|
|
||||||
|
```yml
|
||||||
|
tests:
|
||||||
|
- text: 'It should pass all Python tests.'
|
||||||
|
testString: ''
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Challenge Seed
|
||||||
|
<section id='challengeSeed'>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Solution
|
||||||
|
<section id='solution'>
|
||||||
|
|
||||||
|
```py
|
||||||
|
# Python challenges don't need solutions,
|
||||||
|
# because they would need to be tested against a full working project.
|
||||||
|
# Please check our contributing guidelines to learn more.
|
||||||
|
```
|
||||||
|
|
||||||
|
</section>
|
@ -0,0 +1,59 @@
|
|||||||
|
---
|
||||||
|
id: 5e46f8dcac417301a38fb92e
|
||||||
|
title: Cat and Dog Image Classifier
|
||||||
|
challengeType: 10
|
||||||
|
isRequired: true
|
||||||
|
---
|
||||||
|
|
||||||
|
## Description
|
||||||
|
<section id='description'>
|
||||||
|
For this challenge, you will use Tensorflow 2.0 and Karas to create a convolutional neural network that correctly classifies images of cats and dogs with at least 63% accuracy.
|
||||||
|
|
||||||
|
You can access <a href='https://colab.research.google.com/drive/1UCHiRuBLxo0S3aMuiDXlaP54LsxzrXHz' target='_blank'>the full project instructions and starter code on Google Colaboratory</a>.
|
||||||
|
|
||||||
|
After going to that link, create a copy of the notebook either in your own account or locally. Once you complete the project and it passes the test (included at that link), submit your project link below. If you are submitting a Google Colaboratory link, make sure to turn on link sharing for "anyone with the link."
|
||||||
|
|
||||||
|
We are still developing the interactive instructional content for the machine learning curriculum. For now, check out these learning resources on the freeCodeCamp.org YouTube channel:
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href='https://www.freecodecamp.org/news/learn-to-develop-neural-networks-using-tensorflow-2-0-in-this-beginners-course/'>TensorFlow 2.0 Course</a> (2 hours)
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href='https://www.youtube.com/playlist?list=PLWKjhJtqVAblStefaz_YOVpDWqcRScc2s'>Machine learning playlist</a>
|
||||||
|
</li>
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Instructions
|
||||||
|
<section id='instructions'>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Tests
|
||||||
|
<section id='tests'>
|
||||||
|
|
||||||
|
```yml
|
||||||
|
tests:
|
||||||
|
- text: 'It should pass all Python tests.'
|
||||||
|
testString: ''
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Challenge Seed
|
||||||
|
<section id='challengeSeed'>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Solution
|
||||||
|
<section id='solution'>
|
||||||
|
|
||||||
|
```py
|
||||||
|
# Python challenges don't need solutions,
|
||||||
|
# because they would need to be tested against a full working project.
|
||||||
|
# Please check our contributing guidelines to learn more.
|
||||||
|
```
|
||||||
|
|
||||||
|
</section>
|
@ -0,0 +1,61 @@
|
|||||||
|
---
|
||||||
|
id: 5e46f8edac417301a38fb930
|
||||||
|
title: Linear Regression Health Costs Calculator
|
||||||
|
challengeType: 10
|
||||||
|
isRequired: true
|
||||||
|
---
|
||||||
|
|
||||||
|
## Description
|
||||||
|
<section id='description'>
|
||||||
|
In this challenge, you will predict healthcare costs using a regression algorithm.
|
||||||
|
|
||||||
|
You are given a dataset that contains information about different people including their healthcare costs. Use the data to predict healthcare costs based on new data.
|
||||||
|
|
||||||
|
You can access <a href='https://colab.research.google.com/drive/1h6SMDpC6o-6TFsgdizb3tk5zgE_DYWEo' target='_blank'>the full project instructions and starter code on Google Colaboratory</a>.
|
||||||
|
|
||||||
|
After going to that link, create a copy of the notebook either in your own account or locally. Once you complete the project and it passes the test (included at that link), submit your project link below. If you are submitting a Google Colaboratory link, make sure to turn on link sharing for "anyone with the link."
|
||||||
|
|
||||||
|
We are still developing the interactive instructional content for the machine learning curriculum. For now, check out these learning resources on the freeCodeCamp.org YouTube channel:
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href='https://www.freecodecamp.org/news/learn-to-develop-neural-networks-using-tensorflow-2-0-in-this-beginners-course/'>TensorFlow 2.0 Course</a> (2 hours)
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href='https://www.youtube.com/playlist?list=PLWKjhJtqVAblStefaz_YOVpDWqcRScc2s'>Machine learning playlist</a>
|
||||||
|
</li>
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Instructions
|
||||||
|
<section id='instructions'>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Tests
|
||||||
|
<section id='tests'>
|
||||||
|
|
||||||
|
```yml
|
||||||
|
tests:
|
||||||
|
- text: 'It should pass all Python tests.'
|
||||||
|
testString: ''
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Challenge Seed
|
||||||
|
<section id='challengeSeed'>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Solution
|
||||||
|
<section id='solution'>
|
||||||
|
|
||||||
|
```py
|
||||||
|
# Python challenges don't need solutions,
|
||||||
|
# because they would need to be tested against a full working project.
|
||||||
|
# Please check our contributing guidelines to learn more.
|
||||||
|
```
|
||||||
|
|
||||||
|
</section>
|
@ -0,0 +1,59 @@
|
|||||||
|
---
|
||||||
|
id: 5e46f8edac417301a38fb931
|
||||||
|
title: Neural Network SMS Text Classifier
|
||||||
|
challengeType: 10
|
||||||
|
isRequired: true
|
||||||
|
---
|
||||||
|
|
||||||
|
## Description
|
||||||
|
<section id='description'>
|
||||||
|
In this challenge, you need to create a machine learning model that will classify SMS messages as either "ham" or "spam". A "ham" message is a normal message sent by a friend. A "spam" message is an advertisement or a message sent by a company.
|
||||||
|
|
||||||
|
You can access <a href='https://colab.research.google.com/drive/1qfVQwSKAKU-NKPY4ByBhr93EqSqds4dJ' target='_blank'>the full project instructions and starter code on Google Colaboratory</a>.
|
||||||
|
|
||||||
|
After going to that link, create a copy of the notebook either in your own account or locally. Once you complete the project and it passes the test (included at that link), submit your project link below. If you are submitting a Google Colaboratory link, make sure to turn on link sharing for "anyone with the link."
|
||||||
|
|
||||||
|
We are still developing the interactive instructional content for the machine learning curriculum. For now, check out these learning resources on the freeCodeCamp.org YouTube channel:
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href='https://www.freecodecamp.org/news/learn-to-develop-neural-networks-using-tensorflow-2-0-in-this-beginners-course/'>TensorFlow 2.0 Course</a> (2 hours)
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href='https://www.youtube.com/playlist?list=PLWKjhJtqVAblStefaz_YOVpDWqcRScc2s'>Machine learning playlist</a>
|
||||||
|
</li>
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Instructions
|
||||||
|
<section id='instructions'>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Tests
|
||||||
|
<section id='tests'>
|
||||||
|
|
||||||
|
```yml
|
||||||
|
tests:
|
||||||
|
- text: 'It should pass all Python tests.'
|
||||||
|
testString: ''
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Challenge Seed
|
||||||
|
<section id='challengeSeed'>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Solution
|
||||||
|
<section id='solution'>
|
||||||
|
|
||||||
|
```py
|
||||||
|
# Python challenges don't need solutions,
|
||||||
|
# because they would need to be tested against a full working project.
|
||||||
|
# Please check our contributing guidelines to learn more.
|
||||||
|
```
|
||||||
|
|
||||||
|
</section>
|
@ -0,0 +1,50 @@
|
|||||||
|
---
|
||||||
|
id: 5e46f8d6ac417301a38fb92d
|
||||||
|
title: Rock Paper Scissors
|
||||||
|
challengeType: 10
|
||||||
|
isRequired: true
|
||||||
|
---
|
||||||
|
|
||||||
|
## Description
|
||||||
|
<section id='description'>
|
||||||
|
For this challenge, you will create a program to play Rock, Paper, Scissors. A program that picks at random will usually win 50% of the time. To pass this challenge your program must play matches against four different bots, winning at least 60% of the games in each match.
|
||||||
|
|
||||||
|
You can access <a href='https://repl.it/@freeCodeCamp/fcc-rock-paper-scissors' target='_blank'>the full project description and starter code on repl.it</a>.
|
||||||
|
|
||||||
|
After going to that link, fork the project. Once you complete the project based on the instructions in 'README.md', submit your project link below.
|
||||||
|
|
||||||
|
We are still developing the interactive instructional part of the machine learning curriculum. For now, you will have to use other resources to learn how to pass this challenge.
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Instructions
|
||||||
|
<section id='instructions'>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Tests
|
||||||
|
<section id='tests'>
|
||||||
|
|
||||||
|
```yml
|
||||||
|
tests:
|
||||||
|
- text: 'It should pass all Python tests.'
|
||||||
|
testString: ''
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Challenge Seed
|
||||||
|
<section id='challengeSeed'>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
## Solution
|
||||||
|
<section id='solution'>
|
||||||
|
|
||||||
|
```py
|
||||||
|
# Python challenges don't need solutions,
|
||||||
|
# because they would need to be tested against a full working project.
|
||||||
|
# Please check our contributing guidelines to learn more.
|
||||||
|
```
|
||||||
|
|
||||||
|
</section>
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user