Software Engineering

The focus of the courses in this Certificate are the principle elements of current and emerging advanced software engineering that address the full life cycle of software development (e.g., requirements, analysis & design, strategy & planning, component-based architecture, configuration management & integration, group dynamics, testing, verification & validation, full stack programming, Agile, Scrum, DevOps, design thinking, leveraging AI) and the management, governance, and organizational considerations for successful deployment.

After successful completion of this program, candidates will also receive ICCP Certification!!!

Information technologies touch every segment of society, driving change and innovation across every industry.  As organizations integrate new technologies to compete in the global environment, they require more computer software engineers to implement those new technologies. Today’s complex and competitive business environment demands that companies vigilantly ensure the reliability and integrity of computer systems to avoid costly and potentially catastrophic disruption.  But, some of the mistakes from the past continue to be made.  To ensure success and guard against failure, alert industries engage technically qualified experts with sound managerial judgment.

The World Economic Forum estimates that over 130 million jobs will be created globally in new professions, where demand for data scientists, software engineers and a myriad of roles requiring digital skills are growing rapidly. In addition, successful managers and leaders increasingly require a strong working knowledge of digital technologies, as well as 21st century leadership skills including the ability to be adaptable, innovative and creative.


This certificate offers what candidates need to know to understand fail-safe computer systems, both rapidly and prudently. The Software Engineering Certificate provides a foundation in technical concepts and design techniques, as well as management, organizational, governance, and teamwork approaches, for building software systems. The emphasis of this certificate is on implementing software engineering projects within cost and schedule by applying the most current proven and innovative practices that overcome the shortcomings of an undisciplined approach.  The implications of AI on SW engineering will be covered as a fundamental topic throughout all of the courrses.   

The software industry is under intense pressure to deliver quality software. Because software production remains a labor intensive activity, the demand for large volumes of high quality software translates into a strong demand for qualified software engineers. This certificate is comprised of an appropriate balance of theoretical computer science foundations and IT management considerations that afford candidates with the means to remain abreast of developments in software engineering in the long term and practical applications that afford graduates the means to be operational in the short term. 

 Building on the lessons learned from the past is fundamental.   Managers and software professionals who enroll in this certificate will become authorities on quantitative, rather than qualitative problem-solving methods, while learning to deal with a broad spectrum of enterprises—from small-scale to large complex projects.

Select at least 4 courses from the following:

(All courses are available live/synchronously face-to-face & online)


Prerequisites: Programming experience with Python, Java.

1.   Analysis & Development of IS Services/Applications

This course presents and analyzes various approaches to information analysis and development of organizational information systems within a system development life cycle (SDLC), e.g. the waterfall, concentric, agile, Scrum, and prototyping approaches. Topics include strategic planning for SDLC, front-end and back-end phases of SDLC, project management, CASE methodologies, agile, development, Scrum, and balancing user, organizational, and technical considerations.

 

2.   Integrating IT Services

This course focuses on ways of designing an integrated enterprise architecture. The course explains the different forms of corporate information systems and their interaction. Mainframe systems and Cloud will be the focus of the architecture. While in the past, mainframe systems were often self-contained, in current systems, it is more likely that such systems are part of an overall architecture including many smaller hardware devices and operating systems. The participant will learn about the building blocks of current enterprise architectures, and then will learn how to connect them to solve the problems of large companies.

 

3.   Fundamentals of SW Engineering

Introduces software engineering from a quantitative—analytic and metrics-based—point of view. Become acquainted with software life-cycle process models (e.g., SDLC, agile, Scrum) from those demanded by very large projects, to the lightest in extreme programming. Skillfully apply industry-standard software engineering tools. Engage creatively in teamwork, project planning, and object-oriented analysis and design. Probe case histories in project-oriented scenarios.

 

4.   SW Estimation & Measurement

The purpose of this course is to prepare participants with the essential considerations for software estimation and measurement. The focus is on applying proven methods, tools, techniques and models that have been shown to demonstrate value to the software estimation and measurement process to both IT and non-IT stakeholders. The important techniques such as analogy, top-down, bottom-up, and expert judgment will be covered. The use of models for developing estimates, performing “what-if” analysis, bounding risks, and conducting a variety of trade studies will also be highlighted, as will the metrics that can be used to pinpoint status and assess progress. The course uses a variety of examples, case studies, and hands-on exercises to develop estimating skills, knowledge and abilities, including the use of actual cost model cases developed using the public domain COCOMO II model, to highlight their use and value to the developer. Participants will leave the course fully prepared to develop or validate a software estimate, assess their status, and progress and predict whether or not they will be delivered on-time and on budget, as well as meet the project functional requirements.

 

5.   SW Requirements Analysis

One of the least understood and most difficult phases in software development, requirements acquisition is an especially high hurdle because stakeholders are often unclear about objectives. Learn how to identify stakeholders and how to elicit and verify their requirements for new or extended software products. Introduces analysis and modeling as the first steps in software design. Receive a though understanding of quality assurance. A case-history and project-oriented course, exploiting industry-standard software tools.

 

