1 P a g e http://cs.stormingrobots.com Computer Science skill should go beyond just programming itself but much more importantly in problems solving skill with computational thinking even for grade schools. Automation is entrenched in our daily lives in the era of digital age. Computer Science with computational thinking is indispensable for strengthening the foundation. This sub-group aims to build this core foundation and sharpen students' problem solving skills in this digital world, no matter whether in engineering, or even liberal arts area. Storming Robots utilizes Robotics to animate problem solving effort starting from Grade 4. However, we encourage students to study in this Algorithms in C/C++ Track starting from Grade 8. This document lists a summary of the Syllabus covered in this Track. This syllabus consists of four levels targeting for students from Grade 8+. Syllabus is designed to work with our roboclub model to facilitate needs for individual s interests and strength. Characteristics: Books: COMPUTER SCIENCE SUB-GROUP All levels stress in Computational Thinking and Efficiency. Students, who readily master a skill, who be allowed to move quickly to the next concept. Those with gaps in their prerequisite knowledge will receive additional exercises to address these shortcomings. Progress is self-paced with excellent work quality. Exercises are often adjusted for varying levels of students achievement. This is to ensure all students will master a concept building a strong foundation before tackling new concepts. All assigned exercises are completed with excellent quality, i.e. no ad-hoc wasted memory space, inefficient codes, etc. Students must complete at least Level I in order to progress to a Secondary level of robotics competitions. However, Level II is more preferable. Accomplish at least Level II and demonstrate excellent understanding in order to conduct advanced projects involving automation. Focus on problems solving/software development skill, so students will not work with the physical robot Allow students to embed other competitions in-between levels. Level I to II : C Programming: A Modern Approach, 2nd Edition - ISBN-13: 978-0393979503; Book for Level III : C++ Primer Plus (6th Edition) (Developer's Library) 6th Edition: o ISBN-13: 858-0001090474, or ISBN-10: 0321776402. Additional learning notes from instructor. Software: Microsoft Visual Studio Community Version.
2 P a g e LEVEL I Completion of Level I is required for all students who wish to participate in any Secondary level of Robotics Competition. Building proper Mindset in computational thinking and analysis. Know how to use Debugger including break points, observation of variables, watch feature. By the time this level is completed, students should have completed 30+ programs. This is not a hardset number because more exercises will be given if necessary in order to strengthen one s understanding in a certain subject matter. Build fundamentals of programming with an emphasis on producing clear, robust, and reasonably efficient code using top-down design, informal analysis, and effective testing and debugging. This will help them immensely in their future endeavor in any engineering programs. At completion of level I, you not only should have covered the core control structure foundation required in AP Computer Science, but also will be stronger in programming analysis. Most programs exercises you have completed in this level exercise higher analytical skill required in AP Comp. Sci. The only additional content will be in the basics in OOPS design pattern. That will be covered in Level III. Students demonstrated high proficiency in this level will be able to self-study for AP Computer Science A with ease. WHAT WILL BE COVERED 1) Introducing C and Strengths and Weaknesses of C - Chapter 1 How to use the Microsoft Visual C/C++ Compiler IDE. 2) C Fundamentals in writing Simple Program - Chapter 2 3) Formatted Input/Output - Chapter 3 4) Expressions (simple to compound) - Chapter 4 5) Selection Statements 63 - Chapter 5 Introduction of State Tables/Diagrams. Simple idea in State machine more example exercises using switch to implement state tables. More in depth will be covered in Level III. 6) Loops Control Structure - Chapter 6 7) Important understanding in Primitive Types - Chapter 7 Base conversions Understand signed bit 8) Arrays : One and Multi- Dimensional - Chapter 8 basic sorting algorithms insertion sort. 9) Fundamentals in creating Functions 155 - Chapter 9 10) Basic Recursive Functions Additional learning materials additional to the textbook will be provide to students for reinforcement. 11) Basics in Creating a project with multiple programs - Chapter 10 Touch on the process from compilation to linkage.
3 P a g e 12) Writing Large Programs Chapter 15 proper division into header files, basic directives, sharing files, etc. 13) Basic in using Structures, Unions, and Enumerations chapter 16. Additional projects: Prime number generator. At the end of the project, all programs must meet minimum performance requirement 100,000 prime numbers within 3 msecs with our i5 processor CPU. Count of Sets of Anagrams through a series of multiple words. Write a Tic-tac-toe program to allow 2 humans to play against each other. This work is not considered to be done until an excellent programming style is achieved, i.e. contain sense of encapsulation, compact but extremely readable programming styles.
4 P a g e LEVEL II By the time this level is completed, students should have completed 20+ programs. You should expect each exercise will be longer than those exercises in Level I. Strengthen Strong fundamentals of programming with an emphasis on producing clear, robust, and reasonably efficient code using top-down design, informal analysis, and effective testing and debugging. This will help them immensely in their future programming endeavor such as robotics projects, competitions. You should be ready to work on practice exercises posted on www.usaco.org Bronze level. Students should start doing practice themselves as there are many exercises available online at www.usaco.org. During October to April, students are encouraged to continue working on USACO problems set, as well as take the Bronze Level online Exam. Do note: Students are encouraged to complete Level II before returning back to more advanced RobocupJunior robotics competitions. WHAT WILL BE COVERED 1) Introduction to Recursion partial Chapter 9 2) Simple Project creation with multiple programs partial Chapter 10 3) Pointers Chapter 11 4) Pointers and Arrays (1D and multi-dimensional) Chapter 12 5) Strings Chapter 13 6) String Manipulation Chapter 13 using C string vs memory library 7) Arrays of Strings Chapter 13 recursive censor string challenge 8) Command-Line Chapter 13 Arguments Command line compilation & linking How to use system path, etc. 9) More on the Preprocessor - Chapter 14 Conditional Compilation, such as #if, #elif, #line, etc. 10) Use Makefile to build a Multiple-File Program Chapter 15 11) More on Structures, Unions, and Enumerations Nested Arrays and Structures Structure pointer 12) Bitwise operations Chapter 20 also include binary arithmetic State diagram for a simple N-bits state sequence Using bits in structure 13) More on File I/O Chapter 22 Simple File I/O with C++ cin/cout/fstream http://learning.stormingrobots.com 14) Revisit Recursion Chapter 9 More on sorting Write their own QuickSort Algorithm for sorting array of integers.
5 P a g e NQueen Algorithm Binary Search Math Expression Parsing parse the postfix 15) Abstract Data Type Chapter 17 Advanced Uses of Pointers dynamic memory manipulation, generic pointers pointers to function. Linked List Stack vs. Queue 16) Explore State Diagrams (additional) Special Note: For students who aim to study in Computer Science in College, they may move onto Level IV after II in order to cover some more advanced algorithms instead of OOPS in Level III.
6 P a g e LEVEL III (OOPS) This level does not necessarily mean being more complex topics than Level II. This level will extend over what is required in AP Computer Science A. AP Computer Science A requires knowledge in very rudimentary level in Object Oriented Programming Model (often referred as OOPS). With strong Level II foundation, students should have built a high analysis skill and intuition to adapt OOPs C++. Students will switch book for this level. Students will switch to C++ Primer Plus at this Level. By the time this level is completed, students should have completed more than 20 programs. At the end of this level, you will have a good basic foundation of Object-Oriented Design Pattern. If you are going into computer engineering or any courseware which involves working with micro-controller libraries, completion of this will help you greatly in working with these libraries. WHAT WILL BE COVERED: 1) More on Storage Class Chapter 18 *** will simply touch on this chapter. It is easy enough for students to review this themselves. 2) Object Oriented Pattern Design with C++ Chapter 19 and additional materials Encapsulation Data Hiding Inheritance Polymorphism 3) Basic Class Types in C++ (Additional) Basic Class/Object Programming Structure Constructors, Destructors Overloading 4) Vectors and Stings Chapter 3 & 9 of C++ book 5) Exceptions Handling Chapter 5 of C++ book 6) More with C++ I/O Chapter 8 of C++ book 7) Generic Algorithms Chapter 10 of C++ book 8) Class Design - Chapter 13 & 14 of C++ book 9) Exceptions Handling Chapter 18 of C++ book Other chapters in the C++ book are excellent materials for references on advanced topics, tools and techniques. These chapters gear towards advanced self-learners. Therefore, the amount of coverage on the remaining chapters will depend on the individual student s strength and interest, and availability outside school work.
7 P a g e LEVEL IV This level requires students already very much advanced in their software programming skill. Students must be very self-driven as programs do become a lot more difficult to be implemented. Students should expect these are much harder than those presented in Level III. The following algorithms sometimes are often covered by Senior college level or even graduate school students. If you are planning to major in Computer Science in College, Level III+ work will be very beneficial. This will give you a great head start as the materials will cover courseware usually introduced in sophomore+ college levels:. Like Level III, some projects may be done with Robotics. It really depends on individual s interest and time availability. At this level, students are readily to tackle USACO Gold level. Science Data Structure Class criteria and beyond. This level will cover College Level Computer WHAT WILL BE COVERED: 1) Backtracking Algorithm - Depth First Search 2) Depth First Search MiniMax Algorithm with alpha-beta pruning 3) Breath First Search Dikystra Algorithm shortest path Maze Navigation this may be done in a maze setting with two possible challenge: a) Traverse the whole maze to seek for location of a certain target. Using BFS to go back to the start point to report the location of the target b) Have one robot to traverse a maze to seek for location of one target. Figure out the shortest path and send data remotely to home station robot. This home station robot will send traverse based on the path given by the first robot. 4) Tree and Heap : 5) Hashing concepts 6) Lossless Data Compression Algorithm Huffman Coding 7) Minimum Spanning Tree 8) Dynamic Programming 9) KnapSack 10) Projects: Examples 11) - Maze project 12) - Knapsack Problem 13) A* algorithm (Path finding) 14) Exploration in other localization techniques ( gear more towards robotics)