diff --git a/03week/pigLatin/index.html b/03week/pigLatin/index.html
new file mode 100644
index 000000000..5ebdea106
--- /dev/null
+++ b/03week/pigLatin/index.html
@@ -0,0 +1,28 @@
+
+
+
+ pig latin
+
+
+
+
+
+
+
+ pig latin translator
+
+
+
+
+
+
+
+
diff --git a/03week/pigLatin/pigLatinGUI.js b/03week/pigLatin/pigLatinGUI.js
new file mode 100644
index 000000000..8bedd1ce1
--- /dev/null
+++ b/03week/pigLatin/pigLatinGUI.js
@@ -0,0 +1,68 @@
+'use strict';
+
+const assert = require('assert');
+const readline = require('readline');
+const rl = readline.createInterface({
+ input: process.stdin,
+ output: process.stdout
+});
+
+
+function pigLatin(str) {
+ let vowels = ['a', 'e', 'i', 'o', 'u'],
+ trimmedWord = str.trim().toLowerCase(),
+ result = trimmedWord.split('');
+
+ if (vowels.includes(trimmedWord.charAt(0))) {
+ return str += 'yay';
+ } else {
+ for (var i = 0; i < trimmedWord.length; i++) {
+ if (!vowels.includes(trimmedWord[i])) {
+ result.push(result.shift());
+ } else {
+ result.push('ay');
+ return result.join('');
+ }
+ }
+ }
+ document.getElementById("pLatin").innerHTML = '';
+ }
+
+
+
+
+
+function getPrompt() {
+ rl.question('word ', (answer) => {
+ console.log( pigLatin(answer) );
+ getPrompt();
+ });
+}
+
+// Tests
+
+if (typeof describe === 'function') {
+
+ describe('#pigLatin()', () => {
+ it('should translate a simple word', () => {
+ assert.equal(pigLatin('car'), 'arcay');
+ assert.equal(pigLatin('dog'), 'ogday');
+ });
+ it('should translate a complex word', () => {
+ assert.equal(pigLatin('create'), 'eatecray');
+ assert.equal(pigLatin('valley'), 'alleyvay');
+ });
+ it('should attach "yay" if word begins with vowel', () => {
+ assert.equal(pigLatin('egg'), 'eggyay');
+ assert.equal(pigLatin('emission'), 'emissionyay');
+ });
+ it('should lowercase and trim word before translation', () => {
+ assert.equal(pigLatin('HeLlO '), 'ellohay');
+ assert.equal(pigLatin(' RoCkEt'), 'ocketray');
+ });
+ });
+} else {
+
+ getPrompt();
+
+}
\ No newline at end of file
diff --git a/03week/pigLatin/reset.css b/03week/pigLatin/reset.css
new file mode 100644
index 000000000..54a64b123
--- /dev/null
+++ b/03week/pigLatin/reset.css
@@ -0,0 +1,128 @@
+html, body, body div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, abbr, address, cite, code, del, dfn, em, img, ins, kbd, q, samp, small, strong, sub, sup, var, b, i, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, figure, footer, header, menu, nav, section, time, mark, audio, video, details, summary {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ font-size: 100%;
+ font-weight: normal;
+ vertical-align: baseline;
+ background: transparent;
+}
+
+article, aside, figure, footer, header, nav, section, details, summary {display: block;}
+
+/* Handle box-sizing while better addressing child elements:
+ https://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/ */
+html {
+ box-sizing: border-box;
+}
+
+*,
+*:before,
+*:after {
+ box-sizing: inherit;
+}
+
+/* consider resetting the default cursor: https://gist.github.com/murtaugh/5247154 */
+
+/* Responsive images and other embedded objects
+*/
+img,
+object,
+embed {max-width: 100%;}
+
+/*
+ Note: keeping IMG here will cause problems if you're using foreground images as sprites.
+ In fact, it *will* cause problems with Google Maps' controls at small size.
+ If this is the case for you, try uncommenting the following:
+
+#map img {
+ max-width: none;
+}
+*/
+
+/* force a vertical scrollbar to prevent a jumpy page */
+html {overflow-y: scroll;}
+
+/* we use a lot of ULs that aren't bulleted.
+ don't forget to restore the bullets within content. */
+ul {list-style: none;}
+
+blockquote, q {quotes: none;}
+
+blockquote:before,
+blockquote:after,
+q:before,
+q:after {content: ''; content: none;}
+
+a {margin: 0; padding: 0; font-size: 100%; vertical-align: baseline; background: transparent;}
+
+del {text-decoration: line-through;}
+
+abbr[title], dfn[title] {border-bottom: 1px dotted #000; cursor: help;}
+
+/* tables still need cellspacing="0" in the markup */
+table {border-collapse: collapse; border-spacing: 0;}
+th {font-weight: bold; vertical-align: bottom;}
+td {font-weight: normal; vertical-align: top;}
+
+hr {display: block; height: 1px; border: 0; border-top: 1px solid #ccc; margin: 1em 0; padding: 0;}
+
+input, select {vertical-align: middle;}
+
+pre {
+ white-space: pre; /* CSS2 */
+ white-space: pre-wrap; /* CSS 2.1 */
+ white-space: pre-line; /* CSS 3 (and 2.1 as well, actually) */
+ word-wrap: break-word; /* IE */
+}
+
+input[type="radio"] {vertical-align: text-bottom;}
+input[type="checkbox"] {vertical-align: bottom;}
+.ie7 input[type="checkbox"] {vertical-align: baseline;}
+.ie6 input {vertical-align: text-bottom;}
+
+select, input, textarea {font: 99% sans-serif;}
+
+table {font-size: inherit; font: 100%;}
+
+small {font-size: 85%;}
+
+strong {font-weight: bold;}
+
+td, td img {vertical-align: top;}
+
+/* Make sure sup and sub don't mess with your line-heights https://gist.github.com/413930 */
+sub, sup {font-size: 75%; line-height: 0; position: relative;}
+sup {top: -0.5em;}
+sub {bottom: -0.25em;}
+
+/* standardize any monospaced elements */
+pre, code, kbd, samp {font-family: monospace, sans-serif;}
+
+/* hand cursor on clickable elements */
+.clickable,
+label,
+input[type=button],
+input[type=submit],
+input[type=file],
+button {cursor: pointer;}
+
+/* Webkit browsers add a 2px margin outside the chrome of form elements */
+button, input, select, textarea {margin: 0;}
+
+/* make buttons play nice in IE */
+button,
+input[type=button] {width: auto; overflow: visible;}
+
+/* scale images in IE7 more attractively */
+.ie7 img {-ms-interpolation-mode: bicubic;}
+
+/* prevent BG image flicker upon hover
+ (commented out as usage is rare, and the filter syntax messes with some pre-processors)
+.ie6 html {filter: expression(document.execCommand("BackgroundImageCache", false, true));}
+*/
+
+/* let's clear some floats */
+.clearfix:before, .clearfix:after { content: "\0020"; display: block; height: 0; overflow: hidden; }
+.clearfix:after { clear: both; }
+.clearfix { zoom: 1; }
\ No newline at end of file
diff --git a/03week/pigLatin/style.css b/03week/pigLatin/style.css
new file mode 100644
index 000000000..67deffcd4
--- /dev/null
+++ b/03week/pigLatin/style.css
@@ -0,0 +1,43 @@
+* {
+ box-sizing: border-box;
+ font-family: 'Roboto', sans-serif;
+ color: #4d4d4d;
+ letter-spacing: .5px;
+ line-height: 190%;
+}
+body {
+ margin: 10%;
+}
+h1 {
+ text-align: center;
+ font-size: 20px;
+ font-weight: 700;
+ padding: 20px;
+}
+main {
+ border: 1px solid #fecfd9;
+ padding: 20px;
+}
+section {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ text-align: center;
+ font-size: 9px;
+ text-transform: uppercase;
+ padding: 20px;
+}
+input[type=text] {
+ display: inline-block;
+ width: 100px;
+ padding: 5px;
+ border: 1px solid #fafafa;
+}
+
+#answer {
+ display: inline-block;
+ width: 21px;
+ height: 21px;
+ text-align: center;
+ font-size: 9px;
+}
\ No newline at end of file
diff --git a/03week/ticTacToe.js b/03week/ticTacToe.js
index 1abf5b900..c78a99c12 100644
--- a/03week/ticTacToe.js
+++ b/03week/ticTacToe.js
@@ -13,6 +13,7 @@ let board = [
];
let playerTurn = 'X';
+let playerTurn = 'O';
function printBoard() {
console.log(' 0 1 2');