Can explain pros and cons of software engineering
click here to see details ...
Can explain requirements
click here to see details ...
Can explain non-functional requirements
click here to see details ...
Can explain prioritizing requirements
click here to see details ...
Can explain quality of requirements
click here to see details ...
Can explain brainstorming
click here to see details ...
Can explain user surveys
click here to see details ...
Can explain observation
click here to see details ...
Can explain interviews
click here to see details ...
Can explain focus groups
click here to see details ...
Can explain prototyping
click here to see details ...
Can explain product surveys
click here to see details ...
Can explain prose
click here to see details ...
Can explain feature list
click here to see details ...
Can write simple user stories
click here to see details ...
Can write more detailed user stories
click here to see details ...
Can use user stories to manage requirements of project
click here to see details ...
Can explain use cases
click here to see details ...
Can use use cases to list functional requirements of a simple system
click here to see details ...
Can specify details of a use case in a structured format
click here to see details ...
Can optimize the use of use cases
click here to see details ...
Can explain glossary
click here to see details ...
Can explain supplementary requirements
click here to see details ...
Can explain what is software design
click here to see details ...
Can explain abstraction
click here to see details ...
Can explain coupling
click here to see details ...
Can reduce coupling
click here to see details ...
Can identify types of coupling
click here to see details ...
Can increase cohesion
click here to see details ...
Can explain cohesion
click here to see details ...
Can describe OOP at a higher level
click here to see details ...
Can describe how OOP relates to the real world
click here to see details ...
Can explain the abstraction aspect of OOP
click here to see details ...
Can explain the encapsulation aspect of OOP
click here to see details ...
Can explain the relationship between classes and objects
click here to see details ...
Can explain class-level members
click here to see details ...
Can explain the meaning of enumerations
click here to see details ...
Can explain associations
click here to see details ...
Can explain the meaning of navigability
click here to see details ...
Can explain the meaning of multiplicity
click here to see details ...
Can explain dependencies among classes
click here to see details ...
Can explain the meaning of composition
click here to see details ...
Can explain the meaning of aggregations
click here to see details ...
Can explain the meaning of association classes
click here to see details ...
Can explain the meaning of inheritance
click here to see details ...
Can explain method overriding
click here to see details ...
Can explain method overloading
click here to see details ...
Can explain interfaces
click here to see details ...
Can implement abstract classes
click here to see details ...
Can explain dynamic and static binding
click here to see details ...
Can explain substitutability
click here to see details ...
Can explain OOP polymorphism
click here to see details ...
Can explain how substitutability operation overriding, and dynamic binding relates to polymorphism
click here to see details ...
Can answer frequently asked OOP questions
click here to see details ...
Can combine some OOP concepts
click here to see details ...
Can explain models
click here to see details ...
Can explain how models are used
click here to see details ...
Can identify UML models
click here to see details ...
Can use basic-level class diagrams
click here to see details ...
Can use intermediate-level class diagrams
click here to see details ...
Can use advanced class diagrams
click here to see details ...
Can use basic object diagrams
click here to see details ...
Can explain object oriented domain models
click here to see details ...
Can explain deployment diagrams
click here to see details ...
Can explain component diagrams
click here to see details ...
Can explain package diagrams
click here to see details ...
Can explain composite structure diagrams
click here to see details ...
Can use basic-level activity diagrams
click here to see details ...
Can draw basic sequence diagrams
click here to see details ...
Can draw intermediate-level sequence diagrams
click here to see details ...
Can interpret advanced sequence diagrams
click here to see details ...
Can explain use case diagrams
click here to see details ...
Can explain timing diagrams
click here to see details ...
Can explain interaction overview diagrams
click here to see details ...
Can explain communication diagrams
click here to see details ...
Can explain state machine diagrams
click here to see details ...
Can explain how modelling can be used before implementation
click here to see details ...
Can use simple class diagrams and sequence diagrams to model an OO solution
click here to see details ...
Can use intermediate class diagram and sequence diagram concepts to model an OO design
click here to see details ...
Can explain Software Architecture
click here to see details ...
Can interpret an architecture diagram
click here to see details ...
Can draw an architecture diagram
click here to see details ...
Can explain architectural styles
click here to see details ...
Can identify n-tier architectural style
click here to see details ...
Can identify the client-server architectural style
click here to see details ...
Can identify transaction processing architectural style
click here to see details ...
Can identify service-oriented architectural style
click here to see details ...
Can identify event-driven architectural style
click here to see details ...
Can name several other architecture styles
click here to see details ...
Can explain how architectural styles are combined
click here to see details ...
Can explain design patterns
click here to see details ...
Can explain design patterns format
click here to see details ...
Can explain the Singleton design pattern
click here to see details ...
Can apply the Singleton design pattern
click here to see details ...
Can decide when to apply Singleton design pattern
click here to see details ...
Can explain the Abstraction Occurrence design pattern
click here to see details ...
Can explain the Facade design pattern
click here to see details ...
Can explain the Command design pattern
click here to see details ...
Can explain the Model View Controller (MVC) design pattern
click here to see details ...
Can explain the Observer design pattern
click here to see details ...
Can combine multiple patterns to fit a context
click here to see details ...
Can recognize some of the GoF design patterns
click here to see details ...
Can explain pros and cons of design patterns
click here to see details ...
Can explain how patterns exist beyond software design domain
click here to see details ...
Can differentiate between design patterns and principles
click here to see details ...
Can explain multi-level design
click here to see details ...
Can explain top-down and bottom-up design
click here to see details ...
Can explain agile design
click here to see details ...
Can explain IDEs
click here to see details ...
Can explain debugging
click here to see details ...
Can explain the importance of code quality
click here to see details ...
Can explain the importance of readability
click here to see details ...
click here to see details ...
click here to see details ...
click here to see details ...
Can explain the need for following a standard
click here to see details ...
Can follow simple mechanical style rules
click here to see details ...
Can follow intermediate style rules
click here to see details ...
Can explain the need for good names in code
click here to see details ...
click here to see details ...
click here to see details ...
Can explain the need for avoiding error-prone shortcuts
click here to see details ...
click here to see details ...
click here to see details ...
Can explain the need for commenting minimally but sufficiently
click here to see details ...
click here to see details ...
click here to see details ...
Can explain refactoring
click here to see details ...
Can apply some basic refactoring
click here to see details ...
Can decide when to apply a given refactoring
click here to see details ...
Can explain the two types of developer docs
click here to see details ...
Can distinguish between top-down and bottom up documentation
click here to see details ...
Can explain the advantages of top-down documentation
click here to see details ...
Can write documentation in a top-down manner
click here to see details ...
Can explain the need for comprehensibility in documents
click here to see details ...
Can write reasonably comprehensible developer documents
click here to see details ...
Can write minimal yet sufficient documentation
click here to see details ...
Can explain documentation should be minimal yet sufficient
click here to see details ...
Can write Javadoc comments
click here to see details ...
Can explain JavaDoc
click here to see details ...
Can explain Markdown
click here to see details ...
Can write documents in Markdown format
click here to see details ...
Can explain AsciiDoc
click here to see details ...
Can explain error handling
click here to see details ...
Can explain exceptions
click here to see details ...
Can explain how exception handling is done typically
click here to see details ...
Can avoid using exceptions to control normal workflow
click here to see details ...
Can explain assertions
click here to see details ...
Can use assertions
click here to see details ...
Can use assertions optimally
click here to see details ...
Can explain logging
click here to see details ...
Can use logging
click here to see details ...
Can explain defensive programming
click here to see details ...
Can use defensive coding to enforce compulsory associations
click here to see details ...
Can use defensive coding to enforce 1-to-1 associations
click here to see details ...
Can use defensive coding to enforce referential integrity of bi-directional associations
click here to see details ...
Can explain when to use defensive programming
click here to see details ...
Can explain the Design-by-Contract approach
click here to see details ...
Can explain integration
click here to see details ...
Can explain how integration approaches vary based on timing and frequency
click here to see details ...
Can explain how integration approaches vary based on amount merged at a time
click here to see details ...
Can explain how integration approaches vary based on the order of integration
click here to see details ...
Can explain build automation tools
click here to see details ...
Can explain continuous integration and continuous deployment
click here to see details ...
Can combine some integration concepts
click here to see details ...
Can explain software reuse
click here to see details ...
Can explain the costs and benefits of reuse
click here to see details ...
Can explain APIs
click here to see details ...
Can design reasonable quality APIs
click here to see details ...
Can explain libraries
click here to see details ...
Can make use of a library
click here to see details ...
Can explain frameworks
click here to see details ...
Can differentiate between frameworks and libraries
click here to see details ...
Can explain platforms
click here to see details ...
Can explain cloud computing
click here to see details ...
Can distinguish between IaaS, PaaS, and SaaS
click here to see details ...
Can explain software quality assurance
click here to see details ...
Can explain validation and verification
click here to see details ...
Can explain code reviews
click here to see details ...
Can explain static analysis
click here to see details ...
Can explain formal verification
click here to see details ...
Can explain testing
click here to see details ...
Can explain testability
click here to see details ...
Can explain unit testing
click here to see details ...
Can use stubs to isolate an SUT from its dependencies
click here to see details ...
Can explain integration testing
click here to see details ...
Can explain system testing
click here to see details ...
Can explain alpha and beta testing
click here to see details ...
Can explain dogfooding
click here to see details ...
Can explain developer testing
click here to see details ...
Can explain the need for early developer testing
click here to see details ...
Can explain exploratory testing and scripted testing
click here to see details ...
Can explain the choice between exploratory testing and scripted testing
click here to see details ...
Can explain acceptance testing
click here to see details ...
Can explain the differences between system testing and acceptance testing
click here to see details ...
Can explain regression testing
click here to see details ...
Can explain test automation
click here to see details ...
Can semi-automate testing of CLIs
click here to see details ...
Can explain test drivers
click here to see details ...
Can explain test automation tools
click here to see details ...
Can explain automated GUI testing
click here to see details ...
Can explain test coverage
click here to see details ...
Can explain how test coverage works
click here to see details ...
Can explain dependency injection
click here to see details ...
Can use dependency injection
click here to see details ...
Can explain TDD
click here to see details ...
Can follow TDD
click here to see details ...
Can explain the need for deliberate test case design
click here to see details ...
Can explain positive and negative test cases
click here to see details ...
Can explain black box and glass box test case design
click here to see details ...
Can explain equivalence partitions
click here to see details ...
Can apply EP for pure functions
click here to see details ...
Can apply EP for OOP methods
click here to see details ...
Can explain boundary value analysis
click here to see details ...
Can apply boundary value analysis
click here to see details ...
Can explain the need for strategies to combine test inputs
click here to see details ...
Can explain some basic test input combination strategies
click here to see details ...
Can apply heuristic ‘each valid input at least once in a positive test case’
click here to see details ...
Can apply heuristic ‘no more than one invalid input in a test case’
click here to see details ...
Can apply multiple test input combination techniques together
click here to see details ...
Can explain test case design for use case based testing
click here to see details ...
Can explain test case design techniques at a higher level
click here to see details ...
Can combine test case design techniques
click here to see details ...
Can explain revision control
click here to see details ...
Can explain repositories
click here to see details ...
Can explain saving history
click here to see details ...
Can explain using history
click here to see details ...
Can explain remote repositories
click here to see details ...
Can explain branching
click here to see details ...
Can explain DRCS vs CRCS
click here to see details ...
Can explain forking workflow
click here to see details ...
Can explain feature branch flow
click here to see details ...
Can explain centralized flow
click here to see details ...
Can explain work breakdown structures
click here to see details ...
Can explain milestones
click here to see details ...
Can explain buffers
click here to see details ...
Can explain issue trackers
click here to see details ...
Can explain GANTT charts
click here to see details ...
Can explain PERT charts
click here to see details ...
Can explain common team structures
click here to see details ...
Can explain SDLC process models
click here to see details ...
Can explain sequential process models
click here to see details ...
Can explain iterative process models
click here to see details ...
Can explain agile process models
click here to see details ...
Can explain XP
click here to see details ...
Can explain scrum
click here to see details ...
Can explain the Unified Process
click here to see details ...
Can explain CMMI
click here to see details ...
Can explain process models at a higher level
click here to see details ...
Can explain/identify class diagrams
click here to see details ...
Can draw UML classes
click here to see details ...
Can interpret simple associations in a class diagram
click here to see details ...
Can interpret association navigabilities in class diagrams
click here to see details ...
Can explain/use association roles in class diagrams
click here to see details ...
Can explain/use association labels in class diagrams
click here to see details ...
Can explain what is the multiplicity of an association
click here to see details ...
Can use dependencies in a class diagram
click here to see details ...
Can show an association as an attribute
click here to see details ...
Can interpret enumerations in class diagrams
click here to see details ...
Can interpret class-level members in class diagrams
click here to see details ...
Can interpret association classes in class diagrams
click here to see details ...
Can interpret composition in class diagrams
click here to see details ...
Can interpret aggregation in class diagrams
click here to see details ...
Can interpret class inheritance in class diagrams
click here to see details ...
Can interpret abstract classes in class diagrams
click here to see details ...
Can interpret interfaces in class diagrams
click here to see details ...
Can explain/identify object diagrams
click here to see details ...
Can draw UML objects
click here to see details ...
Can interpret simple associations among objects
click here to see details ...
Can explain/identify sequence diagrams
click here to see details ...
Can interpret sequence diagrams with basic notation
click here to see details ...
Can interpret sequence diagrams with object creation
click here to see details ...
Can interpret sequence diagrams with object deletion
click here to see details ...
Can interpret sequence diagrams with loops
click here to see details ...
Can interpret sequence diagrams with self invocation
click here to see details ...
Can interpret sequence diagrams with alternative paths
click here to see details ...
Can interpret sequence diagrams with optional paths
click here to see details ...
Can interpret sequence diagrams with parallel paths
click here to see details ...
Can interpret sequence diagrams with reference frames
click here to see details ...
Can interpret sequence diagrams with minimal notation
click here to see details ...
Can explain activity diagrams
click here to see details ...
Can interpret linear paths in activity diagrams
click here to see details ...
Can interpret alternate paths in activity diagrams
click here to see details ...
Can interpret parallel paths in activity diagrams
click here to see details ...
Can use rakes in activity diagrams
click here to see details ...
Can explain swimlanes in activity diagrams
click here to see details ...
Can use UML notes
click here to see details ...
Can specify constraints in UML diagrams
click here to see details ...
Can distinguish between class diagrams and object diagrams
click here to see details ...
Can setup a project in an IDE
click here to see details ...
Can navigate code effectively using IDE features
click here to see details ...
Can use some useful IDE productivity shortcuts
click here to see details ...
Can step through a program using a debugger
click here to see details ...
Can use automated refactoring features of the IDE
click here to see details ...
Can create a local Git repo
click here to see details ...
Can commit using Git
click here to see details ...
Can set Git to ignore files
click here to see details ...
Can tag commits using Git
click here to see details ...
Can load a specific version of a Git repo
click here to see details ...
Can use Git to stash files
click here to see details ...
Can clone a remote repo
click here to see details ...
Can pull changes from a repo
click here to see details ...
Can push to a remote repo
click here to see details ...
Can use Git branching
click here to see details ...
Can use Git to resolve merge conflicts
click here to see details ...
Can create PRs on GitHub
click here to see details ...
Can review and merge PRs on GitHub
click here to see details ...
Can follow Forking Workflow
click here to see details ...
Can explain single responsibility principle
click here to see details ...
Can explain interface segregation principle
click here to see details ...
Can explain Liskov Substitution Principle
click here to see details ...
Can explain dependency inversion principle (DIP)
click here to see details ...
Can explain open-closed principle (OCP)
click here to see details ...
Can explain SOLID Principles
click here to see details ...
Can explain separation of concerns principle
click here to see details ...
Can explain the Law of Demeter
click here to see details ...
Can explain Brooks' law
click here to see details ...
Can explain YAGNI principle
click here to see details ...
Can explain DRY principle
click here to see details ...
Can combine some principles concepts
click here to see details ...