6.   SW Testing and Quality Assurance

Effective software testing is the hallmark of trustworthy software systems. In this course, participants learn about the various modes of testing needed for quality software systems. Get an intensive look at real-world software testing coupled with a liberal number of case histories. Build a library of test cases using call setup, clearing, restart, and reset state diagrams. Learn to appreciate boundary conditions in structural and functional testing. Test two sorting routines to determine if boundary conditions and performance requirements are met. Build test cases with orthogonal array tables. Explore alternative test approaches, such as negative testing and risk-based testing, to certify software reliability.

 

 

7.   Engineering Applications for the Cloud

This course introduces the concepts that are the fundamental properties of applications in the cloud including “autonomy”, “elasticity”, and “statelessness”. It also presents proven guidelines for how to build new components and how to integrate existing applications to leverage the new opportunities provided by Cloud.

 

After completing this course, participants will understand how to address the major challenges to build scalable and highly available applications in the cloud. They will learn how to achieve scalability based on coupling the components of an application in a “loose manner”, including the major technological underpinning to achieve loose coupling, message queuing. It became clear that avoiding keeping state within components is another key contributor to scalability and high availability. This implies to exchange state within messages. Workload management and watchdog techniques are understood as important for elasticity. The course focuses on the set of best practices to attain significant value from Cloud applications.

Agile & DevOps courses are available at both an introductory and advanced levels

Agile and DevOps are both methodologies aimed at improving software development and delivery, but they focus on different aspects and have distinct goals:


Agile

  • Focus: Agile is primarily concerned with the development process. It emphasizes iterative development, collaboration, customer feedback, and small, rapid releases.
  • Principles: Agile is guided by the Agile Manifesto, which includes principles like valuing individuals and interactions over processes and tools and responding to change over following a plan1.
  • Implementation: Agile can be implemented through various frameworks such as Scrum, Kanban, and Extreme Programming (XP).
  • Team Structure: Agile teams are typically small and cross-functional, focusing on delivering incremental improvements to the product.


DevOps

  • Focus: DevOps extends beyond development to include operations. It aims to improve collaboration between development and operations teams to enable faster and more reliable software delivery.
  • Principles: DevOps incorporates Agile principles but adds a strong emphasis on automation, continuous integration, continuous delivery (CI/CD), and monitoring.
  • Implementation: DevOps practices include infrastructure as code, automated testing, and deployment pipelines.
  • Team Structure: DevOps teams are often larger and include a mix of development, operations, and quality assurance (QA) professionals.


Key Differences

  • Scope: Agile focuses on the development cycle, while DevOps covers the entire software lifecycle, including deployment and maintenance.
  • Collaboration: Agile emphasizes collaboration between developers and product management, whereas DevOps includes operations teams in the collaboration.
  • Automation: DevOps places a stronger emphasis on automation and continuous delivery compared to Agile.


Both methodologies can complement each other, with Agile focusing on development efficiency and DevOps ensuring smooth deployment and operations.



Each program will address the following considerations:

  • Define and discuss the key concepts and principles
  • List and explain the business benefits of continuous delivery
  • Describe the Service Delivery process
  • Explain the concepts of test automation, infrastructure automation, and build and deployment automation.
  • Understand how DevOps relates to Lean and Agile methodologies
  • Summarize case studies of IT organizations that are making the transformation to Adaptive IT, Agile, and DevOps models
  • Understand the most common and popular tools
  • Discuss the critical success factors for implementation.
  • Overview of Continuous Integration & Continuous Deployment / Delivery
  • How to Decide on the right deployment, testing, management and orchestration
  • Choose the right modules and optimize the current deployment
  • Challenges in implementation – Tools, Framework, Mindset, etc.



8.   Agile Methods for Software Development

In software initiatives where project areas require exploratory development efforts, with complex requirements, and high levels of change, agile software development practices are highly effective when deployed in a collaborative, people-centered organizational culture. This course examines agile methods, including Extreme Programming (XP), Scrum, Lean, collaboration, iterative progress, continuous improvement, Crystal, Dynamic Systems Development Method and Feature-Driven Development to understand how rapid realization of software occurs most effectively. The ability of agile development teams to rapidly develop high quality, customer-valued software is examined and contrasted with teams following more traditional methodologies that emphasize planning and documentation. Candidates will learn agile development principles and techniques covering the entire software development life cycle from project conception through development, testing, and deployment; they will be prepared to effectively participate in and manage agile software development initiatives using these evolving methodologies.   


