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
51 changes: 43 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,36 +1,71 @@
[![Open in Visual Studio Code](https://classroom.github.com/assets/open-in-vscode-2e0aaae1b6195c2367325f4f02e2d04e9abb55f0b24a779b69b11b9e10269abc.svg)](https://classroom.github.com/online_ide?assignment_repo_id=18421258&assignment_repo_type=AssignmentRepo)
# SE_Day1
Software Engineering Day1 Assignment

#Part 1: Introduction to Software Engineering

Software engineering is the systematic application of engineering principles to software development. It involves designing, developing, testing, and maintaining software to ensure it is reliable, efficient, and scalable.
Explain what software engineering is and discuss its importance in the technology industry.


Identify and describe at least three key milestones in the evolution of software engineering.
The Birth of High-Level Programming Languages (1950s-60s)

Languages like FORTRAN and COBOL were developed, making programming more accessible.
The Introduction of Structured Programming (1970s)

List and briefly explain the phases of the Software Development Life Cycle.
This approach, promoted by pioneers like Edsger Dijkstra, improved software organization and readability.
The Agile Manifesto (2001)

Agile methodologies revolutionized software development by emphasizing adaptability, collaboration, and customer feedback.

Compare and contrast the Waterfall and Agile methodologies. Provide examples of scenarios where each would be appropriate.
List and briefly explain the phases of the Software Development Life Cycle.
Requirement Analysis – Understanding the needs of users and stakeholders.
Planning – Defining scope, budget, and timeline.
Design – Creating software architecture and UI/UX designs.
Implementation (Coding) – Writing the actual software code.
Testing – Ensuring the software works correctly and meets requirements.
Deployment – Releasing the software for end users.
Maintenance – Updating and fixing bugs over time.

Compare and contrast the Waterfall and Agile methodologies. Provide examples of scenarios where each would be appropriate.
Feature Waterfall Agile
Approach Sequential, phase-by-phase Iterative, incremental
Flexibility Rigid, hard to change scope Adaptable, welcomes change
Delivery Final product at the end Frequent smaller releases
Best For Well-defined projects (e.g., military software) Dynamic projects (e.g., mobile apps)

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

Software Developer – Writes and maintains code, builds applications.
Quality Assurance (QA) Engineer – Tests the software, finds and reports bugs.
Project Manager – Plans, organizes, and ensures the project meets deadlines.

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

IDEs (Integrated Development Environments) streamline coding with features like syntax highlighting and debugging. Examples: Visual Studio Code, IntelliJ IDEA, PyCharm.
🔹 Version Control Systems (VCS) help teams track and manage code changes. Examples: Git, GitHub, GitLab.

What are some common challenges faced by software engineers? Provide strategies to overcome these challenges.

Managing Technical Debt → Use clean coding practices and refactor regularly.
Debugging Complex Issues → Use logging, debugging tools, and peer reviews.
Staying Updated with New Technologies → Follow industry blogs, take courses, and attend conferences.

Explain the different types of testing (unit, integration, system, and acceptance) and their importance in software quality assurance.

Unit Testing – Tests individual components (e.g., testing a login function).
Integration Testing – Ensures different modules work together (e.g., database and front-end interaction).
System Testing – Tests the entire application as a whole.
Acceptance Testing – Confirms software meets user requirements before release.

#Part 2: Introduction to AI and Prompt Engineering


Define prompt engineering and discuss its importance in interacting with AI models.

Prompt engineering is the skill of crafting precise and effective prompts to get accurate and meaningful responses from AI models like ChatGPT. It is crucial because a well-written prompt leads to better AI-generated results, making AI more useful for tasks like coding, content creation, and research.

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: "Tell me about history."
✅ Improved Prompt: "Give me a summary of World War II, including key events from 1939 to 1945 and its impact on global politics."

👉 Why is the improved prompt better?

It’s specific (focuses on WWII, not all history).
It sets clear expectations (key events + impact).
The AI knows what time frame to focus on.