SPD – SIGCSE 2022 Version

Specialized Platform Development

 

 

Preamble

 

What characterizes this knowledge area?

The Specialized Platform Development (SPD) knowledge area, is concerned with the design and development of software applications that reside on and interoperate with specific software platforms. SPD may be applied over a wide breadth of computing ecosystems, and is complementary to the other Knowledge Areas, providing a mechanism for students to take their programming and software development skills and apply them to a broader platform widely used in practice. The SPD considerations intersect the fundamental areas of the core of the computing curriculum, and therefore advisable to incorporate fundamental concepts in this knowledge area. There is a need for a specialized platform development curriculum mainly due to the high demand on computing needs, for both software and hardware constraints, and the appearance of application areas such as drone platforms, robotics, IoT, quantum computing (to mention a few) in addition to the traditional ones such as web programming, multimedia development, mobile computing, app development.

How has this KA changed since CS 2013

Computer Science curricula have incorporated and adapted best practices in teaching computer science through the past decade. Teaching core and elective courses in programming implemented in different platforms and operating systems depend on institutions’ requirements and workforce recommendations. For example, traditionally speaking, software development has evolved from platforms using text editors and command lines to integrated development environments, interactive computing platforms, and graphical user interfaces that assist computing programming development between software and hardware. Furthermore, specialized platforms demonstrate software development principles using a variety of low-cost and accessible environments, such as Raspberry PIs, Arduinos (often used in Robotics and Drone programming). Additionally, Mobile and Web Platforms have played an essential role in industry and software engineering for the past decade, especially with emerging computing areas such as intelligence computing (i.e., Data Science, AI/ML), Cloud, and Quantum computing, platforms considerations, and constraints development are considered in this knowledge area.

 

Allocation of Core Hours

 

SPD. Specialized Platform Development (Elective)

  Core-Tier1 hours Core-Tier2 hours Includes Electives
SPD/Introduction     Y
SPD/Web Platforms 2    
SPD/Mobile Platforms 1    
SPD/Industrial Platforms     Y
SPD/Embedded Platforms 2    
SPD/Game Platforms     Y
SPD/Interactive Computing Platforms     Y

 

 

Description of Knowledge Units

SPD/Introduction

