Unit 1: Creative Development¶
Big Ideas Covered:
Creative Development (CRD)
Abstraction (AB)
Program Function and Purpose (PFP)
Program Design and Development (CRD)
Comprehensive Outline
1.1: The Creative Nature of Programming
Programming is a creative, collaborative process
There are often multiple correct solutions
Programs can express personal ideas or solve real-world problems
Creativity in computing isnāt just visualāitās structural, too
Key Concepts:
Programming is more than writing codeāitās solving problems creatively
Design thinking and brainstorming
Real-world relevance and innovation
1.2: Personal Expression Through Computing
Programs reflect the interests, backgrounds, and identities of their creators
Students can make unique and personal projects
Emphasis on authentic problem-solving and cultural relevance
Key Concepts:
Computer science as a form of expression
Importance of diversity in computing
Encouraging voice, purpose, and originality
1.3: Collaboration in Programming
Benefits of working in teams: productivity, problem-solving, code quality
Best practices for collaboration: pair programming, team roles, version control
Ethical collaboration: avoiding plagiarism and properly crediting work
Key Concepts:
Communicating ideas clearly
Constructive peer feedback
Sharing responsibilities in team projects
1.4: Program Design and Development
The iterative process of design ā test ā debug ā improve
Planning tools: flowcharts, pseudocode, wireframes
User needs and interface considerations
Key Concepts:
Start simple, then improve
Think about how users will interact with the program
Make code readable and organized
1.5: Identifying and Correcting Errors
Types of programming errors:
Syntax (violating language rules)
Logic (incorrect reasoning)
Runtime (errors that crash or behave unexpectedly)
Use of debugging tools and strategies
Importance of testing and refining code
Key Concepts:
Everyone makes mistakesāgood programmers catch and fix them
Debugging is a creative and logical process
Testing is not just technicalāitās about ensuring user experience
1.6: Program Function and Purpose
Programs are designed to solve problems or perform tasks
Identify program goals and intended outcomes
Input, processing, and output
Understanding what a program does and why it was created
Key Concepts:
Ask: What problem is this solving?
Clear documentation of purpose and usage
Communicating your project to non-technical audiences
1.7: Program Design and Development Process
Understanding the full lifecycle:
Identify the problem
Plan the solution
Develop and test the program
Refine and evaluate
Preparing for the Create Performance Task (Create PT)
Key Concepts:
Documenting the process is as important as writing code
Planning saves time later
Programs should evolve with user feedback and testing
Key Vocabulary:
Creative development
Iterative design
Debugging
Collaboration
Abstraction
Testing
Input/output
Function and purpose
Design process
Documentation
š” Suggested Activities:
Mini-Create Task: Design a simple program around a personal interest
Group brainstorming: Solve a community or school problem with code
Debugging Challenge: Fix a broken program and explain the fixes
Peer code reviews: Practice giving and receiving feedback
Reflection journals: How did you express yourself creatively in your project?
Summary:
By the end of Unit 1, students should be able to:
Explain how computer programs can express ideas and solve problems creatively
Work collaboratively to develop and refine programs
Use a structured process to plan and improve code
Identify and fix errors in their own and othersā code
Communicate the purpose and function of a program clearly
The Creative Development section of the AP Computer Science Principles (CSP) course focuses on helping students develop skills in programming and computational thinking to create their own digital artifacts (such as apps, games, simulations, websites, or animations). This section emphasizes creativity, problem-solving, and iteration in the development process. It helps students build their programming skills while also learning how to design and refine computational solutions to problems.
What You Will Learn:¶
Problem Identification: Students will learn how to define problems that can be solved through computing. This includes thinking critically about the needs of users or audiences and determining the appropriate computing tools or techniques to address the issue.
Design and Development: Students will learn how to break down a problem into smaller components and design a solution using algorithms, data structures, and other programming concepts. This section often involves developing a clear plan or outline before starting to write code.
Implementation: Students will learn how to translate their designs into functioning programs using a programming language. This will include writing and debugging code, as well as using existing software libraries or frameworks to enhance their projects.
Iterative Improvement: Students will learn how to test their programs and refine them based on feedback and new ideas. This can involve improving the usability, functionality, or efficiency of their work.
Creativity and Expression: The course emphasizes how students can use computing as a medium for personal expression and creativity. This could be through digital art, interactive media, or other projects that allow them to express ideas and solutions in unique ways.
What You Will Do:¶
Create a Digital Artifact: Students will work on a substantial project that demonstrates their ability to apply programming concepts creatively. This could be anything from a game, animation, app, or simulation to a website, depending on the project requirements they choose.
Use a Programming Language: They will implement their projects using a programming language such as Python, JavaScript, or others, depending on the project type and the tools they are working with. Students develop computational thinking practices through a combination of problem-solving strategies, exposure to coding, and hands-on practice. Here are a few key ways that this happens:
Decomposition: Students break down complex problems into smaller, manageable parts. For example, in coding, they might start by breaking down a project into smaller tasks before tackling the entire problem. This helps them understand the structure of a problem and simplifies finding a solution.
Pattern Recognition: As students work with code or mathematical models, they begin to recognize recurring patterns. This might involve identifying repetitive structures in loops or recognizing common strategies in algorithms. Identifying patterns makes it easier to solve similar problems in the future.
Abstraction: Students learn to focus on the important aspects of a problem, ignoring unnecessary details. In coding, this could involve defining functions to generalize common tasks and avoid redundancy, or thinking about the general logic of a problem rather than the specifics.
Algorithmic Thinking: Students develop the ability to create step-by-step instructions (algorithms) to solve problems. This can include writing code to implement these instructions or outlining a process to follow for problem-solving.
Iterative Design and Testing: Students learn to test and refine their solutions. In computational thinking, itās common to iterate through code, testing different approaches to refine and improve their solutions. This approach teaches resilience and an understanding of failure as part of the learning process.
Collaboration and Communication: Computational thinking also involves working with others, sharing ideas, and communicating solutions clearly. For example, students may collaborate on coding projects or discuss strategies for solving problems in groups, building both technical and interpersonal skills.
Collaborate and Share Ideas: Often, students will have opportunities to share their progress and ideas with peers, providing feedback and learning from each otherās approaches.
Document the Development Process: Students will keep track of their progress through documentation, explaining their design choices, challenges faced, and how they overcame them.
How You Will Show What You Have Learned:¶
Performance Tasks: The Creative Development section includes a performance task that is submitted to the College Board. Students need to provide:
Artifact: A functioning digital product (app, game, simulation, etc.) that they have created.
Written Responses: Students write a reflection about their project, discussing their problem-solving approach, design decisions, and how they iterated on the project. This will include insights into the algorithms they implemented and the challenges they faced.
Demonstration of Computational Thinking: Students must demonstrate that they can use computational thinking (breaking down problems into smaller parts, designing solutions, and evaluating results) as part of their project.
Self-Reflection: Students will reflect on their learning, providing insight into how they created their digital artifact and what they learned through the process.