Software Engineering

This course provided a comprehensive overview of modern software engineering methodologies, tools, and team practices. It focused on the software development lifecycle (SDLC), system design, and the organizational and technical challenges developers face when building large-scale software systems.

university

University of Maryland • graduate course

focus areas

SDLC Agile & DevOps System Design Architecture & Patterns Testing Code Quality

🧠 core topics covered

  • software development lifecycle (SDLC): compared Waterfall, Agile, and DevOps models and their impact on planning, development, releases, and operations.
  • team collaboration & stakeholder communication: requirements gathering, change management, and working across cross-functional teams throughout the lifecycle.
  • system design & architecture: modular design, service/component decomposition, interface-based development; studied styles such as MVC and client-server plus common enterprise patterns.
  • code understanding & maintenance: control-flow/data-flow analysis, code comprehension, debugging, and refactoring strategies for long-lived codebases.
  • software requirements & testing: capturing/managing requirements; applied unit and integration testing to improve reliability and maintainability.
  • devOps & process improvement: CI/CD pipelines, continuous testing, and iterative process optimization for team projects.
  • special topics: intro to cloud computing and IoT, and how they influence architecture and delivery.

🧪 tools & technologies used

  • javascript & angularJS: in-class exercises and assignments for component-based web development.
  • version control & collaboration: Git/GitHub for branching, code reviews, and issue tracking.
  • devops tooling (concepts): CI/CD pipelines, automated testing, and deployment workflows.

This course strengthened my ability to approach projects with a structured engineering mindset—designing, testing, and improving systems both individually and within a team.

Back to Courses