diff --git a/codeExamples/week2/.gitignore b/codeExamples/week2/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..94374a6a35df952ae6bb401ff2d6f2c6eebee378
--- /dev/null
+++ b/codeExamples/week2/.gitignore
@@ -0,0 +1,5 @@
+# only relevant for Mac systems
+.DS_STORE
+
+#ingore npm packages
+node_modules
diff --git a/codeExamples/week2/SampleWebpage.html b/codeExamples/week2/SampleWebpage.html
new file mode 100644
index 0000000000000000000000000000000000000000..b58e6efcf86fdf13ab81166676fbdbe036007e8f
--- /dev/null
+++ b/codeExamples/week2/SampleWebpage.html
@@ -0,0 +1,20 @@
+<!doctype html>
+<html>
+    <head> 
+        <meta charset="utf-8" />
+        <!-- For responsive page -->
+        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+        <meta name="description" content="Basic HTML5 Document" />
+        <meta name="keywords" content="HTML5, Responsive, CMSC389N"/>
+        <link href="favicon.ico" rel="icon" type="image/x-icon" />
+        <title>HTML TEMPLATE</title> 
+    </head>
+
+    <body>
+        <ol type = "I">
+            <li>Shakira</li>
+            <li>JLo</li>
+            
+            </ol>
+    </body>
+</html>
\ No newline at end of file
diff --git a/codeExamples/week2/add.js b/codeExamples/week2/add.js
new file mode 100644
index 0000000000000000000000000000000000000000..e018112bb728c791c7fd6b5b3cf160202cdffe2b
--- /dev/null
+++ b/codeExamples/week2/add.js
@@ -0,0 +1,27 @@
+class Person{
+    constructor(name, age){
+        this.name = name;
+        this.age = age;
+    }
+
+    toString(){
+        return "Name is: " + this.name + " age is " +this.age;
+    }
+
+}
+
+class Student{
+    constructor(name, gpa){
+        this.name = name;
+        this.gpa = gpa;
+    }
+
+    toString(){
+        return "Name is: " + this.name + " gpa is " +this.gpa;
+    }
+
+}
+
+module.exports.Person = Person;
+module.exports.Stu = Student;
+
diff --git a/codeExamples/week2/commandLineAsync.js b/codeExamples/week2/commandLineAsync.js
new file mode 100644
index 0000000000000000000000000000000000000000..33960f9f48e180541e5d34fb50101c09282b57dd
--- /dev/null
+++ b/codeExamples/week2/commandLineAsync.js
@@ -0,0 +1,10 @@
+const readline = require('readline').createInterface({
+    input: process.stdin,
+    output: process.stdout
+  });
+
+readline.question('Who are you?', name => {
+  console.log(`Hey there ${name}!`);
+  readline.close();
+});
+
diff --git a/codeExamples/week2/commandLineSync.js b/codeExamples/week2/commandLineSync.js
new file mode 100644
index 0000000000000000000000000000000000000000..3c7aa277bafe52021997a6b4bd33d2191f2e2e3c
--- /dev/null
+++ b/codeExamples/week2/commandLineSync.js
@@ -0,0 +1,21 @@
+const prompt = require('prompt-sync')({sigint: true});
+ 
+// Random number from 1 - 10
+const numberToGuess = Math.floor(Math.random() * 10) + 1;
+// This variable is used to determine if the app should continue prompting the user for input
+let foundCorrectNumber = false;
+ 
+while (!foundCorrectNumber) {
+  // Get user input
+  let guess = prompt('Guess a number from 1 to 10: ');
+  // Convert the string input to a number
+  guess = Number(guess);
+ 
+  // Compare the guess to the secret answer and let the user know.
+  if (guess === numberToGuess) {
+    console.log('Congrats, you got it!');
+    foundCorrectNumber = true;
+  } else {
+    console.log('Sorry, guess again!');
+  }
+}
\ No newline at end of file
diff --git a/codeExamples/week2/eventEmitterExample.js b/codeExamples/week2/eventEmitterExample.js
new file mode 100644
index 0000000000000000000000000000000000000000..c2a1e9abbe86fe434e8069fa284926719d4a1f02
--- /dev/null
+++ b/codeExamples/week2/eventEmitterExample.js
@@ -0,0 +1,19 @@
+var emitter = require('events').EventEmitter;
+
+var em = new emitter();
+
+//Subscribe FirstEvent
+em.addListener('FirstEvent', function (data) {
+    console.log('First subscriber: ' + data);
+});
+
+//Subscribe SecondEvent
+em.on('SecondEvent', function (data) {
+    console.log('First subscriber: ' + data);
+});
+
+// Raising FirstEvent
+em.emit('FirstEvent', 'This is my first Node.js event emitter example.');
+
+// Raising SecondEvent
+em.emit('SecondEvent', 'This is my second Node.js event emitter example.');
\ No newline at end of file
diff --git a/codeExamples/week2/eventLoop.js b/codeExamples/week2/eventLoop.js
new file mode 100644
index 0000000000000000000000000000000000000000..2641dc52823149fa22329ac19ad7fb07df28b7c2
--- /dev/null
+++ b/codeExamples/week2/eventLoop.js
@@ -0,0 +1,36 @@
+const callbackPromise = function(value) {
+    console.log('callback promise');
+}
+const p = new Promise(function(resolve) {
+    console.log('making promise')
+    //return setTimeout(resolve, 1000);
+    // What happens if we wrap the resolve callback in setTimeout ?
+    resolve()
+});
+console.log('Printing.....');
+p.then(callbackPromise).then(()=> console.log('chained promise')).then(()=> console.log('last promise'));
+setTimeout(function() {
+    console.log('When will this print????')
+}, 3000);
+Promise.resolve()
+    .then(() => {
+        console.log('resolved promise 1')
+        //return setTimeout(function() {
+        //  console.log('When will this print??')
+        //}, 1000);;
+    })
+    .then(() => {
+        console.log('resolved promise 2')
+    })
+console.log('Finished main task');
+//p.then(callbackPromise).then(()=> console.log('chained promise'));
+Promise.resolve()
+    .then(() => {
+        console.log('resolved promise 3')
+        //return setTimeout(function() {
+        //  console.log('wickeddddddd')
+        //}, 1000);;
+    })
+    .then(() => {
+        console.log('resolved promise 4')
+    })
diff --git a/codeExamples/week2/eventsExample.js b/codeExamples/week2/eventsExample.js
new file mode 100644
index 0000000000000000000000000000000000000000..0ab901d82cc458518697f131a81cf191a9544325
--- /dev/null
+++ b/codeExamples/week2/eventsExample.js
@@ -0,0 +1,16 @@
+//const EventEmitter = require('events');
+const RaiseEvent = require('./raise');
+
+const myEmitter = new RaiseEvent();
+
+//on
+myEmitter.on('Greeting', function(){
+    console.log("I was just greeted!");
+})
+
+myEmitter.on('High Five', function(args){
+    console.log(args);
+})
+
+
+myEmitter.raise();
diff --git a/codeExamples/week2/httpExample.js b/codeExamples/week2/httpExample.js
new file mode 100644
index 0000000000000000000000000000000000000000..72926ce12433e522b0134350fae688a39f399348
--- /dev/null
+++ b/codeExamples/week2/httpExample.js
@@ -0,0 +1,15 @@
+const http = require('http');
+
+const server = http.createServer(function(request, response){
+    if(request.url === '/greeting'){
+        response.write('Hi');
+        
+        response.end();
+    }
+} );//1
+
+server.on('connection', function(socket){
+    console.log("Connected!");
+});
+
+server.listen(5500);
\ No newline at end of file
diff --git a/codeExamples/week2/httpFile.js b/codeExamples/week2/httpFile.js
new file mode 100644
index 0000000000000000000000000000000000000000..60598b4f174c386078b9701e7600ea6de041ff5d
--- /dev/null
+++ b/codeExamples/week2/httpFile.js
@@ -0,0 +1,20 @@
+const http = require('http');
+const fs = require('fs');
+
+const server = http.createServer(function (req, res) {
+    if (req.url === '/sample') {
+        fs.readFile('./SampleWebpage.html', function (err, data) {
+            if (err) {
+                console.log(err);
+            } else {
+                res.writeHead(200, { 'Content-Type': 'text/html' });
+                res.write(data);
+                res.end();
+            }
+
+
+        })
+    }
+});
+
+server.listen(3000);
\ No newline at end of file
diff --git a/codeExamples/week2/index.js b/codeExamples/week2/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..35426ddee767760f1410fa612ed58e34a4c53235
--- /dev/null
+++ b/codeExamples/week2/index.js
@@ -0,0 +1,8 @@
+const modules = require('./add');
+
+let p1 = new modules.Person("Jessica", 35);
+let s1 = new modules.Stu("Amy", 3.5);
+
+console.log(p1.toString());
+
+console.log(s1.toString());
\ No newline at end of file
diff --git a/codeExamples/week2/osExample.js b/codeExamples/week2/osExample.js
new file mode 100644
index 0000000000000000000000000000000000000000..82544204d939df34eeac597d437689dd78e5dc08
--- /dev/null
+++ b/codeExamples/week2/osExample.js
@@ -0,0 +1,7 @@
+const os = require('os');
+
+console.log(os.totalmem());
+console.log(os.freemem());
+
+console.log(os.type());
+console.log(os.uptime());
diff --git a/codeExamples/week2/package-lock.json b/codeExamples/week2/package-lock.json
new file mode 100644
index 0000000000000000000000000000000000000000..a185410bb3563c31b5edd6bcac1f18e8edb8f2c4
--- /dev/null
+++ b/codeExamples/week2/package-lock.json
@@ -0,0 +1,29 @@
+{
+  "name": "week2",
+  "version": "1.0.0",
+  "lockfileVersion": 1,
+  "requires": true,
+  "dependencies": {
+    "ansi-regex": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+      "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
+    },
+    "prompt-sync": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/prompt-sync/-/prompt-sync-4.2.0.tgz",
+      "integrity": "sha512-BuEzzc5zptP5LsgV5MZETjDaKSWfchl5U9Luiu8SKp7iZWD5tZalOxvNcZRwv+d2phNFr8xlbxmFNcRKfJOzJw==",
+      "requires": {
+        "strip-ansi": "^5.0.0"
+      }
+    },
+    "strip-ansi": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+      "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+      "requires": {
+        "ansi-regex": "^4.1.0"
+      }
+    }
+  }
+}
diff --git a/codeExamples/week2/package.json b/codeExamples/week2/package.json
new file mode 100644
index 0000000000000000000000000000000000000000..7a8c0365980a3d0dbe7a59a832f1f11733fc4778
--- /dev/null
+++ b/codeExamples/week2/package.json
@@ -0,0 +1,14 @@
+{
+  "name": "week2",
+  "version": "1.0.0",
+  "description": "",
+  "main": "commandLineAsync.js",
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "author": "",
+  "license": "ISC",
+  "dependencies": {
+    "prompt-sync": "^4.2.0"
+  }
+}
diff --git a/codeExamples/week2/pathExample.js b/codeExamples/week2/pathExample.js
new file mode 100644
index 0000000000000000000000000000000000000000..883d065e24ecb0ee2f47674bc266e39c0bc05b2f
--- /dev/null
+++ b/codeExamples/week2/pathExample.js
@@ -0,0 +1,4 @@
+const path = require('path');
+
+let p = path.parse('/Users/tesla/teaching/summer2020/cmsc389N/cmsc389nsummer2020-student/lectureCodeExamples/week5/node/pathExample.js');
+console.log(p);
\ No newline at end of file
diff --git a/codeExamples/week2/raise.js b/codeExamples/week2/raise.js
new file mode 100644
index 0000000000000000000000000000000000000000..f58a6e3c07a1a3dfeb8b41ecc867640cc4b5c3aa
--- /dev/null
+++ b/codeExamples/week2/raise.js
@@ -0,0 +1,15 @@
+const EventEmitter = require('events');
+
+class RaiseEvent extends EventEmitter{
+
+
+    raise() {
+        //emit events
+        this.emit('Greeting');
+
+        this.emit('High Five', "Down Low", "too slow");
+    }
+}
+
+
+module.exports = RaiseEvent;
diff --git a/lectures/week2/Express Intro.pdf b/lectures/week2/Express Intro.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..1380a6b444f91d0ac7cfd613be050bbcf050ce67
Binary files /dev/null and b/lectures/week2/Express Intro.pdf differ
diff --git a/lectures/week2/Javascript Intro Day 2.pdf b/lectures/week2/Javascript Intro Day 2.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..78ad54c037b2e5eb1f0f92dc36b1914325ba32d7
Binary files /dev/null and b/lectures/week2/Javascript Intro Day 2.pdf differ