Difference between revisions of "CR: COMP 3004 Learning Objectives"

From Soma-notes
Jump to navigation Jump to search
 
(11 intermediate revisions by one other user not shown)
Line 1: Line 1:
=Calendar Description=
=Calendar Description=
Theory and development software systems. This course will discuss computer ethics. Possible topics include: software development processes, requirement specification, class and scenario modeling, state modeling, UML, design patterns, traceability. Students are to complete a team project using a CASE tool.
Theory and development of software systems. This course will discuss computer ethics. Possible topics include: software development processes, requirement specification, class and scenario modeling, state modeling, UML, design patterns, traceability. Students are to complete a team project using a CASE tool.


=Assumed Background=
=Assumed Background=


Learning objectives completed before this course.
* Practical experience with rudimentary software design techniques
** able to take an assignment description and identify the objects that are required
** able to apply concepts of encapsulation to organize the required objects
** able to identify opportunities for code reuse and implement them
** able to apply advanced object-oriented programming concepts, including polymorphism and generic programming
 
* Practical experience in designing, implementing, testing and documenting small to medium size object-oriented programming assignments




=Learning Objectives=
=Learning Objectives=


Objectives for the whole course
* Understand the theory of large scale software system development
** recognize the need for using a formal development process
** learn the phases of object-oriented software development life cycle (requirements elicitation, analysis, high-level design, detailed design, implementation, testing)
** learn basics of project management


* Gain the practical experience to:
** analyze a problem description for a large system
** apply each phase of the software development life cycle
** produce quality output for each phase
* Prepare for a career as a software development professional:
** develop tools and strategies for working as a member of a team
** practice formal presentation of work to peers
** produce professional documentation
** understand the Software Engineering Code of Ethics; learn to identify and analyze ethical dilemmas in a systematic fashion


=Topics=
=Topics=


==Topic 1==
== Software Development Life Cycle ==
 
* Requirements elicitation
** able to extract functional and non-functional requirements from a problem description
** able to construct corresponding functional model, with UML use cases and scenarios
** able to incorporate traceability into every work product
 
* Analysis
** able to identify high level objects and categorize them into entity, boundary and control objects
** able to construct corresponding object model, including associations (inheritance, aggregation), dependencies and multiplicity, with UML class diagrams
** able to construct a dynamic model based on functional requirements, with UML sequence diagrams, state machines and/or activity diagrams
 
* High-level system design
** understand different types of architectural styles (repository, client/server, peer-to-peer, MVC)
** able to break down analysis object model into subsystems, with UML component diagrams
** able to identify subsystem services and interfaces
 
* Detailed object design
** understand the need for code reuse
** understand major design patterns
** able to construct detailed object model
 
* Implementation
** understand strategies for mapping models to code and to persistent storage
 
* Testing
** unit testing:
*** be able to create test cases for blackbox and whitebox testing
** integration testing:
*** be able to select a testing integration strategy (top-down, bottom-up, sandwich)
*** be able to create test cases using stubs and drivers
** system testing:
*** be able to create test cases based on the functional model
 
== Software Management==
 
* understand basic project management issues, including team organization and risk management
 
* understand the need for software management processes and tools, including:
** configuration management
** version management
** system building
** release management


Learning objectives for topic 1
* understand the different software development life cycle models (waterfall, V-model, spiral, Unified Software Development Process)


==Topic 2==
== Professional Ethics ==


Learning objectives for topic 2
* be familiar with the principles of the ACM Software Engineering Code of Ethics
* be able to use a systematic process to analyze ethical dilemmas, determine possible courses of action, and select the most ethical course of action

Latest revision as of 10:57, 13 April 2011

Calendar Description

Theory and development of software systems. This course will discuss computer ethics. Possible topics include: software development processes, requirement specification, class and scenario modeling, state modeling, UML, design patterns, traceability. Students are to complete a team project using a CASE tool.

Assumed Background

  • Practical experience with rudimentary software design techniques
    • able to take an assignment description and identify the objects that are required
    • able to apply concepts of encapsulation to organize the required objects
    • able to identify opportunities for code reuse and implement them
    • able to apply advanced object-oriented programming concepts, including polymorphism and generic programming
  • Practical experience in designing, implementing, testing and documenting small to medium size object-oriented programming assignments


Learning Objectives

  • Understand the theory of large scale software system development
    • recognize the need for using a formal development process
    • learn the phases of object-oriented software development life cycle (requirements elicitation, analysis, high-level design, detailed design, implementation, testing)
    • learn basics of project management
  • Gain the practical experience to:
    • analyze a problem description for a large system
    • apply each phase of the software development life cycle
    • produce quality output for each phase
  • Prepare for a career as a software development professional:
    • develop tools and strategies for working as a member of a team
    • practice formal presentation of work to peers
    • produce professional documentation
    • understand the Software Engineering Code of Ethics; learn to identify and analyze ethical dilemmas in a systematic fashion

Topics

Software Development Life Cycle

  • Requirements elicitation
    • able to extract functional and non-functional requirements from a problem description
    • able to construct corresponding functional model, with UML use cases and scenarios
    • able to incorporate traceability into every work product
  • Analysis
    • able to identify high level objects and categorize them into entity, boundary and control objects
    • able to construct corresponding object model, including associations (inheritance, aggregation), dependencies and multiplicity, with UML class diagrams
    • able to construct a dynamic model based on functional requirements, with UML sequence diagrams, state machines and/or activity diagrams
  • High-level system design
    • understand different types of architectural styles (repository, client/server, peer-to-peer, MVC)
    • able to break down analysis object model into subsystems, with UML component diagrams
    • able to identify subsystem services and interfaces
  • Detailed object design
    • understand the need for code reuse
    • understand major design patterns
    • able to construct detailed object model
  • Implementation
    • understand strategies for mapping models to code and to persistent storage
  • Testing
    • unit testing:
      • be able to create test cases for blackbox and whitebox testing
    • integration testing:
      • be able to select a testing integration strategy (top-down, bottom-up, sandwich)
      • be able to create test cases using stubs and drivers
    • system testing:
      • be able to create test cases based on the functional model

Software Management

  • understand basic project management issues, including team organization and risk management
  • understand the need for software management processes and tools, including:
    • configuration management
    • version management
    • system building
    • release management
  • understand the different software development life cycle models (waterfall, V-model, spiral, Unified Software Development Process)

Professional Ethics

  • be familiar with the principles of the ACM Software Engineering Code of Ethics
  • be able to use a systematic process to analyze ethical dilemmas, determine possible courses of action, and select the most ethical course of action