Software Engineering - Syllabus
Embark on a profound academic exploration as you delve into the Software Engineering course () within the distinguished Tribhuvan university's CSIT department. Aligned with the 2074 Syllabus, this course (CSC364) seamlessly merges theoretical frameworks with practical sessions, ensuring a comprehensive understanding of the subject. Rigorous assessment based on a 80+20 marks system, coupled with a challenging passing threshold of , propels students to strive for excellence, fostering a deeper grasp of the course content.
This 3 credit-hour journey unfolds as a holistic learning experience, bridging theory and application. Beyond theoretical comprehension, students actively engage in practical sessions, acquiring valuable skills for real-world scenarios. Immerse yourself in this well-structured course, where each element, from the course description to interactive sessions, is meticulously crafted to shape a well-rounded and insightful academic experience.
Course Description:
This course familiarizes students with different concepts of software engineering mainly focusing on software process models, agile development, requirements engineering, models, design, implementation, testing, evolution, and software project management.
Course Objectives:
The main objective of this course is to provide knowledge of different concepts of software engineering so that students will be able to develop high quality software using different software management skills.
Units
Key Topics
-
Introduction to Computers
IN-01An overview of computers and their significance in today's world. This topic sets the stage for understanding the basics of computers.
-
Digital and Analog Computers
IN-02Understanding the difference between digital and analog computers, their characteristics, and applications.
-
Characteristics of Computers
IN-03Exploring the key characteristics of computers, including input, processing, storage, and output.
-
History of Computers
IN-04A brief history of computers, from their inception to the present day, highlighting key milestones and developments.
-
Generations of Computers
IN-05Understanding the different generations of computers, including their features, advantages, and limitations.
-
Classification of Computers
IN-06Categorizing computers based on their size, functionality, and application, including desktops, laptops, and mobile devices.
-
The Computer System
IN-07An in-depth look at the components of a computer system, including hardware and software.
-
Applications of Computers
IN-08Exploring the various applications of computers in different fields, including business, education, and healthcare.
-
Overview of Electronic Transaction Act of Nepal
IN-10Understanding the legal framework governing E-commerce in Nepal.
-
Application Areas
IN-09This topic explores the various application areas of simulation, including engineering, economics, and healthcare.
-
Software Engineering Ethics
IN-11Ethical considerations and principles in software engineering, including accountability, privacy, and intellectual property.
Key Topics
-
Errors in Numerical Calculations
SO-1This topic covers the sources of errors in numerical calculations, propagation of errors, and a review of Taylor's Theorem.
-
Trial and Error Method
SO-2This topic explains the trial and error method for solving non-linear equations, including its convergence.
-
Half-Interval Method
SO-3This topic covers the half-interval method for solving non-linear equations, including its convergence.
-
Newton's Method
SO-4This topic explains Newton's method for solving non-linear equations, including its convergence and application to calculating multiple roots.
-
Secant Method
SO-5This topic covers the secant method for solving non-linear equations, including its convergence.
Key Topics
-
Agile Development
AG-1Introduction to Agile development, its principles, and benefits. Understanding the Agile mindset and its application in software development.
-
Plan-Driven vs. Agile Development
AG-2Comparing and contrasting plan-driven and Agile development approaches. Understanding the strengths and weaknesses of each approach.
-
Agile Methods
AG-3Overview of popular Agile methods such as Scrum, Kanban, Lean, and Extreme Programming (XP). Understanding the core values and principles of each method.
-
Agile Development Techniques
AG-4Exploring Agile development techniques such as user stories, acceptance testing, continuous integration, and refactoring. Understanding how these techniques support Agile development.
-
Introduction to Agile Project Management
AG-5Understanding the role of project management in Agile development. Introduction to Agile project management frameworks and tools.
Key Topics
-
Concept of User and System Requirements
RE-01Understanding the different types of requirements from the user and system perspective. This topic covers the fundamental concepts of user requirements and system requirements.
-
Functional and Non-Functional Requirements
RE-02Distinguishing between functional requirements that define what the system must do and non-functional requirements that define how the system should perform.
-
Requirements Engineering Process
RE-03The systematic approach to defining, analyzing, documenting, and maintaining requirements throughout the software development lifecycle.
-
Requirements Elicitation
RE-04The process of gathering requirements from stakeholders through various techniques such as interviews, surveys, and observation.
-
Requirements Specification
RE-05Documenting and specifying requirements in a clear, concise, and unambiguous manner to ensure stakeholder understanding.
-
Requirements Validation
RE-06Ensuring that the specified requirements meet the stakeholder needs and are feasible to implement.
-
Requirements Change
RE-07Managing changes to requirements throughout the software development lifecycle to ensure that the system meets the evolving stakeholder needs.
Key Topics
-
Introduction to System Modeling
SY-01Overview of system modeling, its importance, and applications in software engineering.
-
Context Models
SY-02Understanding the context of a system, including its environment, boundaries, and interactions.
-
Interaction Models
SY-03Modeling interactions between systems, including communication, data exchange, and dependencies.
-
Structural Models
SY-04Representing the internal structure of a system, including components, relationships, and architecture.
-
Behavioral Models
SY-05Modeling the behavior of a system, including its dynamics, processes, and responses to stimuli.
-
Model-Driven Architecture
SY-06Using models to drive the design, development, and deployment of software systems.
Key Topics
-
Introduction to Architectural Design
AR-101Overview of architectural design in software engineering, its importance, and role in the software development life cycle.
-
Architectural Design Decisions
AR-102Key considerations and factors that influence architectural design decisions, including functional and non-functional requirements.
-
Architectural Views
AR-103Different perspectives or views of a software system's architecture, including logical, physical, and conceptual views.
-
Architectural Patterns
AR-104Reusable solutions to common architectural design problems, including creational, structural, and behavioral patterns.
-
Application Architectures
AR-105High-level structures of software applications, including monolithic, microservices, and event-driven architectures.
Key Topics
-
Designing Databases
DE-1This topic covers the fundamentals of designing databases, including the relational database model, normalization, and transforming E-R diagrams into relations.
-
Designing Forms and Reports
DE-2This topic focuses on designing forms and reports, including formatting and assessing usability to create effective user interfaces.
-
Designing Interfaces and Dialogues
DE-3This topic explores the design of interfaces and dialogues, including interaction methods and devices, and designing interfaces and dialogues in graphical environments.
-
Implementation Issues
DE-4Addressing common challenges and considerations that arise during the implementation phase of software development.
-
Open-Source Development
DE-5Exploring the principles, benefits, and best practices of open-source software development.
Key Topics
-
Software Project Management
SO-01Overview of software project management, including activities and best practices to ensure successful project delivery.
-
Project Planning
SO-02Detailed planning of software projects, including software pricing, plan-driven development, project scheduling, estimation techniques, and COCOMO cost modeling.
-
Risk Management
SO-03Identifying, assessing, and mitigating risks in software projects to minimize potential threats and ensure successful project delivery.
-
People Management
SO-04Effective management of project team members, including communication, collaboration, and conflict resolution.
-
Reporting and Proposal Writing
SO-05Creating effective reports and proposals to stakeholders, including project status updates, progress reports, and bid proposals.
-
Introduction to Quality Management
SO-06Fundamentals of quality management in software development, including quality assurance, quality control, and quality metrics.
-
Configuration Management
SO-07Managing changes to software configurations, including version control, change control, and release management.
-
User Testing
SO-08Testing techniques and methods used to validate software from the user's perspective.
Key Topics
-
Errors in Numerical Calculations
SO-1This topic covers the sources of errors in numerical calculations, propagation of errors, and a review of Taylor's Theorem.
-
Trial and Error Method
SO-2This topic explains the trial and error method for solving non-linear equations, including its convergence.
-
Half-Interval Method
SO-3This topic covers the half-interval method for solving non-linear equations, including its convergence.
Key Topics
-
Software Project Management
SO-01Overview of software project management, including activities and best practices to ensure successful project delivery.
-
Project Planning
SO-02Detailed planning of software projects, including software pricing, plan-driven development, project scheduling, estimation techniques, and COCOMO cost modeling.
-
Risk Management
SO-03Identifying, assessing, and mitigating risks in software projects to minimize potential threats and ensure successful project delivery.
-
People Management
SO-04Effective management of project team members, including communication, collaboration, and conflict resolution.
-
Reporting and Proposal Writing
SO-05Creating effective reports and proposals to stakeholders, including project status updates, progress reports, and bid proposals.
-
Introduction to Quality Management
SO-06Fundamentals of quality management in software development, including quality assurance, quality control, and quality metrics.
-
Configuration Management
SO-07Managing changes to software configurations, including version control, change control, and release management.
Lab works
Laboratory / Project Work:
Students should prepare a project report along with software product using different concepts of software engineering. The project can be done in groups with at most four members in each group using any suitable database, programming, interfacing technologies, and project management concepts.