├── .github
├── FUNDING.yml
├── ISSUE_TEMPLATE
│ ├── config.yml
│ ├── issue_template.md
│ └── issue_template.yml
├── pull_request_template.md
└── stale.yml
├── .gitignore
├── .prettierrc
├── .vscode
└── settings.json
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE.MD
├── README.md
├── _templates
├── README.md
├── elective.md
├── lesson-v2.md
├── project.md
└── topic-outline.md
├── agile-development
├── intro-to-agile.md
└── scrum.md
├── algorithms
├── approximation-algorithms.md
├── distributed-algorithms.md
├── external-sorting-algorithms.md
├── intro-to-algorithms.md
├── p-versus-np-screenshoots
│ ├── current-consensus.jpg
│ ├── interactive-examples.jpg
│ ├── learning-more.jpg
│ ├── p-np.jpg
│ ├── what-is-p.jpg
│ └── why-does-it-matter.jpg
├── p-versus-np.md
├── parallel-algorithms.md
├── searching.md
└── sorting.md
├── api
├── REST-API.md
├── Screen Shot 2018-10-08 at 7.15.15 PM.png
├── Screen Shot 2018-10-08 at 7.26.01 PM.png
├── Screen Shot 2018-10-08 at 7.31.03 PM.png
├── Screen Shot 2018-10-08 at 7.44.02 PM.png
├── Screen Shot 2018-10-08 at 7.44.12 PM.png
├── Screen Shot 2018-10-08 at 7.44.22 PM.png
├── apirequest.png
├── apis-and-json.md
├── http-request-practice.md
├── intro-to-http.md
├── postman-curl.gif
├── screenshot-restapi
│ ├── delete.png
│ ├── get.png
│ ├── get404.png
│ ├── post.png
│ ├── postman-methods.png
│ └── put.png
└── twilio-api.md
├── application workshops
├── workshop-1.md
└── workshop-2.md
├── best-practice-in-development
├── best-practice-in-client-side-development.md
└── rendering-approaches-web-development.md
├── career
├── building-confidence.md
├── career-exploration.md
├── conflict-resolution.md
├── difficult-workplace-situations.md
├── feedback.md
├── feedback_training_guide.md
├── interviewing
│ ├── README.md
│ ├── negotiating.md
│ ├── non-technical-interviewing-from-a-recruiter.md
│ ├── non-technical-interviewing.md
│ ├── phone-screen-questions.md
│ ├── technical-interviewing.md
│ ├── week-3-whiteboard-challenges.md
│ └── whiteboarding.md
├── linkedin.md
├── networking-career.md
├── resume-writing.md
├── roles-in-tech
│ ├── data-example.jpg
│ ├── data-science.md
│ ├── dev-ops.md
│ ├── developer-advocate.md
│ ├── entrepreneurship.md
│ ├── lifecycle-datascience.png
│ ├── machine-learning.md
│ ├── product-manager.md
│ ├── productmanage.png
│ ├── qa.md
│ ├── roles-in-tech.md
│ ├── sales-engineering.md
│ ├── security-locks.jpg
│ ├── security.md
│ ├── technical-program-manager.md
│ └── technical-writing.md
└── working-and-collaborating-remotely.md
├── chrome-developer-tools
├── chrome-developer-tools.md
└── lab-exercise.md
├── code-challenges
├── Objects.md
├── README.md
├── Week_1
│ ├── Find_All_Anagrams_in_a_String.py
│ └── Reverse_a_String.py
├── Week_10
│ ├── Boolean-to-String-Conversion.js
│ ├── Climbing-Stairs.js
│ ├── Largest-Swap.js
│ └── Nested-Array.js
├── Week_11
│ ├── Find-the-Missing-Number.js
│ ├── Fizz-Buzz.js
│ ├── How-Many-Vowels.js
│ └── Remove-Vowel-from-a-String.js
├── Week_12
│ ├── Find-the-Time.js
│ ├── Trick-or-Treat.js
│ └── Valid-Palindrome.js
├── Week_13
│ ├── Find-Lucky-Integer-in-Array.js
│ ├── Longest-Palindrome-Substring.js
│ ├── Palindrome-Regex.js
│ └── Sort-by-String-Length.js
├── Week_14
│ ├── Converting-Objects-to-Arrays.js
│ ├── Removing-Elements.js
│ ├── String-Cleaning.js
│ └── Switching-Between-Pencils.js
├── Week_15
│ ├── Check-Same-Case.js
│ ├── Remove-Trailing-and-Leading-Zeroes.js
│ └── Short-Long-Short.js
├── Week_16
│ ├── Find-the-Missing-Number.js
│ ├── Format-Number-with-Commas-Separating-Thousands.js
│ ├── Online-Shopping.js
│ └── Return-the-Middle-Characters-of-a-String.js
├── Week_17
│ ├── Assign-Person-to-Occupation.js
│ ├── Is-the-Word-an-Isogram.js
│ └── Lowercase-and-Uppercase-Map.js
├── Week_18
│ ├── Basic-E-Mail-Validation.js
│ ├── Replace-Vowel-with-Another-Character.js
│ └── Zip-It-If-You-Can.js
├── Week_2
│ ├── array_search.js
│ ├── search_and_replace.js
│ ├── string_manipulation.js
│ └── string_manipulation.py
├── Week_3
│ ├── Display_User_Name_in_Greeting.js
│ ├── Display_User_Name_in_Greeting.py
│ ├── HackerRank_Loops.js
│ └── HackerRank_Loops.py
├── Week_4
│ ├── Filter_and_Reduce.js
│ ├── Filter_and_Reduce.py
│ ├── Getting_Started_with HTML_CSS_Python
│ │ └── main.py
│ ├── Getting_Started_with_React_Hello_Component
│ │ ├── README.md
│ │ ├── index.html
│ │ ├── package.json
│ │ ├── public
│ │ │ └── favicon.svg
│ │ ├── src
│ │ │ ├── App.css
│ │ │ ├── App.jsx
│ │ │ └── index.jsx
│ │ ├── tsconfig.json
│ │ └── vite.config.js
│ ├── Map_Practice.js
│ └── Map_Practice.py
├── Week_5
│ ├── Pop_Shift_and_Unshift_Elements.js
│ ├── Pop_Shift_and_Unshift_Elements.py
│ ├── Remove_Duplicates_and_Add_Elements.js
│ ├── Remove_Duplicates_and_Add_Elements.py
│ ├── Reverse_and_Rotate_Array_Elements.js
│ └── Reverse_and_Rotate_Array_Elements.py
├── Week_6
│ ├── Object_Keys_Values_For-Of.js
│ ├── Sort_Some_and_Every.js
│ └── Working_With_Promises
│ │ ├── README.md
│ │ └── Working_with_Promises.js
├── Week_7
│ ├── Remove_Duplicates_from_Array.js
│ ├── Spread_an_Array_into_Another_Array.js
│ └── Ternary_Operator_for_Conditional.js
├── Week_8
│ ├── Jest_Integration_and_Unit_Testing
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── userController.js
│ │ ├── userService.js
│ │ └── vite.config
│ ├── Math_methods_floor_ceil_min_max.js
│ ├── Working_with_Arrays_and_Objects.js
│ └── Working_with_React_Testing_Library
│ │ ├── README.md
│ │ ├── index.html
│ │ ├── package.json
│ │ ├── public
│ │ └── favicon.svg
│ │ ├── src
│ │ ├── App.css
│ │ ├── App.jsx
│ │ └── index.jsx
│ │ ├── tsconfig.json
│ │ └── vite.config.js
├── Week_9
│ ├── Add-Digits.js
│ ├── Find-the-Longest-Word-in-a-String.js
│ ├── Move-Zeros.js
│ ├── Return-the-Sum-of-Two-Numbers.js
│ └── Single-Number.js
├── arrays.md
├── booleans.md
└── string.md
├── coding-interviews
└── readme.md
├── command-line
└── env.md
├── css
├── css-challenge.md
└── media-queries.md
├── data-structures
├── deque.md
├── hash-tables.md
├── intro-to-data-structures.md
├── linked-lists.md
├── queue-screenshots
│ └── queue.png
├── queues.md
├── stack.md
├── stack.png
└── trees.md
├── data-visualization
└── data-viz-assessment.md
├── databases
├── bash
│ ├── bash-scripts.md
│ ├── create_db_sample.sh
│ ├── create_db_sample.sql
│ ├── sample_bash_script.sh
│ └── teardown_db_sample.sh
├── data-modeling-1.md
├── data-modeling-2.md
├── data-models.md
├── database-intro.md
├── install-postgres-with-docker.md
├── installing-postgresql.md
├── sql-1.md
└── sql-2.md
├── datetime
└── datetime.md
├── debugging
└── debugging.md
├── deploying
├── deploying-1-personal-site-to-netflify.md
├── deploying-and-production-ready.md
├── deploying-to-heroku.md
├── deploying-to-render.md
├── general-project-deploying.md
└── screenshots
│ ├── production-1.png
│ ├── production-10.png
│ ├── production-11.png
│ ├── production-2.png
│ ├── production-3.png
│ ├── production-4.png
│ ├── production-5.png
│ ├── production-6.png
│ ├── production-7.png
│ ├── production-8.png
│ ├── production-9.png
│ ├── render-1.png
│ ├── render-2.png
│ ├── render-3.gif
│ ├── render-4.png
│ ├── render-5.png
│ └── render-6.png
├── dev-tools
├── command-line-advanced.md
├── command-line-interface.md
├── dot-profile.md
├── keyboard-shortcuts.md
├── operating-systems.md
├── vim.md
└── vscode.md
├── diversity-inclusion-bias
└── inclusion.md
├── docker
├── docker-architecture.png
└── intro-docker.md
├── electives
├── 1_intro_to_backend.md
├── angular.md
├── data-visualization.md
├── databases
│ ├── database-migrations.md
│ ├── mongo-db.md
│ └── mongoose.md
├── memoization.md
├── mobile-development.md
├── mocha-testing.md
├── oauth
│ ├── authorization.md
│ └── o-auth.md
├── optimization
│ ├── optimization.md
│ ├── optimizing-your-react-node-project.md
│ ├── performance-optimization-javascript.md
│ └── performance-optimization-react.md
├── progressive-web-apps-and-service-workers.md
├── python.md
├── sass.md
└── web-patterns.md
├── express-js
├── express-lab-exercise.md
├── express.md
├── middleware-example.png
└── server-side-project.md
├── functional-programming
└── FP.md
├── git
├── basic-gitignore.png
├── git-version-control-part2.md
├── git-version-control.md
├── github-collaboration.md
├── github-storage.md
└── gitignore.md
├── giving-presentations
└── giving-presentations.md
├── javascript
├── advanced-javascript-resources.md
├── basic-js-practice.md
├── common-functions-cheatsheet.md
├── destructuring.md
├── eslint.md
├── first-js-oop-project.md
├── javascript-1-variables.md
├── javascript-2-array-functions.md
├── javascript-3-conditionals.md
├── javascript-4-loops.md
├── javascript-5-switch.md
├── javascript-6-object-literals.md
├── javascript-7-oop.md
├── javascript-8-regex.md
├── javascript-9-async.md
├── javascript-maps-and-sets.md
├── javascript-modularity.md
├── newer-JS-features.md
├── require-and-import-mini-lesson.md
├── restaurant recommender
│ ├── Heap.py
│ ├── RestaurantRecommender - part1.md
│ ├── RestaurantRecommender-part2.md
│ └── design_yelp.py
├── spread-operator.md
└── week-4-JS-assessment.md
├── machine-learning-systems-generative-ai-models
├── README.md
├── ai-tooling.md
├── machine-learning-systems-generative-ai-modelsachine-learning-large-language-models.md
└── software-engineering-in-the-age-of-ai.md
├── meta
├── false-dead-links.md
└── volunteer-reviewers.md
├── networking-computing
├── README.md
├── how-the-internet-works.md
└── intro-to-dns-ip.md
├── node-js
├── images
│ ├── control-c.jpg
│ ├── download-screen.jpg
│ ├── install-window.jpg
│ ├── js-in-browser.jpg
│ ├── node-repl.jpg
│ ├── node-v.jpg
│ ├── node.jpg
│ ├── npm-init-msg.png
│ ├── npm-init-y-msg.png
│ ├── npm-json.png
│ ├── npm-walkthrough.png
│ ├── server-running.jpg
│ └── which-node.jpg
├── node-installation-without-nvm.md
├── node-js.md
├── node-lab-exercise-part-1.md
└── node-lab-exercise-part-2.md
├── objectives
├── 0.md
├── 1.md
├── 10.md
├── 11.md
├── 2.md
├── 3.md
├── 4.md
├── 5.md
├── 6.md
├── 7.md
├── 8.md
├── 9.md
├── ReadMe.md
└── week-6-assessment.md
├── onboarding
├── YCLA_LessonPlan_v10.pdf
├── asking-good-questions.md
├── ergonomics.md
├── learning-to-learn.md
├── living-in-open-workspaces.md
├── pair-programming.md
├── professionalism.md
├── tech-industry-tips.md
└── time-management.md
├── open-source
├── hackathon.md
└── open-source.md
├── operating-systems
└── hardening.md
├── package-lock.json
├── package.json
├── pair-programming
├── week-1
│ ├── Divs_and_DOM_Manipulation
│ │ ├── README.md
│ │ ├── index.html
│ │ ├── script.js
│ │ └── style.css
│ ├── Modeling-A-Bank-Account
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── package-lock.json
│ │ └── package.json
│ ├── Week-1-PP-Slice-and-Split
│ │ ├── index.js
│ │ ├── package-lock.json
│ │ └── package.json
│ └── first-div
│ │ ├── README.md
│ │ ├── index.html
│ │ └── script.js
├── week-2
│ ├── Command_Line_Interface
│ │ └── README.md
│ ├── JS_DOM_Manipulation
│ │ ├── README.md
│ │ ├── index.html
│ │ ├── script.js
│ │ └── style.css
│ ├── Manipulating_HTML_with_JS
│ │ ├── README.md
│ │ ├── index.html
│ │ ├── script.js
│ │ └── style.css
│ ├── Media_Queries_Exercise
│ │ ├── README.md
│ │ ├── index.html
│ │ ├── script.js
│ │ └── style.css
│ ├── modify-dom
│ │ ├── README.md
│ │ ├── index.html
│ │ └── script.js
│ └── newspaper-list
│ │ ├── README.md
│ │ ├── index.html
│ │ └── script.js
├── week-3
│ ├── How_to_Create_a_Form_and_Validate_an_Input
│ │ ├── README.md
│ │ ├── index.html
│ │ ├── script.js
│ │ └── style.css
│ ├── Object_Literals_Maps_and_Sets.js
│ ├── Practice_Forms_and_CSS_Media_Queries
│ │ ├── README.md
│ │ ├── index.html
│ │ └── style.css
│ ├── forEach_for_while_and_switch_statements.js
│ ├── form-validation
│ │ ├── README.md
│ │ ├── index.html
│ │ └── script.js
│ ├── media-and-forms
│ │ ├── README.md
│ │ ├── index.html
│ │ ├── script.js
│ │ └── style.css
│ └── toggle-button
│ │ ├── README.md
│ │ ├── index.html
│ │ └── script.js
├── week-4
│ ├── button-component
│ │ ├── App.js
│ │ ├── Button.js
│ │ └── README.md
│ ├── hello-component
│ │ ├── App.js
│ │ ├── Hello.js
│ │ └── README.md
│ ├── mini-project-OOP
│ │ ├── README.md
│ │ ├── event.js
│ │ └── index.html
│ └── react-props
│ │ ├── README.md
│ │ ├── index.html
│ │ ├── package.json
│ │ ├── public
│ │ └── favicon.svg
│ │ ├── src
│ │ ├── App.jsx
│ │ └── index.jsx
│ │ ├── tsconfig.json
│ │ └── vite.config.js
├── week-5
│ ├── Counter_App
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── index.html
│ │ ├── package.json
│ │ ├── public
│ │ │ └── favicon.svg
│ │ ├── src
│ │ │ ├── App.css
│ │ │ ├── App.jsx
│ │ │ └── index.jsx
│ │ ├── tsconfig.json
│ │ └── vite.config.js
│ ├── Weather_Forecast_App
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── index.html
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── public
│ │ │ └── favicon.svg
│ │ ├── src
│ │ │ ├── App.css
│ │ │ ├── App.jsx
│ │ │ ├── Weather.jsx
│ │ │ └── index.jsx
│ │ ├── tsconfig.json
│ │ └── vite.config.js
│ ├── fetch-api
│ │ ├── README.md
│ │ ├── index.html
│ │ └── index.js
│ └── react-couter-app
│ │ ├── App.js
│ │ └── README.md
├── week-6
│ ├── SQL_Multiple_Table
│ │ ├── README.md
│ │ ├── department.sql
│ │ ├── employee.sql
│ │ ├── main.sql
│ │ ├── query1.sql
│ │ ├── query2.sql
│ │ ├── query3.sql
│ │ └── query4.sql
│ ├── SQL_Single_Table
│ │ ├── README.md
│ │ ├── employees.sql
│ │ ├── main.sql
│ │ ├── query1.sql
│ │ ├── query2.sql
│ │ ├── query3.sql
│ │ ├── query4.sql
│ │ └── query5.sql
│ ├── expressjs-router
│ │ ├── README.md
│ │ ├── about.html
│ │ ├── index.html
│ │ └── index.js
│ └── nodejs-weather-app
│ │ ├── README.md
│ │ ├── index.ejs
│ │ └── server.mjs
└── week-7
│ ├── Factorial_Calculation_Using_Recursion.js
│ ├── react-express-app
│ ├── react-express.png
│ ├── react-expressjs.md
│ └── starter-code
│ │ └── React-express-starter-code
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── client
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── public
│ │ │ ├── favicon.ico
│ │ │ ├── index.html
│ │ │ ├── logo192.png
│ │ │ ├── logo512.png
│ │ │ ├── manifest.json
│ │ │ └── robots.txt
│ │ └── src
│ │ │ ├── App.css
│ │ │ ├── App.js
│ │ │ ├── App.test.js
│ │ │ ├── index.css
│ │ │ ├── index.js
│ │ │ ├── logo.svg
│ │ │ ├── reportWebVitals.js
│ │ │ └── setupTests.js
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── port-error.png
│ │ └── server
│ │ └── index.js
│ └── react-forms
│ ├── App.js
│ ├── README.md
│ └── RegisterYourCatForm.js
├── personal-brand
└── personal-branding.md
├── practice
├── creating-responding-to-GitHub-issues.md
├── effective-performance-reviews.md
├── participants.md
├── pseudocode.md
└── pull-request-review-practice.md
├── prework
├── 1_VariablesExercise.js
├── 2_ConditionalsExercise.js
├── 3_LoopsExercise.js
├── 4_FunctionsExercise.js
├── 5_ArraysObjectsExercise.js
├── 6_DomExercise.html
├── 7_FunctionsChallenges.js
├── 8_ObjectsChallenges.js
├── codeSamples.js
├── git-udacity-instructions.md
└── prework.md
├── program-prep
├── ethics.md
├── financial-literacy.md
├── navigating-new-codebases.md
├── socioeconomic-differences.md
└── underrepresented-in-tech.md
├── project-example
├── week-1
│ └── bank-account
│ │ ├── phase-1-JS
│ │ ├── README.md
│ │ └── index.js
│ │ └── phase-2-HTML
│ │ ├── README.md
│ │ ├── index.html
│ │ ├── script.js
│ │ └── style.css
├── week-10
│ ├── animal-sighting-tracker.md
│ └── sample-code
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── client
│ │ ├── .gitignore
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── public
│ │ │ ├── favicon.ico
│ │ │ ├── index.html
│ │ │ ├── logo192.png
│ │ │ ├── logo512.png
│ │ │ ├── manifest.json
│ │ │ └── robots.txt
│ │ └── src
│ │ │ ├── App.js
│ │ │ ├── components
│ │ │ ├── Controller.js
│ │ │ ├── addSightingForm
│ │ │ │ ├── AddSightingForm.css
│ │ │ │ └── AddSightingForm.js
│ │ │ ├── detail
│ │ │ │ ├── DetailPage.css
│ │ │ │ └── DetailPage.js
│ │ │ ├── header
│ │ │ │ ├── Header.css
│ │ │ │ └── Header.js
│ │ │ └── sighting
│ │ │ │ ├── SightingList.css
│ │ │ │ └── SightingList.js
│ │ │ ├── index.css
│ │ │ ├── index.js
│ │ │ ├── logo.svg
│ │ │ ├── reportWebVitals.js
│ │ │ └── setupTests.js
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── screenshots
│ │ ├── add-sighting.png
│ │ ├── client.png
│ │ ├── detailpage.png
│ │ ├── erd.png
│ │ ├── homepage.png
│ │ └── server.png
│ │ └── server
│ │ ├── .env.example
│ │ ├── .gitignore
│ │ ├── controller
│ │ ├── individuals.js
│ │ ├── sightings.js
│ │ └── speciesController.js
│ │ ├── db.sql
│ │ ├── db
│ │ ├── db-connection.js
│ │ └── seed.psql
│ │ ├── models
│ │ ├── individuals.js
│ │ ├── sightings.js
│ │ └── species.js
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── routes
│ │ └── routes.js
│ │ └── server.js
├── week-7
│ └── weather-forecast
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── client
│ │ ├── .gitignore
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── public
│ │ │ ├── favicon.ico
│ │ │ ├── index.html
│ │ │ ├── logo192.png
│ │ │ ├── logo512.png
│ │ │ ├── manifest.json
│ │ │ └── robots.txt
│ │ └── src
│ │ │ ├── App.css
│ │ │ ├── App.js
│ │ │ ├── index.css
│ │ │ ├── index.js
│ │ │ ├── reportWebVitals.js
│ │ │ └── setupTests.js
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── server
│ │ ├── .envexample
│ │ ├── index.mjs
│ │ └── package.json
│ │ └── weather.png
└── week-9
│ └── eventonica
│ ├── README.md
│ ├── eventonica-express-backend.md
│ ├── eventonica-postgres.md
│ ├── eventonica-react-ui-advanced.md
│ ├── eventonica-react-ui.md
│ ├── eventonica-sample-code
│ ├── README.md
│ ├── client
│ │ ├── .gitignore
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── public
│ │ │ ├── favicon.ico
│ │ │ ├── index.html
│ │ │ ├── logo192.png
│ │ │ ├── logo512.png
│ │ │ ├── manifest.json
│ │ │ └── robots.txt
│ │ └── src
│ │ │ ├── App.css
│ │ │ ├── App.js
│ │ │ ├── App.test.js
│ │ │ ├── components
│ │ │ ├── Footer.jsx
│ │ │ ├── Header.jsx
│ │ │ ├── UserForm.jsx
│ │ │ ├── UserList.jsx
│ │ │ └── Users.jsx
│ │ │ ├── images
│ │ │ └── calendar.png
│ │ │ ├── index.js
│ │ │ ├── logo.svg
│ │ │ ├── reportWebVitals.js
│ │ │ └── setupTests.js
│ └── server
│ │ ├── .gitignore
│ │ ├── db
│ │ ├── db-connection.js
│ │ └── seed.sql
│ │ ├── index.js
│ │ ├── package-lock.json
│ │ └── package.json
│ ├── eventonica-setup.md
│ ├── eventonica-test-api.md
│ ├── eventonica-test-frontend.md
│ ├── eventonica-test-rtl.md
│ ├── images
│ ├── calendar.png
│ ├── create-table-psql.png
│ ├── eventonica-setup.png
│ ├── get-post-request.png
│ ├── login-psql.png
│ ├── psql-test.png
│ └── put-delete-request.png
│ ├── starter-code
│ ├── eventForm.js
│ ├── events.js
│ ├── index.css
│ ├── mockEvents.js
│ ├── starter-jsx.js
│ └── users.js
│ └── ticketmaster-api.md
├── projects
├── 2023TemplateWithVite
│ ├── README.md
│ ├── client
│ │ ├── .gitignore
│ │ ├── index.html
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── public
│ │ │ └── vite.svg
│ │ ├── src
│ │ │ ├── App.css
│ │ │ ├── App.jsx
│ │ │ ├── assets
│ │ │ │ ├── BlueTechtonicaWord.png
│ │ │ │ ├── bridge.png
│ │ │ │ └── react.svg
│ │ │ ├── components
│ │ │ │ ├── Form.jsx
│ │ │ │ ├── ListStudents.jsx
│ │ │ │ ├── Student.jsx
│ │ │ │ ├── contact.jsx
│ │ │ │ └── error-page.jsx
│ │ │ ├── index.css
│ │ │ ├── main.jsx
│ │ │ └── routes
│ │ │ │ └── Navbar.jsx
│ │ └── vite.config.js
│ └── server
│ │ ├── .env
│ │ ├── .envexample
│ │ ├── .gitignore
│ │ ├── db.sql
│ │ ├── db
│ │ └── db-connection.js
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ └── server.js
├── Eventful-API-test-page
│ ├── .gitignore
│ ├── LICENSE
│ ├── app.js
│ ├── connection.js
│ ├── eventfulAPI.js
│ ├── index.js
│ └── package.json
├── advanced-methods-assessment-10.md
├── auth0-assessment.md
├── blog-app
│ └── README.md
├── contact-app
│ └── README.md
├── data-structures-algorithms-assessment.md
├── data-structures-algorithms-sprint.md
├── db-modeling-assignment.md
├── eventonica-legacy
│ ├── README.md
│ ├── eventonica-part1-objects.md
│ ├── eventonica-part2-testing.md
│ ├── eventonica-part2-ui.md
│ ├── eventonica-part3-react.md
│ ├── eventonica-part4-apis.md
│ ├── eventonica-part5-express-backend.md
│ ├── eventonica-part6-postgres.md
│ ├── eventonica-part7-react.md
│ ├── eventonica-part7-testing.md
│ ├── eventonica-part8-api-testing.md
│ └── starter-code
│ │ ├── calendar.png
│ │ ├── eventonicaSpec.js
│ │ ├── index.css
│ │ ├── index.html
│ │ ├── main.js
│ │ └── models.js
├── eventonica-updated
│ └── README.md
├── final-project
│ ├── README.md
│ ├── data-model-schema.png
│ ├── example-pitch-doc.md
│ ├── planning-your-project.md
│ ├── selecting-your-project.md
│ ├── user-flow.png
│ └── wireframe.png
├── full-stack-assessment.md
├── full-stack-checklist.md
├── js-html-games.md
├── kickball-signups-project.md
├── mailing-list-rest-api.md
├── mern-pern-project.md
├── minimal-api-project.md
├── mongo-assessment.md
├── node-http-exercise
│ ├── node-http-exercise.md
│ └── node-http-server-assignment.postman_collection.json
├── pern-contact-list-app.md
├── pern-game-app.md
├── pern-weather-app.md
├── portfolio
│ ├── Create-repo-no-README-no-.gitignore.png
│ ├── portfolio-webpage-1.md
│ ├── portfolio-webpage-2.md
│ └── portfolio-webpage-3.md
├── pr-screenshot
│ ├── pr-dommanipulation1.png
│ ├── pr-dommanipulation2.png
│ ├── pr-dommanipulation3.png
│ ├── pr-example-1.png
│ ├── pr-example-2.png
│ ├── pr-example-3.png
│ ├── pr-url.png
│ ├── pr1.png
│ ├── pr2-branch.png
│ ├── pr3-commit.png
│ ├── pr4-push.png
│ ├── pr5.png
│ ├── pr6.png
│ ├── pr7.png
│ └── pr8.png
├── react-assessment.md
├── react-game.md
├── react-tweeter.md
├── recipe-page
│ ├── phase-1-html-prompt.md
│ ├── phase-2-css-prompt.md
│ ├── phase-3-bootstrap-prompt.md
│ ├── phase-4-DOM-Manipulation.md
│ └── screenshots
│ │ ├── Screen Shot 2018-01-17 at 3.05.48 PM.png
│ │ ├── after-google-font-import.png
│ │ ├── background-color.png
│ │ ├── blue-blurb.png
│ │ ├── change-header-colors.png
│ │ ├── complete.png
│ │ ├── constrained-description.png
│ │ ├── copy-font-code.png
│ │ ├── float-left-left.png
│ │ ├── float-left-right.png
│ │ ├── get-font-embeded-code.png
│ │ ├── get-font.png
│ │ ├── git-status-static-folder.png
│ │ ├── google-font-monoton.png
│ │ ├── google-font-selection-expanded.png
│ │ ├── google-font-selection.png
│ │ ├── intended_layout.png
│ │ ├── step3-title.png
│ │ ├── step4-blurb.png
│ │ ├── step5-ingredients.png
│ │ ├── step6-instructions.png
│ │ ├── step7-image.png
│ │ ├── step7-photo-credit.png
│ │ └── step8-other-recipes.png
├── rest-api-project.md
├── submitting-work.md
├── take-home-problems
│ ├── backend.md
│ └── frontend.md
├── utils-js.md
├── weather-app.md
├── week-1-worksheet.md
└── week8GameREADME.md
├── react-js
├── README.md
├── advanced-routing-navigation.md
├── class-based-components
│ ├── react-part-1-intro.md
│ ├── react-part-2-component-state.md
│ ├── react-part-3-component-hierarchies.md
│ └── react-part4-full-apps.md
├── quizzes
│ ├── answerkeys
│ │ └── passingprops.md
│ └── passingprops
│ │ ├── .eslintrc.cjs
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── index.html
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── public
│ │ └── vite.svg
│ │ ├── src
│ │ ├── App.css
│ │ ├── App.jsx
│ │ ├── assets
│ │ │ └── react.svg
│ │ ├── components
│ │ │ ├── form.jsx
│ │ │ └── message.jsx
│ │ ├── index.css
│ │ └── main.jsx
│ │ └── vite.config.js
├── react-hooks.md
├── react-local-vite.md
├── react-part-1-intro.md
├── react-part-2-props.md
├── react-part-3-state.md
├── react-part-4-component-hierarchies.md
├── react-part-5-full-apps.md
├── react-routing-forms.md
├── redux-state-management.md
└── styling-react.md
├── reading-and-writing-documentation
└── documentation.md
├── recursion
├── pnr-hierarchy.png
├── recursion-bear.jpg
└── recursion.md
├── refactoring
└── refactoring.md
├── runtime-complexity
├── 34_21-FibonacciBlocks.png
├── README.md
├── index.html
├── package.json
├── runtime-complexity.md
├── runtime.js
├── runtime1-analyzing.js
├── runtime2-comparisions.js
├── runtime3-solving.md
└── yarn.lock
├── security
└── web-security.md
├── seo
└── seo.md
├── solving-coding-challenges
├── pseudo-code.md
└── solving-coding-challenges.md
├── testing-and-tdd
├── compared-testing-frameworks.md
├── enzyme-testing.md
├── integration-testing.md
├── jasmine-pair-activity.js
├── jasmine-testing.md
├── jest.md
├── mocking-and-abstraction.md
├── react-testing-jest-and-RTL.md
├── testing-and-tdd.md
├── testing-mindset.md
└── vitest.md
├── ui-ux-design
└── ui-ux-design.md
├── underrepresented-in-tech-resources
├── resources-adhd.md
└── underrepresented-in-tech-India.md
├── web
├── BEM-style.md
├── accessibility.md
├── accessibility
│ └── aria.md
├── ajax.md
├── bootstrap.md
├── css-part-2.md
├── css.md
├── html-forms.md
├── html.md
├── jquery-programming-fundamentals
│ ├── index.html
│ └── static
│ │ └── js
│ │ └── myScript.js
├── jquery.md
├── js-dom-methods-walkthrough
│ ├── index.html
│ └── static
│ │ └── script.js
├── js-dom-methods.md
├── media-queries.md
└── reset-css.md
└── writing-readable-code
└── writing-readable-code.md
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | blank_issues_enabled: false
2 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | **.DS_STORE
2 | **.DS_Store
3 | .idea
4 | **node_modules/
5 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "tabWidth": 2,
3 | "useTabs": false,
4 | "trailingComma": "none",
5 | "proseWrap": "preserve",
6 | "overrides": [
7 | {
8 | "files": "*.md",
9 | "options": {
10 | "singleQuote": true
11 | }
12 | }
13 | ]
14 | }
15 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "liveServer.settings.port": 5501
3 | }
4 |
--------------------------------------------------------------------------------
/algorithms/p-versus-np-screenshoots/current-consensus.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/algorithms/p-versus-np-screenshoots/current-consensus.jpg
--------------------------------------------------------------------------------
/algorithms/p-versus-np-screenshoots/interactive-examples.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/algorithms/p-versus-np-screenshoots/interactive-examples.jpg
--------------------------------------------------------------------------------
/algorithms/p-versus-np-screenshoots/learning-more.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/algorithms/p-versus-np-screenshoots/learning-more.jpg
--------------------------------------------------------------------------------
/algorithms/p-versus-np-screenshoots/p-np.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/algorithms/p-versus-np-screenshoots/p-np.jpg
--------------------------------------------------------------------------------
/algorithms/p-versus-np-screenshoots/what-is-p.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/algorithms/p-versus-np-screenshoots/what-is-p.jpg
--------------------------------------------------------------------------------
/algorithms/p-versus-np-screenshoots/why-does-it-matter.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/algorithms/p-versus-np-screenshoots/why-does-it-matter.jpg
--------------------------------------------------------------------------------
/api/Screen Shot 2018-10-08 at 7.15.15 PM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/api/Screen Shot 2018-10-08 at 7.15.15 PM.png
--------------------------------------------------------------------------------
/api/Screen Shot 2018-10-08 at 7.26.01 PM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/api/Screen Shot 2018-10-08 at 7.26.01 PM.png
--------------------------------------------------------------------------------
/api/Screen Shot 2018-10-08 at 7.31.03 PM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/api/Screen Shot 2018-10-08 at 7.31.03 PM.png
--------------------------------------------------------------------------------
/api/Screen Shot 2018-10-08 at 7.44.02 PM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/api/Screen Shot 2018-10-08 at 7.44.02 PM.png
--------------------------------------------------------------------------------
/api/Screen Shot 2018-10-08 at 7.44.12 PM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/api/Screen Shot 2018-10-08 at 7.44.12 PM.png
--------------------------------------------------------------------------------
/api/Screen Shot 2018-10-08 at 7.44.22 PM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/api/Screen Shot 2018-10-08 at 7.44.22 PM.png
--------------------------------------------------------------------------------
/api/apirequest.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/api/apirequest.png
--------------------------------------------------------------------------------
/api/postman-curl.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/api/postman-curl.gif
--------------------------------------------------------------------------------
/api/screenshot-restapi/delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/api/screenshot-restapi/delete.png
--------------------------------------------------------------------------------
/api/screenshot-restapi/get.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/api/screenshot-restapi/get.png
--------------------------------------------------------------------------------
/api/screenshot-restapi/get404.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/api/screenshot-restapi/get404.png
--------------------------------------------------------------------------------
/api/screenshot-restapi/post.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/api/screenshot-restapi/post.png
--------------------------------------------------------------------------------
/api/screenshot-restapi/postman-methods.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/api/screenshot-restapi/postman-methods.png
--------------------------------------------------------------------------------
/api/screenshot-restapi/put.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/api/screenshot-restapi/put.png
--------------------------------------------------------------------------------
/career/roles-in-tech/data-example.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/career/roles-in-tech/data-example.jpg
--------------------------------------------------------------------------------
/career/roles-in-tech/lifecycle-datascience.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/career/roles-in-tech/lifecycle-datascience.png
--------------------------------------------------------------------------------
/career/roles-in-tech/productmanage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/career/roles-in-tech/productmanage.png
--------------------------------------------------------------------------------
/career/roles-in-tech/security-locks.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/career/roles-in-tech/security-locks.jpg
--------------------------------------------------------------------------------
/code-challenges/Week_1/Find_All_Anagrams_in_a_String.py:
--------------------------------------------------------------------------------
1 | # An anagram is a word formed by rearranging the letters of a different word using all the original letters exactly once. The function is given two strings: s - to search in, p - a p word. Find the starting indexes of anagrams of p among substrings of the given s.
2 |
3 | # Examples
4 | # findAnagrams("cbaebabacd", "abc") ➞ [0, 6]
5 | # // Anagrams: "cba", "bac"
6 |
7 | # findAnagrams("abab", "ab") ➞ [0, 1, 2]
8 | # // Anagrams: "ab", "ba", "ab"
9 |
--------------------------------------------------------------------------------
/code-challenges/Week_1/Reverse_a_String.py:
--------------------------------------------------------------------------------
1 | # Reverse the provided string and return the reversed string. For example, "hello" should become "olleh".
2 |
3 | # Examples
4 | # reverseString("hello") should return a string.
5 | # reverseString("hello") should return the string olleh.
6 | # reverseString("Howdy") should return the string ydwoH.
7 | # reverseString("Greetings from Earth") should return the string htraE morf sgniteerG.
8 |
--------------------------------------------------------------------------------
/code-challenges/Week_10/Boolean-to-String-Conversion.js:
--------------------------------------------------------------------------------
1 | /*
2 | Implement a function which will convert the given boolean value into its string representation.
3 |
4 | Example: Example:
5 | Input: boolean false Input: boolean true
6 | Output: "false" Output: “true”
7 |
8 | */
9 |
--------------------------------------------------------------------------------
/code-challenges/Week_10/Climbing-Stairs.js:
--------------------------------------------------------------------------------
1 | /*
2 | You are climbing a staircase. It takes n steps to reach the top. Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?
3 |
4 | Example 1:
5 | Input: n = 2
6 | Output: 2
7 | Explanation: There are 2 ways to the top.
8 | 1. 1 step + 1 step
9 | 2. 2 steps
10 |
11 |
12 | Example 2:
13 | Input: n = 3
14 | Output: 3
15 | Explanation: There are 3 ways to the top.
16 | 1. 1 step + 1 step + 1 step
17 | 2. 1 step + 2 steps
18 | 3. 2 steps + 1 step
19 | */
20 |
--------------------------------------------------------------------------------
/code-challenges/Week_10/Largest-Swap.js:
--------------------------------------------------------------------------------
1 | /*
2 | Largest Swap
3 | Given a positive integer, find the largest number that could be generated by swapping only two digits at most once.
4 |
5 | Example 1:
6 | Input: 2736
7 | Output : 7236
8 | Explanation:
9 | If we swap the number 2 and the number
10 | 7 then the generated number would be
11 | the largest number.
12 |
13 | Example 2:
14 | Input : 432
15 | Output : 432
16 | Explanation:Here, no swap is required. The given number is already the largest.
17 | */
18 |
--------------------------------------------------------------------------------
/code-challenges/Week_10/Nested-Array.js:
--------------------------------------------------------------------------------
1 | /*
2 | Create a function that returns true if the first array can be nested inside the second and false otherwise.
3 | arr1 can be nested inside arr2 if:
4 | arr1's min is greater than arr2's min.
5 | arr1's max is less than arr2's max.
6 | Examples
7 | canNest([1, 2, 3, 4], [0, 6]) ➞ true
8 |
9 | canNest([3, 1], [4, 0]) ➞ true
10 |
11 | canNest([9, 9, 8], [8, 9]) ➞ false
12 |
13 | canNest([1, 2, 3, 4], [2, 3]) ➞ false
14 |
15 | */
16 |
--------------------------------------------------------------------------------
/code-challenges/Week_11/Find-the-Missing-Number.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Create a function that takes an array of numbers between 1 and 10 (excluding one number) and returns the missing number. The array of numbers will be unsorted (not in order). Only one number will be missing.
4 |
5 | Examples
6 | missingNum([1, 2, 3, 4, 6, 7, 8, 9, 10]) ➞ 5
7 | missingNum([7, 2, 3, 6, 5, 9, 1, 4, 8]) ➞ 10
8 | missingNum([10, 5, 1, 2, 4, 6, 8, 3, 9]) ➞ 7
9 |
10 | */
11 |
--------------------------------------------------------------------------------
/code-challenges/Week_11/Fizz-Buzz.js:
--------------------------------------------------------------------------------
1 | // Write a short program that prints each number from 1 to 100 on a new line. For numbers which are multiples of both 3 and 5, print "FizzBuzz" instead of the number.
2 |
3 | // Example 1:
4 | // Input: n = 3
5 | // Output: [1 2 Fizz]
6 |
7 | // Example 2:
8 | // Input: n = 5
9 | // Output: [1 2 Fizz 4 Buzz]
10 |
11 | // Example 3:
12 | // Input: n = 19
13 | // Output: [1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19 Buzz]
14 |
--------------------------------------------------------------------------------
/code-challenges/Week_11/Remove-Vowel-from-a-String.js:
--------------------------------------------------------------------------------
1 | // Given an array arr[] of size N-1 with integers in the range of [1, N], the task is to find the missing number from the first N integers. There are no duplicates in the list.
2 |
3 | // Example 1:
4 | // Input: arr[] =
5 | // {1, 2, 4, 6, 3, 7, 8}, N = 8
6 | // Output: 5
7 | // Explanation: The missing number between 1 to 8 is 5
8 |
9 | // Example 2:
10 | // Input: arr[] = {1, 2, 3, 5}, N = 5
11 | // Output: 4
12 | // Explanation: The missing number between 1 to 5 is 4
13 |
--------------------------------------------------------------------------------
/code-challenges/Week_12/Find-the-Time.js:
--------------------------------------------------------------------------------
1 | /*
2 | The time has a format: hours:minutes. Both given hours and minutes will always have two digits, like 09:00.
3 |
4 | Make a regex to find time in the string: Breakfast at 09:00 in the room 123:456. In this task there’s no need to check time correctness yet, so 25:99 can also be a valid result. The regex should not match 123:456. Take your time with this problem. You will be learning how to use a new syntax: regular expression.
5 |
6 | Example 1
7 | Input: I will have lunch at 12:00pm today at 925 Restaurant.
8 | Output: 12:00
9 |
10 | Example 2
11 | Input: Their daughter was born at 03:00am at 55 Melbourne Dr
12 | Output: 03:00
13 | */
14 |
--------------------------------------------------------------------------------
/code-challenges/Week_12/Trick-or-Treat.js:
--------------------------------------------------------------------------------
1 | /*
2 | Halloween is the time of year when youth prepare for tricks or treats! Create a function that accepts a Date object and returns true if it's Halloween (October 31st) and false otherwise. Keep in mind JavaScript's Date month is 0 based, meaning October is the 9th month while January is 0.
3 |
4 | Examples:
5 | timeForTrickOrTreat(new Date(2013, 9, 31)) ➞ true
6 | timeForTrickorTreat(new Date(2013, 0, 23)) ➞ false
7 | timeForTrickorTreat(new Date(3000, 9, 31)) ➞ true
8 |
9 | */
10 |
--------------------------------------------------------------------------------
/code-challenges/Week_12/Valid-Palindrome.js:
--------------------------------------------------------------------------------
1 | /*
2 | A phrase is a palindrome if, after converting all uppercase letters into lowercase letters and removing all non-alphanumeric characters, it reads the same forward and backward. Alphanumeric characters include letters and numbers. Given a string s, return true if it is a palindrome, or false otherwise.
3 |
4 | Example 1:
5 | Input: s = "A man, a plan, a canal: Panama"
6 | Output: true
7 | Explanation: "amanaplanacanalpanama" is a palindrome.
8 |
9 | Example 2:
10 | Input: s = "race a car"
11 | Output: false
12 | Explanation: "raceacar" is not a palindrome.
13 |
14 | Example 3:
15 | Input: s = " "
16 | Output: true
17 | Explanation: s is an empty string "" after removing non-alphanumeric characters.
18 | Since an empty string reads the same forward and backward, it is a palindrome.
19 |
20 | */
21 |
--------------------------------------------------------------------------------
/code-challenges/Week_13/Find-Lucky-Integer-in-Array.js:
--------------------------------------------------------------------------------
1 | /*
2 | Given an array of integers arr, a lucky integer is an integer that has a frequency in the array equal to its value. Return the largest lucky integer in the array. If there is no lucky integer return -1.
3 |
4 | Example 1:
5 | Input: arr = [2,2,3,4]
6 | Output: 2
7 | Explanation: The only lucky
8 | number in the array is 2 because frequency[2] == 2.
9 |
10 | Example 2:
11 | Input: arr = [1,2,2,3,3,3]
12 | Output: 3
13 | Explanation: 1, 2 and 3 are all lucky numbers, return the largest of them.
14 |
15 | Example 3:
16 | Input: arr = [2,2,2,3,3]
17 | Output: -1
18 | Explanation: There are no lucky numbers in the array.
19 | */
20 |
--------------------------------------------------------------------------------
/code-challenges/Week_13/Longest-Palindrome-Substring.js:
--------------------------------------------------------------------------------
1 | /*
2 | Given a string s, return the longest palindromic substring in s. A substring is a contiguous non-empty sequence of characters within a string.
3 |
4 | Example 1:
5 | Input: s = "babad"
6 | Output: "bab"
7 | Explanation: "aba" is also a valid answer.
8 |
9 | Example 2:
10 | Input: s = "cbbd"
11 | Output: "bb"
12 | */
13 |
--------------------------------------------------------------------------------
/code-challenges/Week_13/Palindrome-Regex.js:
--------------------------------------------------------------------------------
1 | /*
2 | A palindrome is a word or sentence that’s spelled the same way both forward and backward, ignoring punctuation, case, and spacing. Return true if the given string is a palindrome. Otherwise, return false. You should be able to pass strings with varying formats, such as “racecar”, “RaceCar”, and “race CAR” among others such as when the pattern includes special characters. Recall your new syntax: regular expression.
3 |
4 | Example 1:
5 | Input: “1 eye for of 1 eye.”
6 | Output: False
7 |
8 |
9 | Example 2:
10 | Input: “0_0 (: /-\ :) 0–0”
11 | Output: true
12 | */
13 |
--------------------------------------------------------------------------------
/code-challenges/Week_13/Sort-by-String-Length.js:
--------------------------------------------------------------------------------
1 | /*
2 | Create a function that returns an array of strings sorted by length in ascending order. Strings should have unique lengths (don't worry about comparing two strings with identical length).
3 | Return an empty array if the input array is empty.
4 |
5 | sortByLength(["a", "ccc", "dddd", "bb"]) ➞ ["a", "bb", "ccc", "dddd"]
6 | sortByLength(["apple", "pie", "shortcake"]) ➞ ["pie", "apple", "shortcake"]
7 | sortByLength(["may", "april", "september", "august"]) ➞ ["may", "april", "august", "september"]
8 | sortByLength([]) ➞ []
9 |
10 | */
11 |
--------------------------------------------------------------------------------
/code-challenges/Week_14/Converting-Objects-to-Arrays.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | This may look familiar, it was your problem from Week 12 - Friday. If you were OOO that Friday, so I’ve moved it here for you to solve. If you’ve submitted this during Week 12, share that link with me.
4 |
5 | Given an array of objects and the task is to convert the object keys to an array with the help of JavaScript. Convert an object into a new array which consists of all the keys in sequential order.
6 |
7 | Example:
8 | Input: let myObj = {
9 | name: "your name",
10 | address: "your address",
11 | age: "your Age",
12 | };
13 | Output: ["name", "address", "age"]
14 |
15 | */
16 |
--------------------------------------------------------------------------------
/code-challenges/Week_14/Removing-Elements.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Take an array and remove every second element from the array. Always keep the first element and start removing with the next element. There are no empty arrays.
4 |
5 | Example:
6 | Input: ["Keep", "Remove", "Keep", "Remove", "Keep", ...]
7 | Output: ["Keep", "Keep", "Keep", ...]
8 |
9 | */
10 |
--------------------------------------------------------------------------------
/code-challenges/Week_14/String-Cleaning.js:
--------------------------------------------------------------------------------
1 | /*
2 | Your boss decided to save money by purchasing some cut-rate optical character recognition software for scanning in the text of old novels to your database. At first it seems to capture words okay, but you quickly notice that it throws in a lot of numbers at random places in the text. Your harried co-workers are looking to you for a solution to take this garbled text and remove all of the numbers. Your program will take in a string and clean out all numeric characters, and return a string with spacing and special characters ~#$%^&!@*():;"'.,? all intact.
3 |
4 | Example 1 Example 2 Example 3
5 | Input: '! !' Input:'123456789' Input: 'This looks5 grea8t!'
6 | Output: '! !' Output: '' Output: 'This looks great!'
7 |
8 | */
9 |
--------------------------------------------------------------------------------
/code-challenges/Week_15/Check-Same-Case.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Write a function that will check if two given characters are the same case. If either of the characters is not a letter, return -1. If both characters are the same case, return 1. If both characters are letters, but not the same case, return 0.
4 |
5 | Examples
6 | 'a' and 'g' returns 1 'A' and 'C' returns 1 'b' and 'G' returns 0
7 | 'B' and 'g' returns 0 '0' and '?' returns -1
8 |
9 |
10 | */
11 |
--------------------------------------------------------------------------------
/code-challenges/Week_15/Remove-Trailing-and-Leading-Zeroes.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Create a function that takes in a number as a string n and returns the number without trailing and leading zeros. If you get a number with .0 on the end, return the integer value (e.g. return "4" rather than "4.0"). If the number is 0, 0.0, 000, 00.00, etc... return "0". Return a string.
4 |
5 | Trailing Zeros are the zeros after a decimal point which don't affect the value (e.g. the last three zeros in 3.4000 and 3.04000).
6 |
7 | Leading Zeros are the zeros before a whole number which don't affect the value (e.g. the first three zeros in 000234 and 000230).
8 |
9 | Examples
10 | removeLeadingTrailing("230.000") ➞ "230"
11 |
12 | removeLeadingTrailing("00402") ➞ "402"
13 |
14 | removeLeadingTrailing("03.1400") ➞ "3.14"
15 |
16 | removeLeadingTrailing("30") ➞ "30"
17 |
18 | */
19 |
--------------------------------------------------------------------------------
/code-challenges/Week_15/Short-Long-Short.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Given 2 strings, a and b, return a string of the form short+long+short, with the shorter string on the outside and the longer string on the inside. The strings will not be the same length, but they may be empty (zero length ). The length of string is not always the same as the number of characters
4 |
5 | Example 1 Example 2
6 | Input: ("1", "22") Input: ("22", "1")
7 | Output: "1221" Output: "1221"
8 |
9 |
10 | */
11 |
--------------------------------------------------------------------------------
/code-challenges/Week_16/Find-the-Missing-Number.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Create a function that takes an array of numbers between 1 and 10 (excluding one number) and returns the missing number. The array of numbers will be unsorted (not in order). Only one number will be missing.
4 |
5 | Examples
6 | missingNum([1, 2, 3, 4, 6, 7, 8, 9, 10]) ➞ 5
7 | missingNum([7, 2, 3, 6, 5, 9, 1, 4, 8]) ➞ 10
8 | missingNum([10, 5, 1, 2, 4, 6, 8, 3, 9]) ➞ 7
9 |
10 | */
11 |
--------------------------------------------------------------------------------
/code-challenges/Week_16/Format-Number-with-Commas-Separating-Thousands.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Create a function that takes a number as an argument and returns a string formatted to separate thousands. You can expect a valid number for all test cases.
4 |
5 | Examples
6 | formatNum(1000) ➞ "1,000"
7 | formatNum(100000) ➞ "100,000"
8 | formatNum(20) ➞ "20"
9 |
10 | */
11 |
--------------------------------------------------------------------------------
/code-challenges/Week_16/Online-Shopping.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Create a function that determines whether a shopping order is eligible for free shipping. An order is eligible for free shipping if the total cost of items purchased exceeds $50.00. Ignore tax or additional fees when calculating the total order cost.
4 |
5 | Examples
6 | freeShipping({ "Shampoo": 5.99, "Rubber Ducks": 15.99 }) ➞ false
7 |
8 | freeShipping({ "Flatscreen TV": 399.99 }) ➞ true
9 |
10 | freeShipping({ "Monopoly": 11.99, "Secret Hitler": 35.99, "Bananagrams": 13.99 }) ➞ true
11 |
12 | */
13 |
--------------------------------------------------------------------------------
/code-challenges/Week_16/Return-the-Middle-Characters-of-a-String.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Create a function that takes a string and returns the middle character(s). If the word's length is odd, return the middle character. If the word's length is even, return the middle two characters. All test cases contain a single word (as a string).
4 |
5 | Examples
6 | getMiddle("test") ➞ "es"
7 | getMiddle("testing") ➞ "t"
8 | getMiddle("middle") ➞ "dd"
9 | getMiddle("A") ➞ "A"
10 |
11 |
12 | */
13 |
--------------------------------------------------------------------------------
/code-challenges/Week_17/Assign-Person-to-Occupation.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | You have two arrays. One shows the names of the people names, while the other shows their occupation jobs. Your task is to create an object displaying each person to their respective occupation. The two arrays have the same length. The index of a name in the names array is the same as the index of the person's job in the jobs array, as shown in the table above.
4 |
5 | Names: Annie Steven Lisa Osman
6 | Jobs: Teacher Engineer Doctor Cashier
7 |
8 | Example
9 | const names = ["Dennis", "Vera", "Mabel", "Annette", "Sussan"]
10 | const jobs = ["Butcher", "Programmer", "Doctor", "Teacher", "Lecturer"]
11 |
12 | assignPersonToJob(names, jobs) ➞ {
13 | Dennis: "Butcher",
14 | Vera: "Programmer",
15 | Mabel: "Doctor",
16 | Annette: "Teacher",
17 | Sussan: "Lecturer"
18 | }
19 |
20 |
21 | */
22 |
--------------------------------------------------------------------------------
/code-challenges/Week_17/Is-the-Word-an-Isogram.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | An isogram is a word that has no duplicate letters. Create a function that takes a string and returns either true or false depending on whether or not it's an "isogram". Ignore letter case (should not be case sensitive). All test cases contain valid one word strings.
4 |
5 | Examples
6 | isIsogram("Algorism") ➞ true
7 | isIsogram("PasSword") ➞ false // Not case sensitive.
8 | isIsogram("Consecutive") ➞ false
9 |
10 |
11 | */
12 |
--------------------------------------------------------------------------------
/code-challenges/Week_17/Lowercase-and-Uppercase-Map.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Write a function that creates an object with each (key, value) pair being the (lower case, upper case) versions of a letter, respectively. All of the letters in the input list will always be lowercase.
4 |
5 | Examples
6 | mapping(["p", "s"]) ➞ { "p": "P", "s": "S" }
7 | mapping(["a", "b", "c"]) ➞ { "a": "A", "b": "B", "c": "C" }
8 | mapping(["a", "v", "y", "z"]) ➞ { "a": "A", "v": "V", "y": "Y", "z": "Z" }
9 |
10 |
11 | */
12 |
--------------------------------------------------------------------------------
/code-challenges/Week_18/Basic-E-Mail-Validation.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Create a function that accepts a string, checks if it's a valid email address and returns either true or false, depending on the evaluation. Do not solve this problem with RegEx.
4 |
5 | The string must contain an @ character.
6 | The string must contain a . character.
7 | The @ must have at least one character in front of it.
8 | e.g. "e@edabit.com" is valid while "@edabit.com" is invalid.
9 | The . and the @ must be in the appropriate places.
10 | e.g. "hello.email@com" is invalid while "john.smith@email.com" is valid.
11 | If the string passes the above tests, it's considered a valid email address.
12 |
13 | Examples
14 | validateEmail("@gmail.com") ➞ false
15 | validateEmail("hello.gmail@com") ➞ false
16 | validateEmail("gmail") ➞ false
17 | validateEmail("hello@gmail") ➞ false
18 | validateEmail("hello@edabit.com") ➞ true
19 |
20 |
21 | */
22 |
--------------------------------------------------------------------------------
/code-challenges/Week_18/Replace-Vowel-with-Another-Character.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Create a function that takes a string and replaces the vowels with another character. The input will always be in lowercase.
4 |
5 | a = 1 e = 2 i = 3 o = 4 u = 5
6 |
7 | Examples
8 | replaceVowel("karachi") ➞ "k1r1ch3"
9 | replaceVowel("chembur") ➞ "ch2mb5r"
10 | replaceVowel("khandbari") ➞ "kh1ndb1r3"
11 |
12 |
13 | */
14 |
--------------------------------------------------------------------------------
/code-challenges/Week_18/Zip-It-If-You-Can.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | You are given an array of women and an array of men. Return "sizes don't match" if the two arrays have different sizes. If the sizes match, return an array of pairs, with the first woman paired with the first man, second woman paired with the second man, etc.
4 |
5 | Examples
6 | zipIt(["Elise", "Mary"], ["John", "Rick"])
7 | ➞ [["Elise", "John"], ["Mary", "Rick"]]
8 |
9 | zipIt(["Ana", "Amy", "Lisa"], ["Bob", "Josh"])
10 | ➞ "sizes don't match"
11 |
12 | zipIt(["Ana", "Amy", "Lisa"], ["Bob", "Josh", "Tim"])
13 | ➞ [["Ana", "Bob"], ["Amy", "Josh"],["Lisa", "Tim"]]
14 |
15 | */
16 |
--------------------------------------------------------------------------------
/code-challenges/Week_2/array_search.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | You are given an array of integers arr and a target element target. Your task is to implement a function findLastIndex(arr, target) that returns the last index at which the target element appears in the array. If the target element is not present in the array, the function should return -1.
4 |
5 | Examples:
6 | console.log(findLastIndex([1, 2, 3, 4, 5, 2], 2)); // Output: 5
7 | console.log(findLastIndex([10, 20, 30, 40, 50], 25)); // Output: -1
8 | console.log(findLastIndex([5, 10, 15, 20, 10, 25], 10)); // Output: 4
9 | console.log(findLastIndex([1, 2, 3, 4, 5], 6)); // Output: 4
10 |
11 | */
12 |
--------------------------------------------------------------------------------
/code-challenges/Week_2/string_manipulation.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | You are given a string inputStr containing lowercase letters and a target substring targetStr. Your task is to implement a function findTargetIndex(inputStr, targetStr) that returns the starting index of the first occurrence of targetStr in inputStr. If targetStr is not found in inputStr, the function should return -1.
4 |
5 |
6 | Examples:
7 | console.log(findTargetIndex("hello world", "lo")); // Output: 3
8 | console.log(findTargetIndex("programming", "abc")); // Output: -1
9 | console.log(findTargetIndex("javascript", "script")); // Output: 4
10 | console.log(findTargetIndex("challenge", "len")); // Output: -1
11 |
12 | */
13 |
--------------------------------------------------------------------------------
/code-challenges/Week_3/Display_User_Name_in_Greeting.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Prompt a user for their name and then display a greeting message that repeats the name a specified number of times. Practice using concat, join, and repeat.
4 |
5 | You may also need some of the following (but not required):
6 | - parseInt
7 | - isNaN
8 | - new Array()
9 |
10 | */
11 |
12 | // Do not remove the below line
13 | const prompt = require("prompt-sync")();
14 | // Do not remove the above line
15 |
16 | function askForNameAndRepeat() {
17 | // Convert the repeat count to an integer if it's not already
18 | // Check if the repeat count is a number and greater than zero
19 | // Create an array filled with the user's name, repeated the desired number of times
20 | // Use concat to combine the repeated names into one string
21 | }
22 |
23 | askForNameAndRepeat();
24 |
--------------------------------------------------------------------------------
/code-challenges/Week_3/Display_User_Name_in_Greeting.py:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Prompt a user for their name and then display a greeting message that repeats the name a specified number of times. Practice using concat, join, and repeat.
4 |
5 | You may also need some of the following (but not required):
6 | - int()
7 | - isinstance()
8 | - list()
9 |
10 | */
11 |
12 | import sys # do not remove line
13 |
--------------------------------------------------------------------------------
/code-challenges/Week_3/HackerRank_Loops.js:
--------------------------------------------------------------------------------
1 | /*The HackerRank challenge titled "Loops" focuses on understanding loops in JavaScript, specifically for, while, and do...while loops. Each type of loop has its own syntax and use cases, and mastering them is essential for writing efficient and readable code. Below, I'll provide solutions for problems typically encountered in such challenges, including examples of each loop type.*/
2 |
3 | // Problem 1: Print Numbers from 1 to N
4 | // Task: Print numbers from 1 to N.
5 |
6 | // Problem 2: Print Even Numbers from N to 1
7 | // Task: Print even numbers from N to 1.
8 |
9 | // Problem 3: Count Down and Up with Jump
10 | // Task: Count down from N to 1 with a jump of J, and count up from 1 to N with a jump of J.
11 |
--------------------------------------------------------------------------------
/code-challenges/Week_4/Getting_Started_with_React_Hello_Component/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | React + TypeScript + Replit
8 |
9 |
10 |
11 |
12 |
13 |
18 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/code-challenges/Week_4/Getting_Started_with_React_Hello_Component/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-javascript",
3 | "version": "1.0.0",
4 | "type": "module",
5 | "description": "React TypeScript on Replit, using Vite bundler",
6 | "scripts": {
7 | "dev": "vite",
8 | "build": "vite build",
9 | "preview": "vite preview"
10 | },
11 | "keywords": [],
12 | "author": "",
13 | "license": "ISC",
14 | "devDependencies": {
15 | "@types/react": "^18.2.37",
16 | "@types/react-dom": "^18.2.15",
17 | "@vitejs/plugin-react": "^4.2.0",
18 | "react": "^18.2.0",
19 | "react-dom": "^18.2.0",
20 | "typescript": "^5.2.2",
21 | "vite": "^5.0.0"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/code-challenges/Week_4/Getting_Started_with_React_Hello_Component/src/App.css:
--------------------------------------------------------------------------------
1 | main {
2 | }
3 |
--------------------------------------------------------------------------------
/code-challenges/Week_4/Getting_Started_with_React_Hello_Component/src/App.jsx:
--------------------------------------------------------------------------------
1 | import "./App.css";
2 | import Hello from "./Hello";
3 |
4 | export default function App() {
5 | return (
6 |
7 | React ⚛️ + Vite ⚡ + Replit
8 |
9 |
10 | );
11 | }
12 |
--------------------------------------------------------------------------------
/code-challenges/Week_4/Getting_Started_with_React_Hello_Component/src/index.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import ReactDOM from "react-dom/client";
3 | import App from "./App";
4 |
5 | ReactDOM.createRoot(document.getElementById("root")).render(
6 |
7 |
8 |
9 | );
10 |
--------------------------------------------------------------------------------
/code-challenges/Week_4/Getting_Started_with_React_Hello_Component/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ESNext",
4 | "useDefineForClassFields": true,
5 | "lib": ["DOM", "DOM.Iterable", "ESNext"],
6 | "allowJs": false,
7 | "skipLibCheck": true,
8 | "esModuleInterop": false,
9 | "allowSyntheticDefaultImports": true,
10 | "strict": true,
11 | "forceConsistentCasingInFileNames": true,
12 | "module": "ESNext",
13 | "moduleResolution": "Node",
14 | "resolveJsonModule": true,
15 | "isolatedModules": true,
16 | "noEmit": true,
17 | "jsx": "react-jsx"
18 | },
19 | "include": ["src"]
20 | }
21 |
--------------------------------------------------------------------------------
/code-challenges/Week_4/Getting_Started_with_React_Hello_Component/vite.config.js:
--------------------------------------------------------------------------------
1 | import { defineConfig } from "vite";
2 | import react from "@vitejs/plugin-react";
3 |
4 | // https://vitejs.dev/config/
5 | export default defineConfig({
6 | plugins: [react()],
7 | server: {
8 | host: "0.0.0.0"
9 | }
10 | });
11 |
--------------------------------------------------------------------------------
/code-challenges/Week_4/Map_Practice.py:
--------------------------------------------------------------------------------
1 | # Task 1: Calculate and add the sum of all ages to each friend object
2 | # Task 2: Create a list of friends older than the average age
3 | # Task 3: Generate a list of strings with initials and age
4 | # Bonus: Implement these tasks using functions
5 |
6 |
7 | def add_sum_of_ages(friends):
8 |
9 | def get_older_than_avg(friends):
10 |
11 | def generate_initials_and_age(friends):
12 |
13 | def main():
14 |
15 | # do not remove below lines of code
16 | if __name__ == "__main__":
17 | main()
18 |
19 | # Example input:
20 | myFriends = [
21 | {"firstname": "Alice", "lastname": "Smith", "age": 30},
22 | {"firstname": "Bob", "Johnson": "Jane", "age": 25},
23 | {"firstname": "Charlie", "lastname": "Brown", "age": 35},
24 | {"firstname": "David", "lastname": "Wilson", "age": 28},
25 | {"firstname": "Emily", "lastname": "Anderson", "age": 32},
26 | ]
27 |
--------------------------------------------------------------------------------
/code-challenges/Week_5/Pop_Shift_and_Unshift_Elements.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Write a function that takes an array of strings as input and returns a new array where the first element is moved to the end of the array. You must use both shift and push methods to achieve this.
4 |
5 | */
6 |
--------------------------------------------------------------------------------
/code-challenges/Week_5/Pop_Shift_and_Unshift_Elements.py:
--------------------------------------------------------------------------------
1 | # Write a function that takes a list of strings as input and returns a new list where the first element is moved to the end of the list. You must use both shift and push methods to achieve this. Additionally, handle edge cases such as empty lists or lists with fewer than two elements.
2 |
3 | def move_first_to_end(lst):
4 |
--------------------------------------------------------------------------------
/code-challenges/Week_5/Remove_Duplicates_and_Add_Elements.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Write a function that takes an array of strings and a string item as input. The function should remove the first occurrence of item from the array and then add it to the end of the array. You must use both shift and push methods to achieve this.
4 |
5 | */
6 |
7 | /*
8 |
9 | Write a function that takes an array of numbers as input and returns a new array with all duplicate numbers removed. You must use reduce and push methods to achieve this.
10 |
11 | */
12 |
--------------------------------------------------------------------------------
/code-challenges/Week_5/Remove_Duplicates_and_Add_Elements.py:
--------------------------------------------------------------------------------
1 | # Write a function that takes a list of strings and a string item as input. The function should remove the first occurrence of the item from the list and then add it to the end of the list. You must use both remove() and append() methods to achieve this.
2 |
3 | def move_item_to_end(lst, item):
4 |
5 | original_list = ['apple', 'banana', 'cherry', 'date', 'elderberry']
6 | item_to_move = 'cherry'
7 |
8 |
9 |
10 | # Write a function that takes a list of numbers as input and returns a new list with all duplicate numbers removed. You must use set() and list() methods to achieve this.
11 |
12 | def remove_duplicates(numbers):
13 |
14 | numbers = [1, 2, 3, 2, 4, 5, 3, 6, 7, 8, 9, 1, 2]
15 |
--------------------------------------------------------------------------------
/code-challenges/Week_5/Reverse_and_Rotate_Array_Elements.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Write a function that takes an array as input and returns a new array with the elements in reverse order. You must use both push and pop methods to achieve this.
4 |
5 | */
6 |
7 | /*
8 |
9 | Write a function that takes an array of numbers and a number n as input. The function should return a new array where the first n elements are moved to the end of the array. You must use both shift and push methods to achieve this.
10 |
11 | */
12 |
--------------------------------------------------------------------------------
/code-challenges/Week_5/Reverse_and_Rotate_Array_Elements.py:
--------------------------------------------------------------------------------
1 | # Prompt 1: Reverse an array using push and pop
2 | # Write a function that takes a list as input and returns a new list with the elements in reverse order. You must use both append and pop methods to achieve this.
3 |
4 | def reverse_list_push_pop(lst):
5 |
6 |
7 | # Prompt 2: Move first N elements to the end of the array using shift and push
8 | # Write a function that takes a list of integers and a number n as input. The function should return a new list where the first n elements are moved to the end of the array. You must use both remove and append methods to achieve this.
9 |
10 |
11 | def move_first_n_to_end(lst, n):
--------------------------------------------------------------------------------
/code-challenges/Week_6/Object_Keys_Values_For-Of.js:
--------------------------------------------------------------------------------
1 | // Iterating Over the Values of an Object [Object.values]
2 | const user1 = { name: "Alice", age: 30, city: "New York" };
3 | // console.log(Object.values(user1));
4 |
5 | // Syntax Example
6 | // Object.values(user1).forEach((value) => console.log(value))
7 |
8 | // Iterating Over the Keys of an Object [Object.keys]
9 | const user2 = { name: "Alice", age: 30, city: "New York" };
10 |
11 | // Syntax Example
12 | // Object.keys(user2).forEach((key) => console.log(key))
13 |
14 | // Iterate over an Array of Strings [For Of]
15 |
16 | // Define an array of strings
17 | const fruits = ["apple", "banana", "cherry"];
18 |
19 | /*
20 | Syntax Example
21 |
22 | const array1 = ['a', 'b', 'c'];
23 |
24 | for (const element of array1) {
25 | console.log(element);
26 | }
27 | */
28 |
--------------------------------------------------------------------------------
/code-challenges/Week_6/Sort_Some_and_Every.js:
--------------------------------------------------------------------------------
1 | // Sorting an Array of Objects by a Key [Sort]
2 | const users = [
3 | { name: "Alice", age: 30 },
4 | { name: "Bob", age: 25 },
5 | { name: "Charlie", age: 35 }
6 | ];
7 |
8 | // Checking if Any Element in an Array Meets a Condition [Some]
9 | const numbers = [1, 2, 3, 4, 5];
10 |
11 | // Checking if All Elements in an Array Meet a Condition [Every]
12 | const evenNumbers = [2, 4, 6, 8, 10];
13 |
--------------------------------------------------------------------------------
/code-challenges/Week_6/Working_With_Promises/Working_with_Promises.js:
--------------------------------------------------------------------------------
1 | /* =========== Uppercase String Promise =========== */
2 |
3 | function uppercaseString(str) {}
4 |
5 | /* ========== Simulated Data Fetching ========== */
6 |
7 | function fetchData() {}
8 |
9 | /* ========== Asynchronous Request Queue ========== */
10 |
11 | class AsyncQueue {
12 | constructor() {}
13 | }
14 |
15 | // // Example task factory function
16 | // const createTask = () => {
17 |
18 | // };
19 |
20 | // // Create a queue with a concurrency limit of 3
21 |
22 | // // Add tasks to the queue
23 |
--------------------------------------------------------------------------------
/code-challenges/Week_7/Remove_Duplicates_from_Array.js:
--------------------------------------------------------------------------------
1 | /*
2 | Write a JavaScript function that takes an array of numbers as input and returns a new array with all duplicates removed. Use the Set object to achieve this.
3 |
4 | */
5 | function removeDuplicates(arr) {}
6 |
7 | const arrayWithDuplicates = [1, 2, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10];
8 | console.log(removeDuplicates(arrayWithDuplicates));
9 |
--------------------------------------------------------------------------------
/code-challenges/Week_7/Spread_an_Array_into_Another_Array.js:
--------------------------------------------------------------------------------
1 | /*
2 | Write a JavaScript function that takes two arrays as input and returns a new array that contains all elements from both input arrays. Use the spread operator (...) to achieve this.
3 |
4 | */
5 |
6 | function combineArrays() {}
7 |
8 | console.log(combineArrays());
9 |
--------------------------------------------------------------------------------
/code-challenges/Week_7/Ternary_Operator_for_Conditional.js:
--------------------------------------------------------------------------------
1 | /*
2 | Write a JavaScript function that takes two numbers as input and returns the larger number. Use the ternary operator (condition? valueIfTrue : valueIfFalse) for this task.
3 |
4 | */
5 |
6 | function findLargerNumber() {}
7 |
8 | console.log(findLargerNumber());
9 | console.log(findLargerNumber());
10 |
--------------------------------------------------------------------------------
/code-challenges/Week_8/Jest_Integration_and_Unit_Testing/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "my-project",
3 | "private": true,
4 | "version": "0.0.0",
5 | "scripts": {
6 | "dev": "vite",
7 | "build": "vite build",
8 | "preview": "vite preview",
9 | "test": "jest"
10 | },
11 | "dependencies": {
12 | "vite": "^5.0.12"
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/code-challenges/Week_8/Jest_Integration_and_Unit_Testing/userController.js:
--------------------------------------------------------------------------------
1 | const UserService = require("./userService");
2 |
3 | class UserController {
4 | constructor(userService) {
5 | this.userService = userService;
6 | }
7 |
8 | async getUserData(userId) {
9 | return this.userService.getUserData(userId);
10 | }
11 | }
12 |
13 | module.exports = UserController;
14 |
--------------------------------------------------------------------------------
/code-challenges/Week_8/Jest_Integration_and_Unit_Testing/userService.js:
--------------------------------------------------------------------------------
1 | class UserService {
2 | constructor(apiUrl) {
3 | this.apiUrl = apiUrl;
4 | }
5 |
6 | async getUserData(userId) {
7 | try {
8 | const response = await fetch(`${this.apiUrl}/users/${userId}`);
9 | if (!response.ok) {
10 | throw new Error(`HTTP error status: ${response.status}`);
11 | }
12 | return await response.json();
13 | } catch (error) {
14 | console.error(error);
15 | throw error;
16 | }
17 | }
18 | }
19 |
20 | module.exports = UserService;
21 |
--------------------------------------------------------------------------------
/code-challenges/Week_8/Jest_Integration_and_Unit_Testing/vite.config:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite';
2 |
3 | // https://vitejs.dev/config/
4 | export default defineConfig({
5 | plugins: [],
6 | server: {
7 | host: '0.0.0.0',
8 | hmr: true, // Change this line to false disable auto-refreshing.
9 | }
10 | })
11 |
--------------------------------------------------------------------------------
/code-challenges/Week_8/Math_methods_floor_ceil_min_max.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Working with Math methods:
4 |
5 | 1. Generate an array of 10 random integers between 1 and 100.
6 | 2. Then, round down half of the numbers to the nearest integer using Math.floor and round up the other half using Math.ceil.
7 | 3. Finally, find the minimum and maximum values among the rounded numbers.
8 |
9 | */
10 |
--------------------------------------------------------------------------------
/code-challenges/Week_8/Working_with_Arrays_and_Objects.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Create a function named `filterObjects` that takes three arguments:
4 | - an array of objects (`data`),
5 | - a string representing a property name (`propertyName`), and
6 | - a value.
7 |
8 | The function should return a new array containing only the objects from the original array whose value for the specified property matches the provided value. If no objects match the criteria, the function should return an empty array.
9 |
10 | */
11 |
--------------------------------------------------------------------------------
/code-challenges/Week_8/Working_with_React_Testing_Library/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | React + TypeScript + Replit
8 |
9 |
10 |
11 |
12 |
13 |
18 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/code-challenges/Week_8/Working_with_React_Testing_Library/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-javascript",
3 | "version": "1.0.0",
4 | "type": "module",
5 | "description": "React TypeScript on Replit, using Vite bundler",
6 | "scripts": {
7 | "dev": "vite",
8 | "build": "vite build",
9 | "preview": "vite preview",
10 | "test": "jest"
11 | },
12 | "keywords": [],
13 | "author": "",
14 | "license": "ISC",
15 | "devDependencies": {
16 | "@types/react": "^18.2.37",
17 | "@types/react-dom": "^18.2.15",
18 | "@vitejs/plugin-react": "^4.2.0",
19 | "react": "^18.2.0",
20 | "react-dom": "^18.2.0",
21 | "typescript": "^5.2.2",
22 | "vite": "^5.0.0"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/code-challenges/Week_8/Working_with_React_Testing_Library/src/App.css:
--------------------------------------------------------------------------------
1 | main {
2 | }
3 |
--------------------------------------------------------------------------------
/code-challenges/Week_8/Working_with_React_Testing_Library/src/App.jsx:
--------------------------------------------------------------------------------
1 | import "./App.css";
2 |
3 | export default function App() {
4 | return React ⚛️ + Vite ⚡ + Replit;
5 | }
6 |
--------------------------------------------------------------------------------
/code-challenges/Week_8/Working_with_React_Testing_Library/src/index.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import ReactDOM from "react-dom/client";
3 | import App from "./App";
4 |
5 | ReactDOM.createRoot(document.getElementById("root")).render(
6 |
7 |
8 |
9 | );
10 |
--------------------------------------------------------------------------------
/code-challenges/Week_8/Working_with_React_Testing_Library/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ESNext",
4 | "useDefineForClassFields": true,
5 | "lib": ["DOM", "DOM.Iterable", "ESNext"],
6 | "allowJs": false,
7 | "skipLibCheck": true,
8 | "esModuleInterop": false,
9 | "allowSyntheticDefaultImports": true,
10 | "strict": true,
11 | "forceConsistentCasingInFileNames": true,
12 | "module": "ESNext",
13 | "moduleResolution": "Node",
14 | "resolveJsonModule": true,
15 | "isolatedModules": true,
16 | "noEmit": true,
17 | "jsx": "react-jsx"
18 | },
19 | "include": ["src"]
20 | }
21 |
--------------------------------------------------------------------------------
/code-challenges/Week_8/Working_with_React_Testing_Library/vite.config.js:
--------------------------------------------------------------------------------
1 | import { defineConfig } from "vite";
2 | import react from "@vitejs/plugin-react";
3 |
4 | // https://vitejs.dev/config/
5 | export default defineConfig({
6 | plugins: [react()],
7 | server: {
8 | host: "0.0.0.0"
9 | }
10 | });
11 |
--------------------------------------------------------------------------------
/code-challenges/Week_9/Add-Digits.js:
--------------------------------------------------------------------------------
1 | /*
2 | Given an integer num, repeatedly add all its digits until the result has only one digit, and return it.
3 |
4 | Example 1: Example 2:
5 | Input: num = 38 Input: num = 0
6 | Output: 2 Output: 0
7 | Explanation: The process is
8 | 38 --> 3 + 8 --> 11
9 | 11 --> 1 + 1 --> 2
10 | Since 2 has only one digit, return it.
11 |
12 | Challenge: Could you do it without any loop/recursion in O(1) runtime?
13 |
14 | */
15 |
--------------------------------------------------------------------------------
/code-challenges/Week_9/Find-the-Longest-Word-in-a-String.js:
--------------------------------------------------------------------------------
1 | /*
2 | Return the length of the longest word in the provided sentence.
3 | Your output should be a number.
4 |
5 | Examples:
6 | findLongestWordLength("The quick brown fox jumped over the lazy dog") ---> 6
7 | findLongestWordLength("May the force be with you") ---> 5
8 | findLongestWordLength("What if we try a super-long word such as otorhinolaryngology") ---> 19
9 |
10 | */
11 |
--------------------------------------------------------------------------------
/code-challenges/Week_9/Move-Zeros.js:
--------------------------------------------------------------------------------
1 | /*
2 | Given an integer array nums, move all 0's to the end of it while maintaining the relative order of the non-zero elements.
3 |
4 | Example 1:
5 | Input: nums = [0,1,0,3,12]
6 | Output: [1,3,12,0,0]
7 |
8 | Example 2:
9 | Input: nums = [0]
10 | Output: [0]
11 |
12 | Challenge: Can you write your answer without making a copy of the array. Could you minimize the total number of operations done?
13 |
14 | */
15 |
--------------------------------------------------------------------------------
/code-challenges/Week_9/Return-the-Sum-of-Two-Numbers.js:
--------------------------------------------------------------------------------
1 | /*
2 | Create a function that takes two numbers as arguments and returns their sum.
3 |
4 | Examples:
5 | addition(3, 2) ➞ 5 addition(-3, -6) ➞ -9 addition(7, 3) ➞ 10
6 |
7 | Notes: Don't forget to return the result and check for edge cases!
8 |
9 |
10 | */
11 |
--------------------------------------------------------------------------------
/code-challenges/Week_9/Single-Number.js:
--------------------------------------------------------------------------------
1 | /*
2 | Given a non-empty array of integers nums, every element appears twice except for one. Find that single one.
3 |
4 | Example 1: Example 2: Example 3:
5 | Input: nums = [2,2,1] Input: nums = [4,1,2,1,2] Input: nums = [1]
6 | Output: 1 Output: 4 Output: 1
7 |
8 | Notes: Each element in the array appears twice except for one element which appears only once.
9 |
10 | Challenge: Can you optimize your implementation to be linear runtime complexity?.
11 |
12 |
13 | */
14 |
--------------------------------------------------------------------------------
/data-structures/queue-screenshots/queue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/data-structures/queue-screenshots/queue.png
--------------------------------------------------------------------------------
/data-structures/stack.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/data-structures/stack.png
--------------------------------------------------------------------------------
/databases/bash/create_db_sample.sql:
--------------------------------------------------------------------------------
1 |
2 | -- Run via command line: psql -U username --file=create_db_sample.sql
3 |
4 | -- Set variables
5 | DECLARE database_name varchar(50)
6 | SET database_name = 'test_database';
7 | DECLARE table_name varchar(50)
8 | SET table_name = 'account';
9 |
10 | -- Create database
11 | CREATE DATABASE database_name;
12 |
13 | -- Create table
14 | CREATE TABLE table_name(
15 | user_id serial PRIMARY KEY,
16 | username VARCHAR (50) UNIQUE NOT NULL,
17 | password VARCHAR (50) NOT NULL,
18 | email VARCHAR (355) UNIQUE NOT NULL
19 | );
20 |
21 | -- Insert table
22 | INSERT INTO table_name (username, password, email) VALUES ('Sally Ride', 'letmein', 'sallyride@gmail.com');
23 |
24 |
25 | SELECT * FROM table_name;
--------------------------------------------------------------------------------
/databases/bash/sample_bash_script.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -e # Flag causes script to exit if there's an error
3 |
4 |
5 | # The `echo` statement is like print
6 | echo Hello World!
7 |
8 | # Shell scripts can perform multiple command line operations exactly as if they were typed in terminal
9 | echo Print working directory:
10 | pwd
11 |
12 | # One can also use variables in shell scripts denoted by $, and read in variables
13 | echo "Enter your name:"
14 | read name
15 | echo "Hello, $name"
16 |
--------------------------------------------------------------------------------
/databases/bash/teardown_db_sample.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | username='postgres'
4 | database_name='test_database'
5 | table_name='account'
6 |
7 |
8 | read -p "Are you sure you want to drop table $table_name? Reply y or n " -n 1 -r
9 | echo # (optional) move to a new line
10 | if [[ $REPLY =~ ^[Yy]$ ]]
11 | then
12 | echo Dropping table $table_name...
13 | psql -U $username -d $database_name -c "DROP TABLE $table_name"
14 | fi
15 |
16 |
17 | read -p "Are you sure you want to drop database $database_name? Reply y or n " -n 1 -r
18 | echo # (optional) move to a new line
19 | if [[ $REPLY =~ ^[Yy]$ ]]
20 | then
21 | echo Dropping database $database_name...
22 | psql -U $username -c "DROP DATABASE $database_name"
23 | fi
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/deploying/screenshots/production-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/deploying/screenshots/production-1.png
--------------------------------------------------------------------------------
/deploying/screenshots/production-10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/deploying/screenshots/production-10.png
--------------------------------------------------------------------------------
/deploying/screenshots/production-11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/deploying/screenshots/production-11.png
--------------------------------------------------------------------------------
/deploying/screenshots/production-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/deploying/screenshots/production-2.png
--------------------------------------------------------------------------------
/deploying/screenshots/production-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/deploying/screenshots/production-3.png
--------------------------------------------------------------------------------
/deploying/screenshots/production-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/deploying/screenshots/production-4.png
--------------------------------------------------------------------------------
/deploying/screenshots/production-5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/deploying/screenshots/production-5.png
--------------------------------------------------------------------------------
/deploying/screenshots/production-6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/deploying/screenshots/production-6.png
--------------------------------------------------------------------------------
/deploying/screenshots/production-7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/deploying/screenshots/production-7.png
--------------------------------------------------------------------------------
/deploying/screenshots/production-8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/deploying/screenshots/production-8.png
--------------------------------------------------------------------------------
/deploying/screenshots/production-9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/deploying/screenshots/production-9.png
--------------------------------------------------------------------------------
/deploying/screenshots/render-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/deploying/screenshots/render-1.png
--------------------------------------------------------------------------------
/deploying/screenshots/render-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/deploying/screenshots/render-2.png
--------------------------------------------------------------------------------
/deploying/screenshots/render-3.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/deploying/screenshots/render-3.gif
--------------------------------------------------------------------------------
/deploying/screenshots/render-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/deploying/screenshots/render-4.png
--------------------------------------------------------------------------------
/deploying/screenshots/render-5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/deploying/screenshots/render-5.png
--------------------------------------------------------------------------------
/deploying/screenshots/render-6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/deploying/screenshots/render-6.png
--------------------------------------------------------------------------------
/docker/docker-architecture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/docker/docker-architecture.png
--------------------------------------------------------------------------------
/express-js/middleware-example.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/express-js/middleware-example.png
--------------------------------------------------------------------------------
/git/basic-gitignore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/git/basic-gitignore.png
--------------------------------------------------------------------------------
/javascript/advanced-javascript-resources.md:
--------------------------------------------------------------------------------
1 | ## Additional JavaScript Resources
2 |
3 | - [Code this, not that](https://www.youtube.com/watch?v=Mus_vwhTCq0) - a 13min YouTube video containing some power tips, leveraging a lot of nice ES2015 features
4 |
--------------------------------------------------------------------------------
/javascript/week-4-JS-assessment.md:
--------------------------------------------------------------------------------
1 | ## Week 4 Review: Loops, Conditionals, Runtime Complexity
2 |
3 | ### Languages
4 |
5 | - JavaScript
6 |
7 | ### Tools
8 |
9 | - A personal repl.it account
10 | - A timer
11 |
12 | ### Primary Goals
13 |
14 | - Demonstrate knowledge of JavaScript Loops, Conditionals, If statements, Switch statements, and Big O Notation
15 | - Practice code challenge situations
16 |
17 | ### Overview
18 |
19 | Apprentices will be emailed 5 repl.it assessments at 9am. You have 2 hours to complete and turn in all 5 challenges.
20 |
21 | ---
22 |
23 | ## Project Instructions
24 |
25 | - [ ] Do not open the emailed repl.it link until the assessment begins.
26 | - [ ] This is meant to be an independent assessment - no pair programming please.
27 | - [ ] Plan your solution before starting to code.
28 | - [ ] The code should run.
29 | - [ ] Test your function.
30 | - [ ] Be sure to submit each assessment to your program facilitator.
31 |
--------------------------------------------------------------------------------
/node-js/images/control-c.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/node-js/images/control-c.jpg
--------------------------------------------------------------------------------
/node-js/images/download-screen.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/node-js/images/download-screen.jpg
--------------------------------------------------------------------------------
/node-js/images/install-window.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/node-js/images/install-window.jpg
--------------------------------------------------------------------------------
/node-js/images/js-in-browser.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/node-js/images/js-in-browser.jpg
--------------------------------------------------------------------------------
/node-js/images/node-repl.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/node-js/images/node-repl.jpg
--------------------------------------------------------------------------------
/node-js/images/node-v.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/node-js/images/node-v.jpg
--------------------------------------------------------------------------------
/node-js/images/node.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/node-js/images/node.jpg
--------------------------------------------------------------------------------
/node-js/images/npm-init-msg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/node-js/images/npm-init-msg.png
--------------------------------------------------------------------------------
/node-js/images/npm-init-y-msg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/node-js/images/npm-init-y-msg.png
--------------------------------------------------------------------------------
/node-js/images/npm-json.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/node-js/images/npm-json.png
--------------------------------------------------------------------------------
/node-js/images/npm-walkthrough.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/node-js/images/npm-walkthrough.png
--------------------------------------------------------------------------------
/node-js/images/server-running.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/node-js/images/server-running.jpg
--------------------------------------------------------------------------------
/node-js/images/which-node.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/node-js/images/which-node.jpg
--------------------------------------------------------------------------------
/objectives/2.md:
--------------------------------------------------------------------------------
1 | # Assessment 2 Objectives
2 |
3 | Here are the concepts in [Assessment #2: Portfolio Project - Incorporate SEO & a11y
4 | ](../projects/portfolio/portfolio-webpage-2.md):
5 |
6 | ### Web Accessibility
7 |
8 | - [ ] Evaluate whether their website, app, or product is accessible with respect to visual, audio, motor, or cognitive impairments.
9 | - [ ] Determine changes that can make websites more accessible.
10 | - [ ] Implement those changes.
11 |
12 | ### SEO
13 |
14 | - [ ] Define SEO, its purpose, and how it works
15 | - [ ] Learn a few tools (Google Analytics, Google Search Console, Google My Business) to measure and experiment with SEO and site performance
16 | - [ ] Learn the basics of creating SEO-friendly content
17 |
--------------------------------------------------------------------------------
/objectives/9.md:
--------------------------------------------------------------------------------
1 | # Assessment 9 Objectives
2 |
3 | ---
4 |
5 | ## [Assessment Outline 9.0: React/Enzyme](/projects/react-assessment.md)
6 |
7 | ### React
8 |
9 | - Explain the Pros and Cons of using React instead of other tools, like jQuery.
10 | - Create a simple React Component.
11 | Hook up user actions to state changes in the UI.
12 |
13 | ### Enzyme
14 |
15 | - Add through testing with Enzyme and Jest to one of your React components.
16 |
17 | ---
18 |
19 | ## [Assessment Outline 9.5: Auth0](/projects/auth0-assessment.md)
20 |
21 | ### Auth0
22 |
23 | - Describe the three roles associated with OAuth social media integration
24 | - Explain the difference between OAuth (the protocol) and Auth0 (the service)
25 | - Set up an Auth0 account and associate a social media login with a sample app
26 |
--------------------------------------------------------------------------------
/objectives/ReadMe.md:
--------------------------------------------------------------------------------
1 | # Assessment Objectives: A Grader's Guide
2 |
3 | ### How to Use
4 |
5 | The files in the objectives folder each contain a checklist of the objectives covered in worksheets, projects, and assessments.
6 |
7 | As an example, "0.md" contains the things learners should demonstrate in "Week 1 Worksheet". If a participant fails to demonstrate understanding, they should receive feedback from the grader that they need to put additional effort into meeting that objective. In most cases, this will mean improving their submitted project, but otherwise the participant may be required to submit an additional code challenge or write-up to prove they've truly learned the concept.
8 |
--------------------------------------------------------------------------------
/onboarding/YCLA_LessonPlan_v10.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/onboarding/YCLA_LessonPlan_v10.pdf
--------------------------------------------------------------------------------
/pair-programming/week-1/Divs_and_DOM_Manipulation/README.md:
--------------------------------------------------------------------------------
1 | The goal of this mini webpage is to get used to creating sections and using basic HTML and CSS and practice DOM Manipulation
2 |
3 | Make 3 or 4 `
`s (as many as are in your group). Put one of your names in an `
` in each `
`
4 |
5 | Add a paragraph within each div with your names in it. add "I live in city" using the `` tag to make the city bold
6 |
7 | Make an unordered list with each of your names
8 |
9 | In the list, add a [ tag with the link to your favorite restaurant. Make sure the text of the link says the restuarnt name--!]
10 |
11 | [ ]
12 | [
13 | Try using JS DOM manipulation to change the text of the first li to "I'm learning JS"
14 |
15 | Using DOM manipulation add one more li to the end of your list, with your favorite plate from your favorite restaurant
16 |
17 | ]
18 |
--------------------------------------------------------------------------------
/pair-programming/week-1/Divs_and_DOM_Manipulation/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | replit
7 |
8 |
9 |
10 |
11 |
12 |
13 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/pair-programming/week-1/Divs_and_DOM_Manipulation/script.js:
--------------------------------------------------------------------------------
1 | // Create a div
2 |
3 | // Second task
4 |
5 | // Creating a list - the third task
6 |
--------------------------------------------------------------------------------
/pair-programming/week-1/Divs_and_DOM_Manipulation/style.css:
--------------------------------------------------------------------------------
1 | html {
2 | height: 100%;
3 | width: 100%;
4 | }
5 |
6 | body {
7 | background-color: #bcb4f9;
8 | }
9 |
--------------------------------------------------------------------------------
/pair-programming/week-1/Modeling-A-Bank-Account/index.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Techtonica/curriculum/1ac035d33ef1d5fe554c8c4d42af2c290de571f6/pair-programming/week-1/Modeling-A-Bank-Account/index.js
--------------------------------------------------------------------------------
/pair-programming/week-1/Modeling-A-Bank-Account/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "nodejs",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "keywords": [],
10 | "author": "",
11 | "license": "ISC",
12 | "dependencies": {
13 | "@types/node": "^18.0.6",
14 | "node-fetch": "^3.2.6"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/pair-programming/week-1/Week-1-PP-Slice-and-Split/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "nodejs",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "keywords": [],
10 | "author": "",
11 | "license": "ISC",
12 | "dependencies": {
13 | "@types/node": "^18.0.6",
14 | "node-fetch": "^3.2.6"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/pair-programming/week-1/first-div/README.md:
--------------------------------------------------------------------------------
1 | # First Div
2 |
3 | The goal of this mini webpage is to get used to creating sections and using basic HTML and CSS and practice DOM Manipulation
4 |
5 | 1. Make 3 or 4 `
`s (as many as are in your group). Put one of your names in an `