• The AFSE Curriculum Framework   

    AFSE Software Engineering Curriculum Framework

    The Academy for Software Engineering (AFSE) is a Career and Technical Education (CTE) high school focused on Computer Science and Software Engineering.  The Association for Computing Engineering, the primary international standards body for CS and Software Engineering, provides the following definition: Software engineering (SE) is concerned with developing and maintaining software systems that behave reliably and efficiently, are affordable to develop and maintain, and satisfy all the requirements that customers have defined for them.

    The curriculum at the Academy for Software Engineering is designed to provide students with the foundation for developing software systems as well as cultivating the professional behaviors and interpersonal skills associated with becoming a professional.  Under the heading of Software Engineering the following high level categories define the objectives across the CTE program at AFSE.
    • Project Management/General Engineering Practice: This subcategory is focused on professional practices related to the engineering and project management components of Software Engineering. Standards in this category focus on knowledge and skills necessary to allocate resources, both technical and human, to a large project, work on a team, discuss trade offs between designs and implementations, reflect on requirements for projects, and work with clients to establish project requirements.

    • Professional Behavior: The professional behavior subcategory focuses on standards related to students dispositional state, recognition and demonstration of appropriate workplace behavior, and self beliefs.

    • Computational (Algorithmic) Thinking: The computational thinking subcategory focuses on the formulation of problem solutions in the formal language or representations required for execution by a computer or other computational device.  This subcategory contains many of the standards focused on computer science and programming.

    • Problem Solving: The problem solving subcategory includes standards related to the interpretation and translation of a problem, the decomposition of related problem tasks, the planning of a solution, and the evaluation of the solution against problem challenges.

    • Role of Computers in Society: The subcategory focused on the role of computers in society focuses on the knowledge and skills needed to define, describe, and analyze currently existing technological systems (such as the internet).  Additionally standards express the need for students to discuss, compare, contrast, and relate the effect those systems have had on people, places, economies, and other aspects of humanity. This subcategory also includes the ethical use of technology as well as privacy and security concerns in the use of technology.

    Within these larger categories, the following subtopics exits and are emphasized in the computer science courses at AFSE:

    1.1 Artifact Creation

    1.2 Time/Resource Management

    1.3 Iterative Development Cycle

    1.4 Engineering Design Decisions (e.g. Weighing options, discussing trade offs)

    2.1 Professional Help Seeking

    2.2 Self Efficacy and Work Ethic

    2.3 Collaboration

    2.4 Communication

    3.1 Programming

    3.1.1 Control Flow (e.g. linearity of execution, branching via conditionals, loops, and recursion, parallelism, race conditions, data structures for tracking)

    3.1.2 State (e.g. state machines, variables, databases, client/server models)

    3.1.3 Testing/Debugging (e.g. basic strategies, tools, development techniques like Agile)

    3.1.4 Common Methods of Abstraction (e.g. functions, object orientation)

    3.1.5 Data Structures (e.g. arrays, lists, stacks, queues, trees, etc.)

    3.1.6 Algorithms (e.g. searches, sorts, etc.)

    3.2 Data

    3.2.1 Impact of Data on Society

    3.2.2 Aggregating Data (e.g. using spreadsheet functions to describe data, creating infographics)

    3.2.3 Recommending (e.g. using simple probabilities to make recommendations)

    3.3 Web

    3.3.1 Structure v Style v Programming

    3.3.2 Networks (e.g. internet, web, protocols, architectures, etc.)

    3.3.3 Standards

    3.3.4 Distributed computing

    3.4 Physical Computing and Robotics

    3.4.1 Use of Sensors (e.g. accelerometers, touch, light, IR, etc.)

    3.4.2 Computational Interaction w/ Physical World (e.g. imperfect information, algorithmic compensation,

    robustness, etc.)

    3.4.3 Physical Basis of Computing (e.g. computer architecture, logic gates, circuits, voltage, etc.)

    4.1 Interpretation and Translation of Problem Statements

    4.2 Decomposition of Related Problem Tasks

    4.3 Planning a Solution

    4.4 Evaluation of a Solution

    5.1 Ethical Usage and Behavior

    5.2 Impact of Technology on Innovation

    5.3 Economic Impact of Technology

    5.4 Sociological Impact of Technology