Computing and Software Engineering
(GET 211)
Fundamentals & Applications
Engr. Dr. C. K. Joe-Uzuegbu
(Ag. HOD, CPE)
Brief Overview
Computing vs Software Engineering
Computing = the study and use of computers and
computational systems to process, manage, and communicate
information.
Software engineering = the application of engineering
principles and techniques to the design, development,
testing, and maintenance of software systems.
• Drives innovation and economic
growth
Importance of Computing and Software Engineering
• Improves healthcare, education,
and communication
• Enhances productivity and
efficiency
• Supports scientific research and
discovery
Learning Objectives
• Understand the fundamentals of computing and
software engineering
• Learn about the software development life cycle and
design patterns
• Appreciate the importance of testing and validation
• Explore career paths and opportunities in computing and
software engineering
Scope
• Introduction to computing and software
engineering
• Computing basics
• Programming fundamentals
• Software engineering basics
• Software development life cycle
• Design patterns and principles
• Testing and validation
• Conclusion and future directions
What is Computing?
Computing refers to the study and use of
computers and computational systems to
process, manage, and communicate information.
Key concepts in Computing
• Algorithms
• Data structures
• Computer architecture
• Programming languages
Components of Computing
• Hardware components (CPU, memory, storage)
• Software components (operating system, applications)
Current Trends in Computing
• Artificial intelligence and machine learning
• Cloud computing and big data
• Internet of Things (IoT)
• Cybersecurity
What is Programming?
Programming is the process of designing, writing,
testing, and maintaining the source code of
computer programs.
Programming Languages
Examples:
• Python
• Java
• C++
• JavaScript
Basic Programming Concepts
• Variables
• Control structures
• Functions
• Data types
Programming Paradigms
• Imperative programming
Object-oriented programming
Procedural oriented
• Declarative programming
Functional programming
Logical
Tools and Environments for
Programming
• Integrated development environments (IDEs)
• Text editors
• Version control systems
What is Software Engineering?
Software engineering is the application of
engineering principles and techniques to the
design, development, testing, and maintenance
of software systems.
Key Concepts in Software Engineering
Software development life cycle
• Design patterns
• Testing and validation
• Software maintenance
• Planning
Software Engineering
Methodologies
• Agile
• Waterfall
• DevOps
Roles and Responsibilities in Software Engineering
• Software engineer
• Project manager
• Quality assurance engineer
Importance of Software Engineering
• Ensures software quality and reliability
• Reduces software development time and cost
• Improves software maintainability and scalability
Software Development Life
Cycle (SDLC)
Phases:
- Requirements gathering
- Design
- Implementation
- Testing
- Deployment
SDLC Models
Examples:
• Waterfall
• Agile
• V-Model
Design Patterns
Definition: Reusable solutions to common software
design problems
E.g.
- Singleton pattern
- Factory pattern
- Observer pattern
Design Principles
- Examples:
- SOLID principles
- KISS principle
Testing and Validation
- Definition: Ensuring software quality and correctness
through systematic testing and validation
Types of testing:
• - Unit testing
• - Integration testing
• - System testing
• - Acceptance testing
Testing Techniques
- Examples:
• Black box testing
• White box testing
• Gray box testing
• Equivalence partitioning
• Boundary value analysis
-
Software Maintenance
Definition: Modifying and updating software systems
after deployment
Types of maintenance:
- Corrective maintenance
- Adaptive maintenance
- Perfective maintenance
- Preventive maintenance
Software Engineering Tools
Examples:
- Integrated development environments (IDEs)
- Version control systems
- Project management tools
- Testing frameworks
Challenges in Software Engineering
• Ensuring software quality and reliability
• Managing complexity and scalability
• Meeting changing user requirements
• Dealing with technical debt
Best Practices in Software
Engineering
• Follow a systematic approach to software development
• Use design patterns and principles
• Test thoroughly and regularly
• Refactor and maintain code
Software Engineering Ethics
- Respect for intellectual property
- Protection of user data and privacy
- Avoidance of harm to users and society
- Honesty and transparency in software development
Future of Software Engineering
Increased use of artificial intelligence and machine learning
• - Growing importance of cybersecurity and data
protection
• - Continued adoption of cloud computing and big data
• - Emerging trends in IoT and augmented reality
Thank You