Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 42 additions & 7 deletions artificial-intelligence/software-engineering-in-the-age-of-ai.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# Software Engineering in the Age of AI

## Table of Contents

- [Prerequisites](#prerequisites)
- [Objectives](#objectives)
- [Motivation](#motivation)
Expand All @@ -13,13 +14,15 @@
- [Common Mistakes / Misconceptions](#common-mistakes--misconceptions)

## Prerequisites

- [JavaScript Fundamentals](https://github.com/Techtonica/curriculum/blob/main/javascript/javascript-1-variables.md)
- [Web Development Concepts](https://github.com/Techtonica/curriculum/blob/main/web/html.md)
- [Git and GitHub](https://github.com/Techtonica/curriculum/blob/main/git/git-version-control.md)
- [Basic Data Structures](https://github.com/Techtonica/curriculum/blob/main/data-structures/intro-to-data-structures.md)
- [APIs](https://github.com/Techtonica/curriculum/blob/main/api/apis-and-json.md)

## Objectives

By the end of this lesson, participants should be able to:

1. Understand the evolving role of software engineers in the age of AI-generated code
Expand All @@ -29,9 +32,11 @@ By the end of this lesson, participants should be able to:
5. Create a personal development roadmap that focuses on AI-resistant skills

## Motivation

As AI tools like GitHub Copilot, ChatGPT, and other code generation platforms become increasingly sophisticated, many aspiring and early-career software engineers worry about their future prospects. However, the rise of AI presents not just challenges but tremendous opportunities for those who understand how to position themselves effectively. This lesson explores how to thrive as a software engineer by developing skills that complement AI rather than compete with it directly.

The most successful engineers of the future won't be those who can write code the fastest, but those who can:

- Effectively define problems worth solving
- Architect systems that are maintainable, scalable, and secure
- Collaborate with both humans and AI tools
Expand All @@ -43,21 +48,25 @@ The most successful engineers of the future won't be those who can write code th
### 1. Foundation Skills from Techtonica's Open Source Curriculum That Remain Essential

- **JavaScript Fundamentals**

- Why it matters: Understanding core language concepts enables you to evaluate and fix AI-generated code
- Essential concepts: Closures, asynchronous programming, error handling
- **Action item:** Create a personal cheatsheet of JavaScript patterns that frequently confuse AI tools

- **Data Structures & Algorithms**

- Why it matters: AI may generate inefficient solutions without understanding performance implications
- Essential concepts: Time/space complexity analysis, choosing appropriate data structures
- **Action item:** Practice identifying and optimizing inefficient code patterns in AI-generated solutions

- **Web Development & DOM Manipulation**

- Why it matters: AI struggles with visual layout and accessibility considerations
- Essential concepts: Semantic HTML, responsive design principles, accessibility standards
- **Action item:** Build a portfolio piece that demonstrates accessible, responsive design beyond what AI typically generates

- **Debugging & Testing**

- Why it matters: AI can generate code but struggles to diagnose complex issues across systems
- Essential concepts: Systematic debugging, test-driven development, integration testing
- **Action item:** Create a debugging workflow that incorporates AI tools while maintaining human oversight
Expand All @@ -70,6 +79,7 @@ The most successful engineers of the future won't be those who can write code th
### 2. Understanding AI Model Capabilities and Limitations

**Different Model Capabilities**

- **Token Count and Context Windows**
- Why it matters: Determines how much information a model can process at once
- Key concepts: Token limitations, chunking strategies, context management
Expand All @@ -92,12 +102,14 @@ The most successful engineers of the future won't be those who can write code th
- **Action item:** Use AI to research best practices for a specific technical domain and evaluate the quality

**AI Code Generation Strengths**

- Boilerplate code and repetitive patterns
- Standard implementations of common algorithms
- Converting between similar languages or frameworks
- **Action item:** Create a list of tasks you can confidently delegate to AI tools

**AI Coding Limitations**

- Security considerations and best practices
- Performance optimization for specific contexts
- Understanding business domain nuances
Expand All @@ -106,21 +118,25 @@ The most successful engineers of the future won't be those who can write code th
### 3. Working with AI as Team Members

- **The Hybrid Team Concept**

- Why it matters: Future engineering teams will include both human and AI contributors
- Key concepts: AI as specialized team members, delegation strategies, oversight mechanisms
- **Action item:** Map out what a hybrid team might look like for your current or desired project

- **Model Selection for Different Tasks**

- Why it matters: Different models have different strengths and weaknesses
- Key concepts: Task-model matching, cost-benefit analysis, specialized vs. general models
- **Action item:** Create a decision tree for selecting the appropriate AI model based on task type

- **Multi-Model Orchestration**

- Why it matters: Complex problems may require multiple specialized models working together
- Key concepts: Model chaining, output validation, information passing between models
- **Action item:** Design a workflow that uses multiple AI models to solve a complex engineering task

- **Effective Context Provision**

- Why it matters: The quality of context provided dramatically affects AI output quality
- Key concepts: Relevant context selection, concise problem statements, example-driven prompting
- **Action item:** Experiment with different context formats for the same problem to see which produces better results
Expand All @@ -135,16 +151,19 @@ The most successful engineers of the future won't be those who can write code th
### 4. High-Value Engineering Skills to Develop

- **System Design and Architecture**

- Why it matters: AI can generate components but struggles with holistic system design
- Key concepts: Scalability patterns, microservices vs. monoliths, trade-off analysis
- **Action item:** Design a system architecture diagram for a complex application and get feedback from senior engineers

- **Performance Optimization**

- Why it matters: AI often prioritizes working code over efficient code
- Key concepts: Profiling, caching strategies, database query optimization
- **Action item:** Take an existing application and identify/fix three performance bottlenecks

- **Security Engineering**

- Why it matters: AI may miss subtle security vulnerabilities
- Key concepts: OWASP Top 10, secure coding practices, threat modeling
- **Action item:** Perform a security audit on an AI-generated codebase
Expand All @@ -157,17 +176,20 @@ The most successful engineers of the future won't be those who can write code th
### 5. Human-Centric Skills That Outpace AI

- **Requirements Gathering and Refinement**

- Why it matters: Translating human needs to technical specifications requires empathy
- Key concepts: User stories, acceptance criteria, stakeholder interviews
- **Action item:** Practice converting vague requirements into specific technical tasks
- **Action item:** Collaborate with a reasoning model to flesh out ambiguous requirements

- **Technical Communication**

- Why it matters: Explaining complex concepts to non-technical stakeholders
- Key concepts: Metaphor, visualization, jargon-free explanation
- **Action item:** Create a technical blog post explaining a complex concept in simple terms

- **Leadership and Mentorship**

- Why it matters: Growing teams and individuals remains a human skill
- Key concepts: Feedback techniques, knowledge sharing, career development
- **Action item:** Mentor a peer or junior developer on a specific skill
Expand All @@ -180,24 +202,28 @@ The most successful engineers of the future won't be those who can write code th
### 6. Advanced AI Collaboration Techniques

- **Prompt Engineering for Code Generation**

- Structuring requests for optimal results
- Providing context and constraints
- Iterative refinement techniques
- **Action item:** Create a personal library of effective prompts for common coding tasks

- **Code Evaluation Frameworks**

- Systematic review approaches
- Common AI code smells
- Verification strategies
- **Action item:** Develop a personal checklist for evaluating AI-generated code

- **Learning Acceleration with AI**

- Using AI to explain unfamiliar code
- Generating practice problems
- Creating personalized learning paths
- **Action item:** Use AI to help learn a new framework or language

- **Codebase Understanding and Documentation**

- Why it matters: AI can help navigate and document unfamiliar codebases
- Key concepts: Code summarization, dependency mapping, documentation generation
- **Action item:** Use AI to analyze and generate documentation for an open-source project
Expand All @@ -212,18 +238,21 @@ The most successful engineers of the future won't be those who can write code th
### 7. Career Development in an AI-Augmented Industry

- **Portfolio Development**

- Showcasing AI-resistant skills
- Demonstrating AI collaboration
- Highlighting problem-solving process
- **Action item:** Create a portfolio project that demonstrates your unique value beyond AI capabilities

- **Interview Strategies**

- Discussing AI collaboration in interviews
- Demonstrating critical thinking
- Showcasing system design skills
- **Action item:** Prepare responses to interview questions about AI tools in your workflow

- **Continuous Learning Approaches**

- Identifying emerging technologies
- Building learning communities
- Creating feedback loops
Expand Down Expand Up @@ -288,13 +317,13 @@ _Part 3: Code Improvement (10 minutes)_
- AI Tool Used: [Tool name]
- Prompt Used: [Your best prompt]

Criteria | Score (1-5) | Issues Found | Improvements Made
---------|-------------|--------------|------------------
Correctness | | |
Security | | |
Performance | | |
Readability | | |
Edge Case Handling | | |
| Criteria | Score (1-5) | Issues Found | Improvements Made |
| ------------------ | ----------- | ------------ | ----------------- |
| Correctness | | |
| Security | | |
| Performance | | |
| Readability | | |
| Edge Case Handling | | |

- Overall Assessment:
- Strengths:
Expand Down Expand Up @@ -409,6 +438,7 @@ Success Metrics:
2.
3.
```

</details>

<details>
Expand Down Expand Up @@ -450,6 +480,7 @@ Trade-offs and Decisions:
2.
3.
```

</details>

### Activity 3: Code Review and Enhancement (120 minutes)
Expand Down Expand Up @@ -542,6 +573,7 @@ Business Logic:
- Incorrect assumptions
- Incomplete functionality
```

</details>

<details>
Expand Down Expand Up @@ -648,6 +680,7 @@ router.post('/reset-password', async (req, res) => {

module.exports = router;
```

</details>

### Activity 4: AI Collaboration Strategy (90 minutes)
Expand Down Expand Up @@ -753,6 +786,7 @@ Skills That Might Be Automated:
1.
2.
```

</details>

<details>
Expand Down Expand Up @@ -801,6 +835,7 @@ Preferred Qualifications:
- Understanding of ethical implications of software development
- Experience with cross-functional collaboration
```

</details>

## Common Mistakes / Misconceptions
Expand Down
8 changes: 8 additions & 0 deletions objectives/quizzes/quiz_big_o_html_forms.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,32 @@
# The Big O & HTML Forms Quiz

_Share a link to your completed version of this file with staff._

### 1. It always takes the same amount of time to find the first element in an array. What is the time complexity (Big O)?

- [ ] Constant time - Constant Complexity O(1)
- [ ] Linear time - Linear Complexity O(n)
- [ ] Quadratic time - Quadratic Complexity O(n^2)
- [ ] I think I kind of understand
- [ ] I don't understand at all

### 2. An algorithm has linear complexity if the time it takes to execute is directly dependent on the size of the input

- [ ] True
- [ ] False
- [ ] I think I kind of understand
- [ ] I don't understand at all

### 3. Run time complexity is:

- [ ] The number of inputs will have a problem for the space in your computer
- [ ] Time Complexity of an algorithm refers to its runtime in relation to an increase or decrease in the number of inputs.
- [ ] It refers to the relationship between your hardware and software
- [ ] I think I kind of understand
- [ ] I don't understand at all

### 4. What is the Big O of the provided JavaScript code snippet?

<img width="546" height="137" alt="big o html form quiz" src="https://github.com/user-attachments/assets/a5eecedb-1d56-4425-a59c-4ceda24a5ad7" />

- [ ] Accessing each element at a specific index in an array is an O(1) operation because it takes a constant amount of time to retrieve the element, regardless of the size of the array
Expand All @@ -30,20 +35,23 @@ _Share a link to your completed version of this file with staff._
- [ ] The code snippet uses divide-and-conquer algorithms such as merge sort, where the data set is repeatedly divided into smaller parts, sorted individually, and then combined

### 5. How do you create HTML forms?

- [ ] `<form> </form>`
- [ ] `<input> </input>`
- [ ] `<table> </table>`
- [ ] I think I kind of understand
- [ ] I don't understand at all

### 6. How do you add validation in the attributes?

- [ ] Using CSS rules
- [ ] You can only do that using DOM Manipulation.
- [ ] Using built-in HTML form validation or using Javascript
- [ ] I think I kind of understand
- [ ] I don't understand at all

### 7. How do you submit the form using HTML?

- [ ] Using DOM Manipulation for your form-handler function
- [ ] The `<input type="submit">` defines a submit button which submits all form values to a form-handler
- [ ] With the `<label type= "required">` option
Expand Down
10 changes: 9 additions & 1 deletion objectives/quizzes/quiz_dom_css.md
Original file line number Diff line number Diff line change
@@ -1,38 +1,46 @@
# DOM and CSS Quiz

_Share a link to your completed version of this file with staff._

### 1. What is the DOM?

- [ ] The Document Object Model
- [ ] An CSS document structured with ID
- [ ] JavaScript tags for HTML

### 2. What is an event listener?

- [ ] CSS selectors
- [ ] Nested elements known as children of their parent element.
- [ ] Events are actions that occur on your webpage such as mouse-clicks or keypresses, and using JavaScript we can make our webpage listen and react to these events.

### 3. How do I select something in the DOM?

- [ ] Selecting something by class name or by ID
- [ ] Adding an HTML tag
- [ ] Using JQuery

### 4. What does the code in the image do?

<img width="683" height="53" alt="dom_css_quiz_const_div" src="https://github.com/user-attachments/assets/c2d4ec0c-bfcd-47ff-9e07-aa1a0d728d53" />
- [ ] Creates an alert for a `div`
- [ ] Creates a CSS tag for a `div`
- [ ] Creates a new div referenced in the variable `div`

### 5. What is CSS?

- [ ] Cascading Style Sheets
- [ ] Cascading Rules Sheets
- [ ] Cascading Selector Styles

### 6. Why Cascading?

- [ ] The cascading algorithm determines how to find the value to apply for each property for each document element.
- [ ] The "Cascading" refers to the cascading amounts of time you will spend adjusting your div
- [ ] The process of combining several style sheets

### 7. What is the difference between a Class and an ID?

- [ ] ID is used to identify one single element in our HTML. A class can be used to identify more than one HTML element.
- [ ] ID is used to identify one single element in our HTML. A class is used to identify their parent element
- [ ] ID is used to identify more than one element in our HTML. A class is used to identify just one element
Loading