= APCS Phase 1 In Phase 1 we do a quick check to see that the student knows the basic requirements. Then in phase 2 we work through sample problems and/or a sample exam. == Skill Checklist Although, at this level, we assume the student already has basic programming skills, we will provide a basic explanation of all the concepts used. This commentary would be aimed at a student who knows two or more of the required languages already, but needs to be able to write the program in a third or fourth language. If the student is a beginner we don't recommend starting here, but go to the [[Basics]] page instead. Students must be able to write a complete working example program, which compiles and runs, in either C, C++, Java or Python, for every concept covering each of the following: * [[APCS-BPC]] -- Basic programming concepts, ex. input and output (commands and streams) * [[APCS-NVO]] -- numeric variables, arithmetic, logical and bitwise operators * [[APCS-OVT]] -- other variable types character, string, etc. and basic operations (excluding “as array”) * [[APCS-DTS]] -- Data types, constants, variables, scope: global / local * [[APCS-LCS]] -- control structures and loop structures * [[APCS-FUN]] -- functions * [[APCS-REC]] -- recursion * [[APCS-ARS]] -- arrays and structures (how to do C’s “struct” is in other languages) * [[APCS-BDS]] -- Basic data structures (how to make queues, stacks, trees, graphs) * [[APCS-BAL]] -- Basic algorithms, including: sorting, searching, greedy method, dynamic programming * [[APCS-DPC]] -- Dynamic programming (Top Down Design): simplifying a complicated problem by breaking it down into simpler sub-problems in a recursive manner. This is not refactoring; it is a design method. The above list is not very well defined. If a more defined list can be provided we will provide one. Otherwise the example programs given will be assumed to fully cover the requirements of each category they are mapped from.