
About Course
Software Engineering
Code: 27023-COs-CS
🧑🏫 Introduction
This course provides a comprehensive introduction to Software Engineering, equipping learners with essential knowledge and practical skills to manage and develop high-quality software projects systematically.
📋 Description
Software Engineering encompasses the systematic application of engineering approaches to software development. This course covers all key aspects: from understanding requirements, designing robust architectures, coding best practices, testing strategies, maintenance processes, to modern development methodologies and real-world project execution.
🎯 Objectives (Detailed Outlines)
1. Introduction to Software Engineering
-
Define Software Engineering and explain its importance
-
Differentiate between programming and Software Engineering
-
Understand the Software Development Life Cycle (SDLC) phases
2. Requirements Engineering
-
Techniques for gathering and analyzing requirements
-
How to document requirements with Software Requirements Specification (SRS)
-
Strategies for managing changes in requirements
3. Software Design
-
Core design principles: SOLID, DRY, KISS
-
Study common Design Patterns and their use cases
-
Understand Architectural Patterns for scalable design
4. Implementation
-
Writing clean, readable, and maintainable code
-
Version control management using Git
-
Introduction to Continuous Integration (CI) and Build Automation
5. Software Testing
-
Types of testing: Unit, Integration, System Testing
-
Using testing tools such as JUnit and Selenium
-
Bug tracking and improving software quality
6. Maintenance & Version Control
-
Types of maintenance: Corrective, Adaptive, Perfective
-
Using GitHub for version control and collaboration
-
Continuous documentation and software update management
7. Development Methodologies
-
Compare Agile, Waterfall, and DevOps methodologies
-
Principles of Scrum and Kanban frameworks
-
Applying methodologies in real-world projects
8. Practical Projects
-
Execute a software project from initial idea to delivery
-
Use GitHub to manage project and team contributions
-
Test, deploy, and publish the project in a live environment
📚 What You Will Learn
-
A thorough understanding of software engineering fundamentals and SDLC
-
Practical skills in requirements gathering and documentation
-
How to design software using principles and patterns
-
Clean code best practices and coding standards
-
Effective use of Git and GitHub for version control
-
Comprehensive software testing methods and tools
-
Maintaining and updating software post-deployment
-
Working with Agile, Scrum, Kanban, and DevOps methodologies
-
Delivering a complete software product from concept to production
🎯 Target Audience
-
Junior and mid-level software developers
-
Software engineers and architects
-
Computer science students and learners interested in software development
-
Technical project managers and team leads
-
Anyone interested in a career in professional software development
📦 Materials
-
Interactive lectures and slide decks
-
Detailed course notes and reference PDFs
-
Source code samples and exercises
-
Access to GitHub repositories for hands-on practice
-
Testing frameworks and tools (JUnit, Selenium)
-
Supplementary reading materials
🧑🏫 Instruction Methods
-
Live online lectures with Q&A
-
Practical coding labs and workshops
-
Case study discussions
-
Group projects and collaboration via GitHub
-
Regular assessments and quizzes
⏳ Time Frame
-
Total duration: 8 weeks
-
Weekly workload: 4 hours (lecture + practical work)
-
Overall course hours: 32 hours
💻 Course Format
-
Live virtual sessions with recordings available
-
Online discussion forums for peer interaction
-
Hands-on projects managed through GitHub
-
Continuous instructor support and feedback
✅ Learning Outcomes
After completing this course, learners will be able to:
-
Define and apply Software Engineering concepts effectively
-
Document and manage software requirements professionally
-
Design scalable and maintainable software architectures
-
Write clean and efficient code following industry standards
-
Use Git and GitHub for version control and collaboration
-
Conduct thorough software testing and quality assurance
-
Apply software maintenance best practices
-
Implement Agile, Scrum, and Kanban methodologies in projects
-
Deliver a fully functional, tested, and deployed software application