diff --git a/client/src/pages/learn/information-security/python-for-penetration-testing/index.md b/client/src/pages/learn/information-security/python-for-penetration-testing/index.md
new file mode 100644
index 0000000000..d6b9870b46
--- /dev/null
+++ b/client/src/pages/learn/information-security/python-for-penetration-testing/index.md
@@ -0,0 +1,8 @@
+---
+title: Introduction to the Python for Penetration Testing Lectures
+block: Python for Penetration Testing
+superBlock: Data Analysis with Python
+---
+## Introduction to the Python for Penetration Testing Challenges
+
+Python for Penetration Testing Placeholder Introduction.
diff --git a/client/utils/challengeTypes.js b/client/utils/challengeTypes.js
index 1349fcc908..037b6b2c03 100644
--- a/client/utils/challengeTypes.js
+++ b/client/utils/challengeTypes.js
@@ -130,5 +130,6 @@ exports.helpCategory = {
tensorflow: 'Python',
'how-neural-networks-work': 'Python',
numpy: 'Python',
- 'data-analysis-with-python-course': 'Python'
+ 'data-analysis-with-python-course': 'Python',
+ 'python-for-penetration-testing': 'Python'
};
diff --git a/curriculum/challenges/_meta/information-security-projects/meta.json b/curriculum/challenges/_meta/information-security-projects/meta.json
index bdd47de496..886cb6b6b9 100644
--- a/curriculum/challenges/_meta/information-security-projects/meta.json
+++ b/curriculum/challenges/_meta/information-security-projects/meta.json
@@ -1,7 +1,7 @@
{
"name": "Information Security Projects",
"dashedName": "information-security-projects",
- "order": 2,
+ "order": 3,
"time": "150 hours",
"template": "",
"required": [],
diff --git a/curriculum/challenges/_meta/python-for-penetration-testing/meta.json b/curriculum/challenges/_meta/python-for-penetration-testing/meta.json
new file mode 100644
index 0000000000..89eecdc9b3
--- /dev/null
+++ b/curriculum/challenges/_meta/python-for-penetration-testing/meta.json
@@ -0,0 +1,42 @@
+{
+ "name": "Python for Penetration Testing",
+ "dashedName": "python-for-penetration-testing",
+ "order": 2,
+ "time": "5 hours",
+ "template": "",
+ "required": [],
+ "superBlock": "information-security",
+ "superOrder": 9,
+ "challengeOrder": [
+ [
+ "5ea9997bbec2e9bc47e94dae",
+ "Introduction and Setup"
+ ],
+ [
+ "5ea9997bbec2e9bc47e94daf",
+ "Understanding Sockets and Creating a TCP Server"
+ ],
+ [
+ "5ea9997bbec2e9bc47e94db0",
+ "Creating a TCP Client"
+ ],
+ [
+ "5ea9997bbec2e9bc47e94db1",
+ "Developing an Nmap Scanner part 1"
+ ],
+ [
+ "5ea9997bbec2e9bc47e94db2",
+ "Developing and Nmap Scanner part 2"
+ ],
+ [
+ "5ea9997bbec2e9bc47e94db3",
+ "Developing a Banner Grabber"
+ ],
+ [
+ "5ea9997bbec2e9bc47e94db4",
+ "Developing a Port Scanner"
+ ]
+ ],
+ "helpRoom": "Help",
+ "fileName": "11-information-security/python-for-penetration-testing.json"
+}
\ No newline at end of file
diff --git a/curriculum/challenges/english/09-information-security/python-for-penetration-testing/creating-a-tcp-client.english.md b/curriculum/challenges/english/09-information-security/python-for-penetration-testing/creating-a-tcp-client.english.md
new file mode 100644
index 0000000000..e474b6fd19
--- /dev/null
+++ b/curriculum/challenges/english/09-information-security/python-for-penetration-testing/creating-a-tcp-client.english.md
@@ -0,0 +1,26 @@
+---
+id: 5ea9997bbec2e9bc47e94db0
+title: Creating a TCP Client
+challengeType: 11
+videoId: ugYfJNTawks
+---
+
+## Description
+
+
+## Tests
+
+
+```yml
+question:
+ text: Question
+ answers:
+ - one
+ - two
+ - three
+ solution: 3
+```
+
+
+
diff --git a/curriculum/challenges/english/09-information-security/python-for-penetration-testing/developing-a-banner-grabber.english.md b/curriculum/challenges/english/09-information-security/python-for-penetration-testing/developing-a-banner-grabber.english.md
new file mode 100644
index 0000000000..42c2233626
--- /dev/null
+++ b/curriculum/challenges/english/09-information-security/python-for-penetration-testing/developing-a-banner-grabber.english.md
@@ -0,0 +1,26 @@
+---
+id: 5ea9997bbec2e9bc47e94db3
+title: Developing a Banner Grabber
+challengeType: 11
+videoId: CeGW761BIsA
+---
+
+## Description
+
+
+## Tests
+
+
+```yml
+question:
+ text: Question
+ answers:
+ - one
+ - two
+ - three
+ solution: 3
+```
+
+
+
diff --git a/curriculum/challenges/english/09-information-security/python-for-penetration-testing/developing-a-port-scanner.english.md b/curriculum/challenges/english/09-information-security/python-for-penetration-testing/developing-a-port-scanner.english.md
new file mode 100644
index 0000000000..8ed6cdef2b
--- /dev/null
+++ b/curriculum/challenges/english/09-information-security/python-for-penetration-testing/developing-a-port-scanner.english.md
@@ -0,0 +1,26 @@
+---
+id: 5ea9997bbec2e9bc47e94db4
+title: Developing a Port Scanner
+challengeType: 11
+videoId: z_qkqZS7KZ4
+---
+
+## Description
+
+
+## Tests
+
+
+```yml
+question:
+ text: Question
+ answers:
+ - one
+ - two
+ - three
+ solution: 3
+```
+
+
+
diff --git a/curriculum/challenges/english/09-information-security/python-for-penetration-testing/developing-an-nmap-scanner-part-1.english.md b/curriculum/challenges/english/09-information-security/python-for-penetration-testing/developing-an-nmap-scanner-part-1.english.md
new file mode 100644
index 0000000000..0e23c73f62
--- /dev/null
+++ b/curriculum/challenges/english/09-information-security/python-for-penetration-testing/developing-an-nmap-scanner-part-1.english.md
@@ -0,0 +1,26 @@
+---
+id: 5ea9997bbec2e9bc47e94db1
+title: Developing an Nmap Scanner part 1
+challengeType: 11
+videoId: jYk9XaGoAnk
+---
+
+## Description
+
+
+## Tests
+
+
+```yml
+question:
+ text: Question
+ answers:
+ - one
+ - two
+ - three
+ solution: 3
+```
+
+
+
diff --git a/curriculum/challenges/english/09-information-security/python-for-penetration-testing/developing-and-nmap-scanner-part-2.english.md b/curriculum/challenges/english/09-information-security/python-for-penetration-testing/developing-and-nmap-scanner-part-2.english.md
new file mode 100644
index 0000000000..a8fa226f71
--- /dev/null
+++ b/curriculum/challenges/english/09-information-security/python-for-penetration-testing/developing-and-nmap-scanner-part-2.english.md
@@ -0,0 +1,26 @@
+---
+id: 5ea9997bbec2e9bc47e94db2
+title: Developing and Nmap Scanner part 2
+challengeType: 11
+videoId: a98PscnUsTg
+---
+
+## Description
+
+
+## Tests
+
+
+```yml
+question:
+ text: Question
+ answers:
+ - one
+ - two
+ - three
+ solution: 3
+```
+
+
+
diff --git a/curriculum/challenges/english/09-information-security/python-for-penetration-testing/introduction-and-setup.english.md b/curriculum/challenges/english/09-information-security/python-for-penetration-testing/introduction-and-setup.english.md
new file mode 100644
index 0000000000..6410cb0cd8
--- /dev/null
+++ b/curriculum/challenges/english/09-information-security/python-for-penetration-testing/introduction-and-setup.english.md
@@ -0,0 +1,26 @@
+---
+id: 5ea9997bbec2e9bc47e94dae
+title: Introduction and Setup
+challengeType: 11
+videoId: XeQ7ZKtb998
+---
+
+## Description
+
+
+## Tests
+
+
+```yml
+question:
+ text: Question
+ answers:
+ - one
+ - two
+ - three
+ solution: 3
+```
+
+
+
diff --git a/curriculum/challenges/english/09-information-security/python-for-penetration-testing/understanding-sockets-and-creating-a-tcp-server.english.md b/curriculum/challenges/english/09-information-security/python-for-penetration-testing/understanding-sockets-and-creating-a-tcp-server.english.md
new file mode 100644
index 0000000000..7949bc4837
--- /dev/null
+++ b/curriculum/challenges/english/09-information-security/python-for-penetration-testing/understanding-sockets-and-creating-a-tcp-server.english.md
@@ -0,0 +1,26 @@
+---
+id: 5ea9997bbec2e9bc47e94daf
+title: Understanding Sockets and Creating a TCP Server
+challengeType: 11
+videoId: F1QI9tNuDQg
+---
+
+## Description
+
+
+## Tests
+
+
+```yml
+question:
+ text: Question
+ answers:
+ - one
+ - two
+ - three
+ solution: 3
+```
+
+
+