Grade 11-12 | 09 Units
Computer Science A (CSA) introduces students to software engineering and object-oriented programming and design using the Java programming language. This curriculum covers a broad range of topics, including the design of solutions to problems, the use of data structures to organize large sets of data, the development and implementation of algorithms to process data and discover new information, the analysis of potential solutions, and the ethical and social implications of computing systems.
Unit 1: Object-Oriented Programming
[19 Lessons]
Unit 2 : Class Structure and Design
[15 lessons]
Unit 3: Arrays and Algorithms
[14 Lessons]
Unit 4: Conditions and Logic
[15 Lessons]
Unit 5: Two-Dimensional Arrays
[11 Lessons]
Unit 6: Array Lists and String Methods
[14 Lessons]
Unit 7: Method Decomposition and Recursion
[14 Lessons]
Unit 8: Searching and Sorting
[13 lessons]
Unit 9: AP Exam Review and Practice
[15 lessons]
Unit 1: Object-Oriented Programming
This unit introduces you to object-oriented programming principles as you explore The Neighborhood and discover your identity as a software engineer. You learn fundamental Java concepts as you navigate and paint in The Neighborhood with Painter objects and extend the Painter class to expand the capabilities of your programs. You practice predicting the outcome of program code and developing algorithms using sequencing, selection, and iteration to navigate mazes and paint murals. You also learn to document program code using comments to describe the behavior of specific code segments and conduct code reviews to receive feedback from your peers.
Unit 2: Class Structure and Design
This unit expands on the object-oriented programming principles introduced in Unit 1 to explore design principles as you develop classes with attributes and behaviors and work with primitive and object data. You learn to work with variables and user input as you develop and utilize classes and objects to represent desserts, customers, and food trucks for the Project Mercury Pastries Food Truck business. As you work with the Dessert class, you build on your knowledge of inheritance to design subclasses that represent specific types of desserts. While working with variables, you learn to create and evaluate expressions using the assignment and relational operators and trace code segments to determine the result of output. Throughout this unit, you continue to develop software engineering skills as you learn to use UML diagrams to represent classes and the DRY principle to refactor program code.
Unit 3: Arrays and Algorithms
This unit introduces you to data structures to store primitive values and object references. You use one-dimensional (1D) arrays to store multiple related values while expanding your knowledge of loops and conditionals to analyze and process data in a 1D array. You learn to use for loops to traverse arrays and discover that an algorithm involving loops can be implemented with either a for loop or a while loop. Throughout the unit, you develop and modify algorithms to find and manipulate elements in a 1D array while also discovering the concept of polymorphism when traversing arrays of objects. While developing algorithms, you identify preconditions and postconditions and implement solutions to ensure that these conditions are satisfied. You continue to develop software engineering skills as you learn to make design decisions and use 1D arrays to store and analyze data.
Unit 4: Conditions and Logic
This unit expands on the use of APIs, object-oriented programming concepts, and conditional statements to develop visuals and animations using The Theater. You learn about the functionality of the static keyword and explore the methods in the Math class to perform calculations and incorporate randomness in program decisions and behaviors. While working with conditional statements and Boolean expressions, you realize the difference between using the == operator and the equals() method to compare objects for equality and discover the need for overriding the equals() method in their own classes. You deepen your understanding of conditional statements and logical operators as they learn to write nested conditional statements, use the AND ( && ) and OR ( || ) operators, and write multi-selection statements to test multiple conditions. Using your knowledge of Boolean expressions and logical operators, you practice evaluating truth tables to compare two expressions for equivalence and applying De Morgan's Laws to simplify expressions.
Unit 5: Two-Dimensional Arrays
This unit expands on data structures introduced in Unit 3 to create tables of data using two-dimensional (2D) arrays. You identify similarities and differences between 1D and 2D arrays when creating, accessing, and traversing 2D arrays and apply standard algorithms to find and manipulate elements. As you analyze problems involving 2D arrays, you revisit these standard algorithms to determine what code needs to be added or modified and to interact with completed program code. You apply these concepts to manipulate pixels using The Theater to create image filters in addition to working with primitive values and various object references. Additionally, you use the programming knowledge and skills you have acquired to consider the impacts of programs on society, economies, and culture.
Unit 6: Array Lists and String Methods
This unit continues to expand on data structures to introduce you to creating lists using the ArrayList class. In the process, you learn about the Integer and Double classes and use their methods to parse data from text files and explore the limits of integer values. You differentiate between when to use each type of data structure while learning about the structure and functionality of an ArrayList. You apply standard algorithms to find and manipulate data in an ArrayList of numerical and object data. Throughout the unit, you learn to use the String class to analyze and process text obtained from a user and from file input while learning about basic natural language processing techniques and applications. Additionally, you further develop software engineering skills by writing Javadoc comments to create API documentation for your programs.
Unit 7: Method Decomposition and Recursion
This unit allows students to practice software design and development using the skills they have learned throughout the curriculum while planning and developing a creative coding project to convey a personal interest or story using The Theater. Students use decomposition strategies and object-oriented principles to plan and implement their ideas while ensuring their projects meet specified requirements. In the process, students learn to write private, overloaded, and overridden methods and use the super keyword in a subclass method to call a superclass method while exploring the functionality of methods and their parameters. Throughout the unit, students practice tracing and writing recursive methods and comparing these methods to iterative solutions. With the knowledge and skills acquired throughout the year, students consider the need for maximizing system reliability as they explore bugs and issues in existing programs.
Unit 8: Searching and Sorting
In this unit, you expand on the algorithms you have learned to explore common approaches to searching and sorting 1D and 2D arrays and ArrayLists. In the process, you analyze and compare the efficiencies of these algorithms using statement execution counts and further develop problem-solving skills to decompose complex problems. Throughout the unit, you apply your programming and software engineering skills to plan and develop a creative coding project using the console that incorporates object-oriented design, data structures, and algorithmic thinking. With the knowledge and skills acquired throughout the year, you consider the privacy and security of programs and users.
Unit 9: AP Exam Review and Practice
This unit prepares you for the AP CSA Exam by reviewing key concepts, practicing multiple-choice and free-response questions, and strengthening test-taking strategies. You identify strengths and areas of improvement to create individualized study plans to focus your practice and self-assess your progress.
Enhancing technology skills
Course Link
Unit 2: https://studio.code.org/s/csa2-2023?viewAs=Instructor
Unit 3: https://studio.code.org/s/csa3-2023?viewAs=Instructor
Unit 4: https://studio.code.org/s/csa4-2023
Unit 5: https://studio.code.org/s/csa5-2023
Unit 6: https://studio.code.org/s/csa6-2023
Unit 7: https://studio.code.org/s/csa7-2023