Syllabus
Differences between Software Engineering and Computer Programming
{Bridging the gap between graduate student to professional software engineer}
Software engineering happens in an organizational context. Writing clean code vs writing clever code. Hyrum's Law. Software engineering multi-version multi-person programming. Software Engineering is about addressing design tradeoffs. Software engineering is beyond coding and development. Operational issues of software engineering.
Software engineering happens in an organizational context. Writing clean code vs writing clever code. Hyrum's Law. Software engineering multi-version multi-person programming. Software Engineering is about addressing design tradeoffs. Software engineering is beyond coding and development. Operational issues of software engineering.
Elements of Software Engineering
{Five P's of Software Engineering}
A Running Example. A Conceptual model to understand software engineering. (1) Process Perspective. (2) Product perspective. (3) Persona perspective. (4) Principle perspective. (5) Practice perspective. Practices at FANG and Startup
A Running Example. A Conceptual model to understand software engineering. (1) Process Perspective. (2) Product perspective. (3) Persona perspective. (4) Principle perspective. (5) Practice perspective. Practices at FANG and Startup
Introduction to DevOps
{A Gentle Introduction to DevOps}
DevOps: Software Development and Operations. Understanding DevOps through 5P Conceptual Framework. DevOps Industrial adoption. DevOps research opportunities
DevOps: Software Development and Operations. Understanding DevOps through 5P Conceptual Framework. DevOps Industrial adoption. DevOps research opportunities
Version Control System
{Git and GitHub}
Git as a local repository. GitHub remote nature. Branching purpose and strategy. GitHub as collaborative tool
Git as a local repository. GitHub remote nature. Branching purpose and strategy. GitHub as collaborative tool
Software Testing
{Testing Python Application}
Types of Software Testing. PyTest framework. Test fixture. Unit testing for Python. User Acceptance testing
Types of Software Testing. PyTest framework. Test fixture. Unit testing for Python. User Acceptance testing
Code Review
{Reviewing Python Code}
Python Programming PEP-8 guidelines. Goals and process of Code review. Static Code Analysis. PyLint.
Python Programming PEP-8 guidelines. Goals and process of Code review. Static Code Analysis. PyLint.
Virtualization
{Introduction to Virtualization}
Virtualization definition and types of virtualization. Virtual Machine. Significance of virtualization to DevOps. Hypervisors. Virtualization and Cloud computing. Virtualization and DevOps.
Virtualization definition and types of virtualization. Virtual Machine. Significance of virtualization to DevOps. Hypervisors. Virtualization and Cloud computing. Virtualization and DevOps.
Containerization
{Introduction}
Introduction. Significance of Containerization to DevOps. Docker and Kubernetes
Introduction. Significance of Containerization to DevOps. Docker and Kubernetes
Infrastructure as a Code
{Introduction}
Significance of IaC to DevOps. Terraform
Significance of IaC to DevOps. Terraform
Grading Policy
- Continuous Assessment: 20%
- Mid Semester Examination: 20%
- End Semester Examinations: 60%