Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feedback #1

Open
wants to merge 5 commits into
base: feedback
Choose a base branch
from
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
54 changes: 54 additions & 0 deletions Day1Assignment_QandA.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# Software Engineering and AI Prompt Engineering Answers

## Part 1: Introduction to Software Engineering

### Explain what software engineering is and discuss its importance in the technology industry.
Software engineering refers to the systematic approach of creating software applications by applying engineering principles. Its significance in the tech industry lies in ensuring that software is scalable, maintainable, and performs optimally, contributing to the smooth operation of modern digital infrastructures.

### Identify and describe at least three key milestones in the evolution of software engineering.
- *Development of early operating systems* like UNIX, which made software management easier.
- *Introduction of the internet*, which led to new software architectures and collaborative development models.
- *DevOps movement*, combining development and operations for faster, more reliable software deployment.

### List and briefly explain the phases of the Software Development Life Cycle.
1. *Planning*: Establish the scope and purpose of the software.
2. *Analysis*: Gather detailed requirements from stakeholders.
3. *Design*: Architect the software structure and features.
4. *Development*: Actual coding and building of the software components.
5. *Testing*: Identify and fix bugs before release.
6. *Deployment*: Roll out the software to end-users.
7. *Maintenance*: Ongoing support and feature updates.

### Compare and contrast the Waterfall and Agile methodologies. Provide examples of scenarios where each would be appropriate.
- *Waterfall*: A linear, sequential process where each phase is completed before the next begins. It is ideal for projects with fixed requirements, like government contracts.
- *Agile*: Iterative and adaptable, where requirements evolve with customer feedback. It suits projects like social media apps, where user feedback informs changes frequently.

### Describe the roles and responsibilities of a Software Developer, a Quality Assurance Engineer, and a Project Manager in a software engineering team.
1. *Software Developer*: Designs, codes, and modifies the software to meet user requirements.
2. *Quality Assurance (QA) Engineer*: Ensures the software meets quality standards by identifying and reporting defects.
3. *Project Manager*: Coordinates tasks, manages resources, and ensures timely delivery of the project.

### Discuss the importance of Integrated Development Environments (IDEs) and Version Control Systems (VCS) in the software development process. Give examples of each.
1. *IDEs* streamline coding by providing tools like debugging and syntax highlighting (e.g., PyCharm).
2. *VCS* track changes to code, enabling multiple developers to work together effectively (e.g., GitHub).

### What are some common challenges faced by software engineers? Provide strategies to overcome these challenges.
1. *Managing complex codebases*: Use clear documentation and modular code to make it easier to maintain.
2. *Scope creep in projects*: Set clear, upfront project goals and maintain open communication with clients to manage expectations.
3. *Keeping up with new technologies*: Continuous learning and attending industry conferences can help stay updated.

### Explain the different types of testing (unit, integration, system, and acceptance) and their importance in software quality assurance.
1. *Unit Testing*: Focuses on verifying that individual components work as expected.
2. *Integration Testing*: Ensures multiple components function together properly.
3. *System Testing*: Verifies that the entire application operates as a cohesive system.
4. *Acceptance Testing*: Validates that the final product meets business and user requirements.

## Part 2: Introduction to AI and Prompt Engineering

### Define prompt engineering and discuss its importance in interacting with AI models.
Prompt engineering involves creating specific, well-structured inputs to guide AI models in generating accurate outputs. It's essential because the clarity and precision of a prompt directly influence the relevance and accuracy of the AI's responses.

### Provide an example of a vague prompt and then improve it by making it clear, specific, and concise. Explain why the improved prompt is more effective.
*Vague Prompt*: "Summarize this."

*Improved Prompt*: "Summarize the following article in 3 sentences, focusing on the key points about climate change solutions."
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
[![Open in Visual Studio Code](https://classroom.github.com/assets/open-in-vscode-2e0aaae1b6195c2367325f4f02e2d04e9abb55f0b24a779b69b11b9e10269abc.svg)](https://classroom.github.com/online_ide?assignment_repo_id=16609565&assignment_repo_type=AssignmentRepo)
# SE_Day1
Software Engineering Day1 Assignment

Expand Down
44 changes: 44 additions & 0 deletions day1_assignment_answers.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Software Engineering and AI Prompt Engineering Answers

## Part 1: Introduction to Software Engineering

1. Software engineering refers to the systematic approach of creating software applications by applying engineering principles. Its significance in the tech industry lies in ensuring that software is scalable, maintainable, and performs optimally, contributing to the smooth operation of modern digital infrastructures.

2. - Development of early operating systems like UNIX, which made software management easier.
- Introduction of the internet, which led to new software architectures and collaborative development models.
- DevOps movement, combining development and operations for faster, more reliable software deployment.

3. - **Planning:** Establish the scope and purpose of the software.
- **Analysis:** Gather detailed requirements from stakeholders.
- **Design:** Architect the software structure and features.
- **Development:** Actual coding and building of the software components.
- **Testing:** Identify and fix bugs before release.
- **Deployment:** Roll out the software to end-users.
- **Maintenance:** Ongoing support and feature updates.

4. - **Waterfall:** A linear, sequential process where each phase is completed before the next begins. Ideal for projects with fixed requirements, like government contracts.
- **Agile:** Iterative and adaptable, where requirements evolve with customer feedback. Suits projects like social media apps, where user feedback informs changes frequently.

5. - **Software Developer:** Designs, codes, and modifies the software to meet user requirements.
- **Quality Assurance (QA) Engineer:** Ensures the software meets quality standards by identifying and reporting defects.
- **Project Manager:** Coordinates tasks, manages resources, and ensures timely delivery of the project.

6. - **IDEs:** Streamline coding by providing tools like debugging and syntax highlighting (e.g., PyCharm).
- **VCS:** Track changes to code, enabling multiple developers to work together effectively (e.g., GitHub).

7. - **Managing complex codebases:** Use clear documentation and modular code to make it easier to maintain.
- **Scope creep in projects:** Set clear, upfront project goals and maintain open communication with clients to manage expectations.
- **Keeping up with new technologies:** Continuous learning and attending industry conferences can help stay updated.

8. - **Unit Testing:** Focuses on verifying that individual components work as expected.
- **Integration Testing:** Ensures multiple components function together properly.
- **System Testing:** Verifies that the entire application operates as a cohesive system.
- **Acceptance Testing:** Validates that the final product meets business and user requirements.

## Part 2: Introduction to AI and Prompt Engineering

1. Prompt engineering involves creating specific, well-structured inputs to guide AI models in generating accurate outputs. It's essential because the clarity and precision of a prompt directly influence the relevance and accuracy of the AI's responses.

2. - **Vague Prompt:** "Summarize this."
- **Improved Prompt:** "Summarize the following article in 3 sentences, focusing on the key points about climate change solutions."
- **Explanation:** The improved prompt is more effective because it provides clear instructions on length and focus, leading to a more targeted response from the AI.
Loading