Specialty Area

Programming

Content Progression

Programming is the craft of analyzing problems and designing, writing, testing, and maintaining programs to solve the problems (MDESE, 2016). It is a creative process that includes many aspects of software development. The foundational content for all students includes learning outcomes related to programming (in fact, it is one of the five Topic Areas). This content progression is for students who are interested in continuing to learn programming or broad application of CS, as opposed to a specific specialty area. For continued learning beyond the foundation, we have defined the following content progression that includes two additional levels (fundamentals and specialty) that progressively build on this content. This progression might lead to a major or minor in CS and to careers as a computer scientist or software engineer, among many potential others.

Foundation

Prioritized foundational content specific to programming:

  • Programming skills
  • Inclusive collaboration while programming
  • Ethics and social impact
  • Testing and debugging
  • Designing, composing, and interpreting algorithms
  • Preparation and use of data in programming
  • Cybersecurity basics
  • Hardware and devices

Fundamentals

  • Decomposition
  • Problem-solving
  • Conditions, iterations, selection, functions 
  • Abstractions and models representing a system
  • Arrays and data structures
  • Unit testing
  • Debugging
  • Usage of integrated development environments (IDEs)
  • Algorithm optimization

Specialty

  • Programming skill development 
  • Software development processes (e.g., Agile/Scrum)
  • Application development (e.g., mobile apps, virtual reality apps)
  • Team project skills
  • Collaborative source control
  • Correctness and provability of algorithms

Example Course Pathway

The programming content progression can be packaged in a variety of ways to meet the local context and needs of individual schools and districts. This programming pathway serves as an example of how content in this specialty can be implemented in high schools. Each box represents a course and can be expanded to view a corresponding description. 

Foundation

see below

Computer Science Foundations supports all high school students, regardless of postsecondary goals, in developing the knowledge, skills, and dispositions necessary to navigate and understand the technology-driven world in which they live. Course content, organized into five Topic Areas (Algorithms, Programming, Data and Analysis, Computing Systems and Security, and Preparing for the Future), rests upon four Key Pillars (Computational Thinking, Inclusive Collaboration, Human-Centered Design, and Impacts and Ethics). Topic Areas and Pillars are essential components of this course and the student experience (see Section 2 of this report for more details).

Fundamentals

see below

Programming the Future provides students who have a foundational understanding of computer science with an opportunity to explore various topics such as cybersecurity, artificial intelligence, and data science. While developing their programming skills, students will apply fundamental ideas in these areas to solve meaningful and interesting problems. Content covered in this course aligns with fundamentals content from the Programming, Cybersecurity, Artificial Intelligence, and Data Science content progressions as defined in Sections 3.1, 3.2, 3.3, and 3.5.

Specialty

see below

Application Development involves advanced study related to programming with a focus on developing mobile and desktop applications. Students will engage in collaborative development processes to solve a problem or address a personal or community need. In addition to development, students will test and refine their products to ensure usability and quality user experience. Ethical issues will also be considered. Content covered in this course aligns with specialty content from the Programming content progression as defined in Section 3.1.
Software Development provides opportunities for extensive study in one or more programming languages, ideally that students have not experienced in previous coursework. Students learn about uses and advantages of particular programming languages and understand commonalities and differences across them. Students will engage in collaborative development processes to solve a problem or address a personal or community need using their programming skills. This course aligns with common first-year postsecondary programming courses (i.e., CS1, including AP CSA). Content covered in this course aligns with specialty content from the Programming content progression as defined in Section 3.1.

Advanced Application

see below

The Pathway Capstone Course is an opportunity for students to apply advanced computer science knowledge and problem-solving, communication, and collaboration skills to tackle a personally meaningful computing project. Students will design innovative solutions and present them to authentic audiences, preparing them for future academic and professional pursuits. This course is designed to inspire creativity, foster collaboration, and demonstrate proficiency in real-world application of the knowledge, skills, and dispositions developed during prior coursework and experiences.

View the Implementation and Integrating CS pages to learn more about how to teach foundational and specialty content to students.

Possible Careers:

Computer Scientist, Software Engineer, Data Scientist, Artificial Intelligence Specialist, Cybersecurity Specialist, Network Specialist, Roboticist, CS Teacher/Instructor/Professor, CS Education Researcher
Reimagining CS Pathways: High School and Beyond