This unit aims to develop core concepts relating to specialized platform development. Students shall recognize various specialized platforms development and their corresponding applications, programming languages used for these particular and modern applications, and how to use them effectively.

  • Topics
    • Overview of platforms (e.g., Web, Mobile, Game, Industrial)
      • Input/Sensors/Control Devices/Haptic devices
      • Resource constraints
        • Computational
        • Data storage
        • Communication
        • Societal, Compliance, Security, Uptime availability, fault tolerance
      • Output/Actuators/Haptic devices
    • Programming via platform-specific APIs
    • Overview of Platform Languages (e.g., Kotlin, Swift, Objective C, Python, C#, C++, Java, JavaScript, HTML5)
    • Programming under platform constraints (e.g. available development tools, development)
  • Illustrative Learning Outcomes
    • Describe how platform-based development differs from general-purpose programming. [Familiarity]
    • List characteristics of platform languages. [Familiarity]
    • Write and execute a simple platform-based program. [Usage]
    • List the advantages and disadvantages of programming with platform constraints. [Familiarity]

 

SPD/Web Platforms

This unit aims to develop concepts relating to web platforms. Concepts include programing language features, considerations through web platforms, privacy considerations, architecture, and storage solutions.

 

  • Topics
    • Web programming languages (e.g., HTML5, JavaScript, PHP, CSS)
    • Web platform constraints
    • Software as a Service (SaaS)
    • Web standards
      • Security
        • Certificates (TLS)
      • Computing services (e.g., Amazon AWS, Microsoft Azure)
        • Cloud Hosting
        • Scalability (e.g. Autoscaling, Clusters)
      • Data management
        • Privacy etc
      • Architecture
        • Monoliths vs. Microservices
        • Micro-frontends
        • Event-Driven vs. RESTful
        • Scalability
      • Storage Solutions
        • Relational Databases
        • Nosql databases

 

 

  • Illustrative Learning Outcomes
    • Design and Implement a simple web application. [Usage]
    • Describe the constraints that the web puts on developers. [Familiarity]
    • Compare and contrast web programming with general purpose programming. [Assessment]
    • Describe the differences between Software-as-a-Service and traditional software products. [Familiarity]
    • Discuss how web standards impact software development. [Familiarity]
    • Review an existing web application against a current web standard. [Assessment]

 

 

 

 

 

 

 

SPD/Mobile Platforms

This unit aims to develop concepts relating to web platforms technologies and considerations.

 

  • Topics
    • Development
      • Mobile programming languages
      • Mobile programming environments
      • Native versus cross-platform development
    • Mobile platform constraints
      • User interface design
      • Security
      • Power/performance tradeoff
    • Access:
      • Accessing data through APIs
      • Network and the Web
    • Mobile computing affordances
      • Location-aware applications
      • Sensor-driven computing (gyroscope, accelerometer..)
      • Telephony, Instant messaging
    • Emerging technologies
  • Illustrative Learning Outcomes
    • Design and implement a location-aware mobile application that uses data APIs.
    • Design and implement a sensor-driven mobile application that logs data on a server.
    • Design and implement a communication app that uses telephony and instant messaging.
    • Compare and contrast mobile programming with general-purpose programming.
    • Describe the pros and cons of native and cross-platform mobile app development.

 

SPD/Industrial Platforms

Industrial Platforms knowledge unit aims to consider topics related to platforms that impact in an industrial area. Concepts include robotics, specialized programming languages, and interconnection between physical and simulated systems.

 

  • Topics
    • Types of industrial platforms (e.g., Mathematic and numerical computation, Robotics, Industrial Controls)
    • Robotic software and its architecture
    • Domain-specific languages
    • Industrial platform constraints and design considerations
    • Interconnections with physical or simulated systems
  • Illustrative Learning Outcomes
    • Design and implement an application on a given industrial platform (e.g., using Lego Mindstorms, Matlab, or the Robot Operating System connected to a simulator or physical robot). [Usage]
    • Compare and contrast domain-specific languages and techniques with general-purpose programming languages and software development. [Assessment]
    • Explain the rationale behind the design of the industrial platform and its interconnections with physical or simulated systems. [Assessment]
    • Discuss the constraints that a given industrial platform imposes on developers. [Familiarity]

 

 

SPD/Embedded Platforms

Knowledge unit recognizing the impact on embedded platforms and their applications. Embedded platforms are an extensive specialized area that spans from sensor technology to applications of ubiquitous computing.

 

Reference PDC and OS for topics related to concurrency, timing, scheduling, and timeouts.

  • Topics
    • Introduction to the Unique Characteristics of ES.
    • Sensors and Actuators.
    • Embedded processors and architectures.
    • Embedded programming.
    • Real-time resource management.
    • Analysis and Verification.
    • Application Design.
  • Illustrative Learning Outcomes

 

 

SPD/Game Platforms

The Knowledge unit aims to recognize concepts related to game platforms and computing technology that make this unit unique.

 

  • Topics
    • Types of Game Platforms, such as Personal Computer (PC), Home Console, VR, Mobile, AR, Mixed Reality, Web
    • Game and visual programming platform Languages, such as Lua, Unreal/Unity, Custom Game Engine Development
    • Game Platform Constraints
      • Code Optimization
      • Network/Multiplayer requirements
      • GPU optimization
      • Port/platform optimization
    • Coding for alternate game controllers/users with distinct needs
      • Accessibility hardware (such as XAC)
      • Accessibility software/options
      • Game-specific controller – custom-built/3D-printed projects such as skateboard, lightgun, fishing rod
    • Games User Research (UX/UI/UR and user testing for games)
    • Edutainment/Simulations/Serious Games?
  • Illustrative Learning Outcomes
    • Design and Implement a simple application on a game platform. [Usage]
    • Describe the constraints that game platforms impose on developers. [Familiarity]
    • Compare and contrast game programming with general-purpose programming. [Assessment]

 

SPD/Interactive Computing Platforms

Knowledge unit recognizing the impact on interactive computing platforms. Emerging computing areas such as Data Science and Quantum Computing explore this particular knowledge unit. This unit aims to explore concepts that impact interdisciplincary areas in computing.

 

  • Topics
    • Data Analysis Platforms
      • Jupyter notebooks; Google Colab; R
      • Cloud data analytics (BigQuery), Apache Spark, generic “large data”
      • Prologs/Datalogs, other SQL-type exploratory analysis
    • Data Visualizations
    • Creative coding
      • Creative interactive frameworks (can x-over with web, embedded/IoT/other lo-fi hardware)
        • Live Music
        • Generative Art
        • Exhibition/demonstrative works
      • Machine-assisted interactivity
        • AI/ML “pairing”
      • Reactive/FRP paradigms
    • Quantum Computing Platforms
      • Simulating realtime quantum circuits
      • Qiskit; Quantum Development Kit; Cirq
    • Illustrative Learning Outcomes
      • Quickly analyze large datasets
      • Perform a musical piece/composition (e.g. with live coding)
        • Create an ML algorithm that can play a backing track
      • Implement simple logical gates using quantum primitives
        • Demonstrate/prove complexity
      • Create compelling computational notebooks that construct a narrative for a given journalistic topic
      • Design and implement interactive, exploratory graphics for a dataset
      • Compare and contrast different styles of data analysis (interactive vs static)
        • Discuss tradeoffs in underlying architectures