# Foundation

Here you'll learn the fundamentals for how the web works, the basics of programming, and how to start shaping your CV as you develop your tech skills.

## Modules

| Name                                                                                                                                                | Weeks |
| --------------------------------------------------------------------------------------------------------------------------------------------------- | ----- |
| [HTML & CSS](https://program.hackyourfuture.dk/~/revisions/rMM91C8UFbw9ic3maCrL/course-content/foundation/html-and-css)                             | 1     |
| [Git](https://program.hackyourfuture.dk/~/revisions/rMM91C8UFbw9ic3maCrL/course-content/foundation/git)                                             | 1     |
| [Intro to Using AI](https://program.hackyourfuture.dk/~/revisions/rMM91C8UFbw9ic3maCrL/course-content/foundation/intro-to-using-ai)                 | 1     |
| [Intro to JavaScript](https://program.hackyourfuture.dk/~/revisions/rMM91C8UFbw9ic3maCrL/course-content/foundation/intro-to-javascript)             | 4     |
| [Intro to Web Architecture](https://program.hackyourfuture.dk/~/revisions/rMM91C8UFbw9ic3maCrL/course-content/foundation/intro-to-web-architecture) | 1     |
| [Databases](https://program.hackyourfuture.dk/~/revisions/rMM91C8UFbw9ic3maCrL/course-content/foundation/databases)                                 | 1     |
| [Intro to Backend](https://program.hackyourfuture.dk/~/revisions/rMM91C8UFbw9ic3maCrL/course-content/foundation/intro-to-backend)                   | 1     |
| [Intro to Frontend](https://program.hackyourfuture.dk/~/revisions/rMM91C8UFbw9ic3maCrL/course-content/foundation/intro-to-frontend)                 | 1     |
| [Intro to Agile](https://program.hackyourfuture.dk/~/revisions/rMM91C8UFbw9ic3maCrL/course-content/foundation/intro-to-agile)                       | 1     |
| [Career Training](https://program.hackyourfuture.dk/~/revisions/rMM91C8UFbw9ic3maCrL/course-content/foundation/career-training)                     | 2     |
| [Final project](https://program.hackyourfuture.dk/~/revisions/rMM91C8UFbw9ic3maCrL/course-content/foundation/final-project)                         | 3     |

Total: 17 weeks

## Learning Goals Overview

### [HTML & CSS](https://program.hackyourfuture.dk/~/revisions/rMM91C8UFbw9ic3maCrL/course-content/foundation/html-and-css)

* [ ] Setup VSCode
* [ ] Round-up the [Pre-Course](https://program.hackyourfuture.dk/~/revisions/rMM91C8UFbw9ic3maCrL/course-content/pre-course) materials on HTML and CSS
* [ ] Spend a lot of time with hands-on coding practice
* [ ] Learn to work efficiently with your team members
* [ ] Briefly introduce Figma

### [Git](https://program.hackyourfuture.dk/~/revisions/rMM91C8UFbw9ic3maCrL/course-content/foundation/git)

* [ ] Understand what version control is
* [ ] Understand what Git is used for
* [ ] Know the difference between Git and GitHub
* [ ] Successfully install and configure Git
* [ ] Practice command line basics
* [ ] Know how to create a repo, branches, commits and push to GitHub
* [ ] Understand the usual flow for saving and sharing changes

### [Intro to Using AI](https://program.hackyourfuture.dk/~/revisions/rMM91C8UFbw9ic3maCrL/course-content/foundation/intro-to-using-ai)

* [ ] AI Literacy:
  * [ ] Describe how Large Language Models (LLMs) work at a basic level.
  * [ ] Explain what Generative AI (AI) is, what it's good at, and its limitations.
  * [ ] Identify appropriate and inappropriate uses of AI in the workplace.
  * [ ] Practice how you can use AI to help you learn effectively, rather than just providing answers.
  * [ ] Recognize common risks related to AI usage, such as bias, copyright, hallucinations, misinformation, and privacy concerns.
  * [ ] Reflect on how AI is changing work and skill expectations (and what we don't know yet!).
* [ ] Prompting:
  * [ ] Apply simple prompting techniques to get useful outputs from GitHub Copilot.
  * [ ] Evaluate AI outputs critically for accuracy and relevance.
  * [ ] Integrate AI prompting alongside other learning resources such as documentation, tutorials, and mentors.
  * [ ] Prompt responsibly to support your learning, in line with HYF guidelines and expectations.

### [Intro to JavaScript](https://program.hackyourfuture.dk/~/revisions/rMM91C8UFbw9ic3maCrL/course-content/foundation/intro-to-javascript)

* [ ] Understand what JavaScript is and what it's used for
* [ ] Use basic programming concepts such as variable definitions, types and operators
* [ ] Practice reading and fixing errors
* [ ] Use conditional logic to implement more advanced functionality
* [ ] Write basic functions with parameters and arguments
* [ ] Understand global vs local scope
* [ ] Using objects and arrays to store, access and manipulate more complex data

### [Intro to Web Architecture](https://program.hackyourfuture.dk/~/revisions/rMM91C8UFbw9ic3maCrL/course-content/foundation/intro-to-web-architecture)

* [ ] Understand the key components of a web application
* [ ] Know what happens when you enter a URL in a web browser
* [ ] Be able to describe the difference between frontend and backend functionality
* [ ] Describe the role of HTML, CSS and JavaScript
* [ ] Understand what HTTP is and its methods
* [ ] How APIs are provided and used

### [Databases](https://program.hackyourfuture.dk/~/revisions/rMM91C8UFbw9ic3maCrL/course-content/foundation/databases)

* [ ] Explain what a database is and why we use them
* [ ] Understand basic relational data terminology: table, row, column, primary key, foreign key
* [ ] Perform basic SQL operations: SELECT, INSERT, UPDATE, DELETE
* [ ] Use simple filtering and sorting techniques
* [ ] Understand simple database design & schemas

### [Intro to Backend](https://program.hackyourfuture.dk/~/revisions/rMM91C8UFbw9ic3maCrL/course-content/foundation/intro-to-backend)

* [ ] Introduction to Node.js
  * [ ] [What is node and why node?](https://www.youtube.com/watch?v=pU9Q6oiQNd0)
  * [ ] V8 vs the browser that runs js?
  * [ ] What can you build with Node.js?
    * Utilities
    * Web server
    * Much more
* [ ] Building a simple webserver
  * [ ] Creating simple GET endpoints to return data, including from databases
* [ ] Sending requests
  * [ ] What is Postman
  * [ ] Making GET, POST AND DELETE requests to APIs using Postman
* [ ] Database interaction
  * [ ] What is CRUD (Create, Read, Update, Delete)
  * [ ] CRUD vs REST
  * [ ] Connecting to a database using JavaScript
  * [ ] Executing queries (i.e. CRUD)

### [Intro to Frontend](https://program.hackyourfuture.dk/~/revisions/rMM91C8UFbw9ic3maCrL/course-content/foundation/intro-to-frontend)

* [ ] Understand the browser environment
  * [ ] HTML vs CSS vs JS
  * [ ] Client vs server
  * [ ] Where is the script tag being loaded
* [ ] How to use the DOM to implement dynamic functionality
  * [ ] What is it and what do developers use the DOM for?
  * [ ] DOM manipulation
    * [ ] Get elements
    * [ ] Insert elements
    * [ ] Element manipulation (style, innerHTML, text)
    * [ ] Window object
    * [ ] Document object
* [ ] How to use Event Listeners to implement interactivity
  * [ ] Document onload
  * [ ] Click, submit, change, input - Focus on usage
* [ ] Displaying external data
  * [ ] Fetch (No promise explanation! Focus on usage)

### [Intro to Agile](https://program.hackyourfuture.dk/~/revisions/rMM91C8UFbw9ic3maCrL/course-content/foundation/intro-to-agile)

* [ ] What is project management and why is it important
* [ ] Understand the main principles and values of Agile
* [ ] Understand the very basics of Scrum
* [ ] Understand how to use a simple tool to manage tasks, backlog, a board, and a simple project workflow
* [ ] Be able to apply basic prioritisation using MoSCoW
* [ ] Feel equipped to apply basic task and project organisation in your next project (e.g. final project)

### [Career Training](https://program.hackyourfuture.dk/~/revisions/rMM91C8UFbw9ic3maCrL/course-content/foundation/career-training)

* [ ] Understand where to look for suitable jobs and internships
* [ ] Understand what you should do in order to be an attractive candidate on the Danish job market
* [ ] Learn how to identify and communicate your competencies
* [ ] Understand what HYF can do to support you on your job hunt
* [ ] Know how to assemble an effective CV and LinkedIn profile
* [ ] Learn how to perform well in a screening interview

### [Foundation Project](https://program.hackyourfuture.dk/~/revisions/rMM91C8UFbw9ic3maCrL/course-content/foundation/final-project)

* [ ] Practice working in a team on the same project
* [ ] Develop self-guided learning skills (i.e. finding answers to your own problems)
* [ ] Practice building a project from a brief
* [ ] Practice interpreting requirements and making assumptions
* [ ] Developing your own additional requirements (i.e. adding your own flair to the project)
* [ ] Practice breaking big problems down into smaller tasks
* [ ] Managing your own tasks within a tight deadline
* [ ] Understanding how and when to ask for help at the right time
* [ ] Taking a project from idea to completion, including deploying it to the web
