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
Empty file added .github/.keep
Empty file.
38 changes: 38 additions & 0 deletions .github/workflows/classroom.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: Autograding Tests
'on':
- push
- repository_dispatch
permissions:
checks: write
actions: read
contents: read
jobs:
run-autograding-tests:
runs-on: ubuntu-latest
if: github.actor != 'github-classroom[bot]'
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Quiz 1
id: quiz-1
uses: classroom-resources/autograding-io-grader@v1
with:
test-name: Quiz 1
setup-command: ''
command: Which of the following best describes software engineering?
input: |-
a) The study of hardware components
b) The process of designing, developing, and maintaining software
c) The analysis of networking protocols
d) The management of data storage systems
expected-output: b) The process of designing, developing, and maintaining
software
comparison-method: exact
timeout: 10
max-score: 10
- name: Autograding Reporter
uses: classroom-resources/autograding-grading-reporter@v1
env:
QUIZ-1_RESULTS: "${{steps.quiz-1.outputs.result}}"
with:
runners: quiz-1
67 changes: 65 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,36 +1,99 @@
[![Open in Visual Studio Code](https://classroom.github.com/assets/open-in-vscode-2e0aaae1b6195c2367325f4f02e2d04e9abb55f0b24a779b69b11b9e10269abc.svg)](https://classroom.github.com/online_ide?assignment_repo_id=18343747&assignment_repo_type=AssignmentRepo)
# SE_Day1
Software Engineering Day1 Assignment

#Part 1: Introduction to Software Engineering

Explain what software engineering is and discuss its importance in the technology industry.

Software engineering is the structured process of designing, developing, testing, and maintaining software applications.Software engineers ensure programs run smoothly and efficiently.

Why is this important? Imagine if we didn’t have structured development processes—our favorite apps would constantly crash, security breaches would be everywhere, and updates would be chaotic. Software engineering ensures quality, security, and reliability, making technology a fundamental pillar of modern life.

Identify and describe at least three key milestones in the evolution of software engineering.
Key Milestones in Software Engineering

Software engineering didn’t just appear overnight. It evolved over time as technology and software complexity grew. Here are three major milestones that shaped the field:

1. The Birth of Software Engineering (1968)
In the 1960s, software development was in chaos—programmers wrote code without structured methodologies, leading to unreliable and difficult-to-maintain software. The term "software engineering" was coined at a NATO conference to emphasize the need for systematic approaches, just like traditional engineering disciplines.

2. The Waterfall Model (1970s)
Dr. Winston Royce introduced the Waterfall Model, which became the first structured approach to software development. It followed a linear sequence—requirements first, then design, implementation, testing, deployment, and maintenance. It was great for large-scale projects but struggled with changes.

3. The Agile Revolution (2001)
Fast forward to 2001, when software development needed a more flexible approach. A group of developers introduced the Agile Manifesto, emphasizing iteration, collaboration, and adaptability. This gave rise to Agile methodologies like Scrum and Kanban, which power most modern software development today.

List and briefly explain the phases of the Software Development Life Cycle.
Software doesn’t just happen; it follows a structured process known as the Software Development Life Cycle (SDLC). Here’s a breakdown:

1.Planning – What are we building? Why? What resources do we need?
2.Requirements Gathering – Understanding what the software should do.
3.Design – Creating blueprints, both visual (UI/UX) and architectural.
4.Implementation (Coding) – Writing the actual code.
5.Testing – Ensuring the software is bug-free and works as expected.
6.Deployment – Releasing the software for real users.
7.Maintenance – Fixing bugs and improving features over time.

Compare and contrast the Waterfall and Agile methodologies. Provide examples of scenarios where each would be appropriate.

Waterfall Methodology
Approach: Follows a linear and sequential process.
Changes: Difficult to implement once the development process starts.
Team Collaboration: Less frequent, as each phase is completed before moving to the next.
Best for: Large, well-defined projects such as government or enterprise software where requirements are clear from the beginning.

Agile Methodology
Approach: Uses an iterative and flexible process, allowing continuous improvements.
Changes: Easy to adapt, as requirements can evolve throughout the development process.
Team Collaboration: Continuous collaboration among developers, testers, and stakeholders.
Best for: Dynamic environments like startups or tech companies where features need to be adjusted based on user feedback.

Describe the roles and responsibilities of a Software Developer, a Quality Assurance Engineer, and a Project Manager in a software engineering team.

Software Developer: The backbone of software creation—writes and maintains the code.
Quality Assurance Engineer (QA): Ensures the software is bug-free and meets quality standards.
Project Manager (PM): Oversees the entire project, manages deadlines, and ensures smooth team coordination.

Discuss the importance of Integrated Development Environments (IDEs) and Version Control Systems (VCS) in the software development process. Give examples of each.

Software development tools make coding efficient:

What are some common challenges faced by software engineers? Provide strategies to overcome these challenges.
IDEs (Integrated Development Environments):

Examples: VS Code, PyCharm, IntelliJ
These provide a workspace with features like debugging, syntax highlighting, and code suggestions.
VCS (Version Control Systems):

Examples: Git, GitHub, GitLab
These help teams collaborate and track changes to the codebase. Ever saved multiple versions of a document? Git does that but smarter!

What are some common challenges faced by software engineers? Provide strategies to overcome these challenges.
Keeping Up with Rapid Tech Changes → Follow tech blogs, take online courses, and engage in continuous learning.
Meeting Deadlines → Use Agile methodologies, break work into sprints, and use time management tools.
Debugging Nightmare → Leverage debugging tools, write clean code, and do peer reviews.

Explain the different types of testing (unit, integration, system, and acceptance) and their importance in software quality assurance.
Software bugs can be costly, so testing is crucial:

1.Unit Testing: Tests individual components (e.g., a function).
2.Integration Testing: Ensures different modules work together.
3.System Testing: Tests the complete system for errors.
4.Acceptance Testing: Checks if the software meets user expectations.

#Part 2: Introduction to AI and Prompt Engineering


Define prompt engineering and discuss its importance in interacting with AI models.
It’s the art of crafting clear and precise inputs to get useful responses from AI models.

As AI is integrated into search engines, customer service, and content creation, knowing how to communicate effectively with AI is becoming a valuable skill.

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.
Let’s see how a well-structured prompt improves AI responses:

Vague Prompt: "Tell me about AI."

This could return anything—definitions, history, applications, or even unrelated information.
Improved Prompt: "Explain artificial intelligence, its different types (narrow AI vs. general AI), and real-world applications in healthcare and finance."

This provides clear expectations for the AI, leading to a more focused and useful response.