Roadmap of Software Engineering
Roadmap of Software Engineering
Roadmap of Software Engineering
Lesson Plan
GitHub: hayderzaeim
Twitter: hayderzaeem
Instagram: hayder_zaeem
Foundations
● Computer Science Fundamentals
○ Data Structures
○ Algorithms
○ Theory of Computation
○ Discrete Mathematics
○ Computer Architecture
● Programming Languages
○ Syntax and Semantics
○ Compilers and Interpreters
○ Language Paradigms (Procedural, Object-Oriented, Functional,
etc.)
3. Software Design
● Design Principles
○ SOLID Principles
○ Design Patterns (Creational, Structural, Behavioral)
● Architectural Styles
○ Monolithic
○ Microservices
○ Service-Oriented Architecture (SOA)
○ Event-Driven Architecture
© 2020 Hayder Zaeem. All rights reserved. 2
4. Software Testing
● Types of Testing
○ Unit Testing
○ Integration Testing
○ System Testing
○ Acceptance Testing
○ Regression Testing
○ Performance Testing
● Testing Frameworks and Tools
○ JUnit, NUnit
○ Selenium, Appium
○ LoadRunner, JMeter
5. Software Maintenance
● Types of Maintenance
○ Corrective
○ Adaptive
○ Perfective
○ Preventive
● Maintenance Process
○ Issue Tracking
○ Version Control
○ Continuous Integration/Continuous Deployment (CI/CD)
6. Software Quality
● Quality Attributes
○ Reliability
○ Usability
○ Efficiency
○ Maintainability
○ Portability
● Quality Assurance Practices
○ Code Reviews
○ Static Analysis
○ Dynamic Analysis
© 2020 Hayder Zaeem. All rights reserved. 3
○ Formal Methods
8. Advanced Topics
● Formal Methods
○ Model Checking
○ Theorem Proving
● Software Metrics
○ Code Complexity
○ Defect Density
● Software Reliability Engineering
○ Reliability Models
○ Fault Tolerance
9. Specialized Areas
● Real-Time Systems
○ Real-Time Scheduling
○ Embedded Software
● Distributed Systems
○ Distributed Algorithms
○ Consensus Protocols
● Parallel Computing
○ Multithreading
○ Parallel Algorithms
© 2020 Hayder Zaeem. All rights reserved. 4
● Security Engineering
○ Secure Coding Practices
○ Threat Modeling
1. Foundations
● Computer Science Fundamentals
○ Data Structures and Algorithms
■ CLRS (Introduction to Algorithms)
■ GeeksforGeeks
■ LeetCode, HackerRank
○ Theory of Computation
■ Automata Theory Tools
■ JFLAP (Java Formal Languages and Automata Package)
○ Discrete Mathematics
■ WolframAlpha
■ MATLAB
○ Computer Architecture
■ Logisim
■ Simulink
© 2020 Hayder Zaeem. All rights reserved. 5
3. Software Design
● Design Principles
○ UML Tools (StarUML, Lucidchart)
○ Enterprise Architect
● Architectural Styles
○ Monolithic
■ Spring Framework
© 2020 Hayder Zaeem. All rights reserved. 6
■ Django
○ Microservices
■ Docker
■ Kubernetes
○ Service-Oriented Architecture (SOA)
■ Apache Camel
■ MuleSoft
○ Event-Driven Architecture
■ Apache Kafka
■ RabbitMQ
4. Software Testing
● Types of Testing
○ Unit Testing
■ JUnit, NUnit
■ Mocha, Jasmine
○ Integration Testing
■ Postman
■ SOAP UI
○ System Testing
■ Selenium
■ Appium
○ Acceptance Testing
■ Cucumber
■ FitNesse
○ Regression Testing
■ Selenium
■ QTP/UFT
○ Performance Testing
■ JMeter
■ LoadRunner
● Testing Frameworks and Tools
○ Selenium
○ JUnit, TestNG
○ LoadRunner, JMeter
5. Software Maintenance
© 2020 Hayder Zaeem. All rights reserved. 7
● Types of Maintenance
○ Corrective
○ Adaptive
○ Perfective
○ Preventive
● Maintenance Process
○ Issue Tracking
■ JIRA
■ Bugzilla
○ Version Control
■ Git (GitHub, GitLab, Bitbucket)
■ SVN
○ Continuous Integration/Continuous Deployment (CI/CD)
■ Jenkins
■ Travis CI
6. Software Quality
● Quality Attributes
○ Reliability
■ SonarQube
○ Usability
■ Axure RP
■ Sketch
○ Efficiency
■ New Relic
■ Dynatrace
○ Maintainability
■ CodeClimate
○ Portability
■ Docker
■ Vagrant
● Quality Assurance Practices
○ Code Reviews
■ GitHub Pull Requests
■ Crucible
○ Static Analysis
■ SonarQube
© 2020 Hayder Zaeem. All rights reserved. 8
■ ESLint, Pylint
○ Dynamic Analysis
■ Valgrind
■ JProfiler
○ Formal Methods
■ SPIN
■ Alloy
8. Advanced Topics
● Formal Methods
○ SPIN Model Checker
○ TLA+
● Software Metrics
○ SonarQube
○ CodeClimate
● Software Reliability Engineering
○ IBM Rational Rhapsody
○ SCADE
9. Specialized Areas
● Real-Time Systems
○ VxWorks
○ FreeRTOS
● Distributed Systems
○ Apache Hadoop
© 2020 Hayder Zaeem. All rights reserved. 9
○ Apache Spark
● Parallel Computing
○ MPI
○ OpenMP
● Security Engineering
○ OWASP ZAP
○ Burp Suite
Learning Resources
Foundations
● Discrete Mathematics
○ Books: "Discrete Mathematics and Its Applications" by Kenneth
H. Rosen
○ Online Courses: Coursera (UC San Diego's "Mathematical
Thinking in Computer Science"), Khan Academy
● Computer Architecture
○ Books: "Computer Organization and Design" by David Patterson
and John Hennessy
○ Online Courses: Coursera (University of Washington's
"Computer Architecture"), edX (MIT's "Computation Structures")
Software Development Process
● Design Principles
○ Books: "Design Patterns: Elements of Reusable Object-Oriented
Software" by Erich Gamma, Richard Helm, Ralph Johnson, and
John Vlissides
○ Online Courses: Coursera (University of Alberta's "Software
Design and Architecture"), Udemy
● Architectural Styles
○ Books: "Microservices Patterns" by Chris Richardson
○ Online Courses: Coursera (University of Colorado Boulder's
"Software Architecture"), Pluralsight
Software Testing
● Types of Testing
© 2020 Hayder Zaeem. All rights reserved. 11
● Maintenance Process
○ Books: "Software Maintenance Success Recipes" by Donald J.
Reifer
○ Online Courses: edX (MIT's "Software Construction"), Coursera
Software Quality
● Formal Methods
○ Books: "Principles of Model Checking" by Christel Baier and
Joost-Pieter Katoen
○ Online Courses: Coursera (University of Washington's "Software
Development Capstone Project")
● Software Metrics and Reliability
○ Books: "Metrics and Models in Software Quality Engineering" by
Stephen H. Kan
○ Online Courses: Coursera, edX
© 2020 Hayder Zaeem. All rights reserved. 12
Specialized Areas
● Real-Time Systems
○ Books: "Real-Time Systems" by Jane W. S. Liu
○ Online Courses: Coursera (University of Colorado Boulder's
"Real-Time Embedded Systems"), Udacity
● Distributed Systems
○ Books: "Designing Data-Intensive Applications" by Martin
Kleppmann
○ Online Courses: Coursera (University of Illinois' "Cloud
Computing Concepts"), edX (MIT's "Distributed Systems")
● Parallel Computing
○ Books: "Introduction to Parallel Computing" by Ananth Grama,
Anshul Gupta, George Karypis, and Vipin Kumar
○ Online Courses: Coursera (University of Illinois' "Parallel
Programming"), edX
● Security Engineering
○ Books: "Security Engineering: A Guide to Building Dependable
Distributed Systems" by Ross Anderson
○ Online Courses: Coursera (University of Maryland's
"Cybersecurity Specialization"), Udacity (Security Engineer
Nanodegree)
Certificate Courses
● Coursera
○ IBM Software Engineering Professional Certificate
○ Google IT Support Professional Certificate
○ University of Alberta's "Software Product Management"
● edX
○ Microsoft Professional Program in DevOps
○ MIT's Professional Certificate in Data Science
○ University of Washington's Certificate in Software Development
● Udacity
○ Full Stack Web Developer Nanodegree
○ Data Engineer Nanodegree
○ Cloud Developer Nanodegree
● Pluralsight
○ Agile Project Management Certificate
© 2020 Hayder Zaeem. All rights reserved. 13
University Programs
● Bachelor’s Degree Programs
○ Massachusetts Institute of Technology (MIT) - BS in Computer
Science and Engineering
○ Stanford University - BS in Computer Science
○ University of California, Berkeley - BS in Electrical Engineering
and Computer Sciences
● Master’s Degree Programs
○ Carnegie Mellon University - Master of Software Engineering
○ University of Illinois Urbana-Champaign - Master of Computer
Science
○ University of Southern California - MS in Computer Science
(Software Engineering)
● Ph.D. Programs
○ Stanford University - Ph.D. in Computer Science
○ Massachusetts Institute of Technology (MIT) - Ph.D. in
Electrical Engineering and Computer Science
○ University of California, Berkeley - Ph.D. in Computer Science
● Online Degree Programs
○ Georgia Institute of Technology - Online Master of Science in
Computer Science (OMSCS)
○ University of Illinois Urbana-Champaign - Online Master of
Computer Science (MCS)
○ Arizona State University - Online BS in Software Engineering