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
80 changes: 78 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,36 +1,112 @@
[![Open in Visual Studio Code](https://classroom.github.com/assets/open-in-vscode-2e0aaae1b6195c2367325f4f02e2d04e9abb55f0b24a779b69b11b9e10269abc.svg)](https://classroom.github.com/online_ide?assignment_repo_id=18495252&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 a branch of technology that deals with developers or software engineers writing codes or instructions to design apps and systems that are simple and easy to use and solve real-life problems, thereby making the world more developed and making users' lives less stressful. theses softwares are used for communications e.g Whatapp, commerce e.g jumia


Identify and describe at least three key milestones in the evolution of software engineering.
.Development of programming languages (e.g., Fortran, C).
.The establishment of software engineering as a discipline in the 1960s.
.The advent of structured programming in the 1970s.


List and briefly explain the phases of the Software Development Life Cycle.
.Requirements: Gathering users' needs & system requirements.
.Design: Creating the software architecture & user interface.
. Implementation: Writing code and building according to specifications.
.Testing: Conducting various tests to ensure it meets standard requirements
. Deployment: Releasing the software to users or customers
. Maintenance: Providing ongoing support, updates, and enhancement to the software after deployment


Compare and contrast the Waterfall and Agile methodologies. Provide examples of scenarios where each would be appropriate.
Feature Waterfall Agile
Approach Step-by-step, linear process Iterative, flexible process
Planning Detailed upfront planning Continuous planning & adapting
Changes Hard to make changes once started Easy to adjust as needed
Delivery Final product delivered at the end Small updates delivered frequently
Best For Predictable, well-defined projects Fast-changing, user-focused projects

When to Use Each

Describe the roles and responsibilities of a Software Developer, a Quality Assurance Engineer, and a Project Manager in a software engineering team.
Waterfall Example: Building a bridge or medical software—where strict planning and approvals are needed.
Agile Example: Developing a mobile app or e-commerce website—where feedback and updates are frequent.

Describe the roles and responsibilities of a Software Developer, a Quality Assurance Engineer, and a Project Manager in a software engineering team.
- Quality Assurance Engineer: Ensures software quality by designing and executing test plans.

- Project Manager: Oversees the planning, execution, and delivery of software projects.

Discuss the importance of Integrated Development Environments (IDEs) and Version Control Systems (VCS) in the software development process. Give examples of each.
Integrated Development Environments (IDEs)
.Help developers write, test, and debug code in one place.
.Provide features like auto-complete, error checking, and built-in tools.
Example: Visual Studio Code (VS Code) – A popular IDE for web development.


Version Control Systems (VCS)
.Track changes in code, making it easy to undo mistakes.
.Allow multiple developers to work on the same project without conflicts.
Example: Git + GitHub – Used to manage and share code online.

What are some common challenges faced by software engineers? Provide strategies to overcome these challenges.
1. Debugging Complex Errors
Challenge: Finding and fixing hidden bugs.
Solution: Use debugging tools, log errors, and break down the problem step by step.

2. Keeping Up with New Technologies
Challenge: Tech evolves fast, making it hard to stay updated.
Solution: Follow coding blogs, take online courses, and practice new skills regularly.

Explain the different types of testing (unit, integration, system, and acceptance) and their importance in software quality assurance.
3. Managing Time & Deadlines
Challenge: Balancing multiple tasks and meeting deadlines.
Solution: Use project management tools (like Trello, Jira) and break work into smaller tasks.

4. Working with Teams & Communication
Challenge: Misunderstandings and conflicts in a team.
Solution: Use clear documentation, regular meetings, and collaboration tools (like Slack, GitHub).


Explain the different types of testing (unit, integration, system, and acceptance) and their importance in software quality assurance.
1. Unit Testing
What it is: Tests individual parts (functions, methods) of the code.
Importance: Catches small bugs early and ensures each piece works correctly.
Example: Checking if a login function returns the correct response.

2. Integration Testing
What it is: Tests how different parts of the system work together.
importance: Ensures modules communicate properly and don’t break when combined.
Example: Checking if a shopping cart correctly updates after adding an item.

3. System Testing
What it is: Tests the entire application as a whole.
Importance: This confirms that the system meets requirements and works as expected.
Example: Verifying that an e-commerce site handles payments smoothly.

5. Acceptance Testing
What it is: Final testing to check if the software meets user needs.
Importance: Ensures the product is ready for launch.
Example: A client is testing a web app before approving deployment.

#Part 2: Introduction to AI and Prompt Engineering


Define prompt engineering and discuss its importance in interacting with AI models.
Prompt engineering is the practice of designing effective inputs (prompts) to guide AI models in generating accurate and useful responses.

Why is it Important?
Better Responses – Well-structured prompts help AI give clear and relevant answers.
Efficiency – Reduces the need for retries by getting the right output faster.
Customization – Helps tailor AI outputs for specific tasks, like summarization or coding.



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.
Example:
❌ "Tell me about history."
✅ "Summarize the causes and effects of World War II in 5 sentences." (Clear and specific)