Key Topics Covered

  • Introduction to Agile
  • History and evolution of Agile
  • Agile principles and values
  • Differences between Agile and traditional methodologies
  • Scrum Framework
  • Roles: Scrum Master, Product Owner, Development Team
  • Artifacts: Product Backlog, Sprint Backlog, Increment
  • Events: Sprint Planning, Daily Scrum, Sprint Review, Sprint Retrospective
  • Agile Practices
  • User stories and backlog management
  • Estimation techniques (e.g., Planning Poker)
  • Sprint planning and execution
  • Continuous integration and delivery
  • Extreme Programming (XP)
  • Core practices: Pair programming, Test-driven development (TDD), Continuous refactoring
  • Benefits and challenges of XP
  • Kanban
  • Principles of Kanban
  • Visualizing work and limiting work in progress (WIP)
  • Managing flow and improving processes
  • Lean Software Development
  • Lean principles and waste reduction
  • Value stream mapping
  • Continuous improvement (Kaizen)
  • Agile Tools and Techniques
  • Tools for Agile project management (e.g., Jira, Trello)
  • Automated testing and CI/CD tools
  • Collaboration tools (e.g., Slack, Confluence)
  • Agile Metrics and Reporting
  • Measuring team performance
  • Burndown and burnup charts
  • Velocity tracking and forecasting
  • Agile Transformation
  • Implementing Agile in an organization
  • Overcoming common challenges
  • Building an Agile culture


Skills Candidates Will Gain

  • Agile project management
  • Scrum and XP practices
  • Effective communication and collaboration
  • Continuous improvement and adaptability
  • Use of Agile tools and techniques


Career Prospects

Completing an Agile programming course can prepare candidates for roles such as Agile Coach, Scrum Master, Product Owner, and Agile Project Manager. These roles are in high demand as organizations increasingly adopt Agile methodologies to enhance their software development processes.


 

9.   DevOps

This course prepares candidates with the Software Engineering principles and practices of DevOps. DevOps helps companies to shorten development cycles and deliver higher quality products to customers more quickly by creating a culture of working together in a unified team, using automated processes throughout the product lifecycle, and focusing on continual improvement by monitoring and experimentation. Students will learn about the team culture, processes, technologies, and tools that enable successful DevOps teams to deliver better products faster.


Key Topics Covered

  • Introduction to DevOps
  • Understanding DevOps principles and practices
  • The cultural shift towards DevOps
  • Benefits of DevOps in modern software development
  • Agile and Scrum Methodologies
  • Agile principles and values
  • Scrum framework and roles
  • Implementing Agile and Scrum in DevOps
  • Continuous Integration and Continuous Deployment (CI/CD)
  • Setting up CI/CD pipelines
  • Tools for CI/CD (e.g., Jenkins, GitHub Actions)
  • Automated testing and deployment
  • Infrastructure as Code (IaC)
  • Introduction to IaC
  • Tools like Terraform, Ansible, and Chef
  • Managing infrastructure with code
  • Containerization and Orchestration
  • Docker fundamentals
  • Kubernetes for container orchestration
  • Deploying and managing containers
  • Cloud Computing and DevOps
  • Cloud service models (IaaS, PaaS, SaaS)
  • Using cloud platforms (AWS, Azure, Google Cloud)
  • Cloud-native applications
  • Monitoring and Logging
  • Importance of monitoring in DevOps
  • Tools like Prometheus, Grafana, and ELK stack
  • Setting up alerts and dashboards
  • Security in DevOps (DevSecOps)
  • Integrating security practices in DevOps
  • Tools for security automation
  • Best practices for secure software delivery
  • Microservices Architecture
  • Designing and deploying microservices
  • Benefits and challenges of microservices
  • Tools for managing microservices
  • Collaboration and Communication
  • Breaking down silos between teams
  • Tools for collaboration (e.g., Jira, Slack)
  • Building a culture of shared responsibility


Skills Candidates Will Gain

  • Python programming
  • Application development
  • CI/CD implementation
  • Cloud computing
  • Infrastructure management
  • Containerization and orchestration
  • Monitoring and logging
  • Security automation


Career Prospects

DevOps professionals are in high demand, with skills expected to grow significantly over the next few years. Completing a DevOps course can prepare candidates for roles such as DevOps Engineer, Site Reliability Engineer, and Cloud Engineer. 


Depending on ones background and career objectives, candidates should also consider courses from GIIMs:


 















  • Project Management Game: Challenges of Egypt:

This 1-day business simulation is a dynamic business simulation in which IT (and preferably non-IT) managers can come together to enhance their SW engineering and project management skills. In this simulation, a group of participants plays the management team responsible for building the pyramids of Egypt.

 

To do that, the group goes back in time where they meet the Pharaoh. The Pharoh has given his project leader instructions to build a pyramid, so that he can make the journey to the hereafter along with everything that is precious to him. The project leader finds a suitable location for the pyramid, a quarry for the stone, and a village for the workers. He also arranges the infrastructure between these locations. It is the teams’ responsibility to get the job done. The team will have to set up a project organization, analyze risks, and create a plan. 

 

During the four rounds of this interactive workshop, the most important aspects of best practices for project management will be experienced. This is done interactively. The building process for a pyramid will actually be simulated letting the participants experience the control elements of effective/efficient project management. During the building process all team members have a role within the project management environment. The project team is given the task of building the pyramid within a fixed time. The process is affected by real-life events that actually occurred during that period of time. Throughout the building process there will be several reflection moments to learn from the Egyptians and from the team's own experience. At the end of the project, when the pyramid has been built, there will be a project evaluation and all the instructive points will be described.

Share by: