## Computer Programming for Solving Applied Problems

Suggested Introductory Course for CTE ICT Pathway

(CALPADS Course Code 4619)

This course provides students with the fundamental knowledge of computer programming for solving applied problems in C. Students learn how a computer works and structured programming in C for software development. The topics include programming constructs, data types and declaration of variables, expressions and operators, selection statements, repetition, flowcharts for algorithm development, functions for modular programming, arrays for statistical data analysis, plotting for visualizing data (using scatter plot, dot plot, bar graph, histogram, Box-and-Whisker plot, etc.), linear regression and curve fitting, processing data files, animation, robotics applications, and applications in math and science. The emphasis of the course is to introduce the students to software development concepts. This course also focuses on algorithm development and computer programming for solving applied problems in science, technology, engineering and math (STEM), such as solving problems in Algebra and robotics. Considerable attention is devoted to program design, task decomposition, testing, debugging, and software reuse. Students write computer programs with graphical plotting in an integrated development environment. Through problem-based projects, students develop critical thinking, problem solving, computational thinking, effective communication, and teamwork skills.

*** Approved with D elective credit as a College-Preparatory Elective in Math and Computer Science.** Teaching resources contain robotics activities.

*A-G approved course outline*

**Computing with Robotics**

Suggested Introductory Course for CTE ICT Pathway

This course introduces students to the working principles and foundational knowledge of robotics. Students learn to control a single robot and multiple robots by graphical user interface and computer programs in RoboBlockly. Students write robotics programs to perform various tasks based on the sensory information of robots. Robots are used as platforms to engage students in both personalized and collaborative learning computing, science, technology, engineering, and math concepts. This course emphasizes hands-on robotics activities with a concentration on mathematical modeling and computer programming for solving problems in math and science. As term projects, students will participate in regional and statewide C-STEM RoboPlay Video and/or Challenge Competitions, which not only enhance their learning of robotics, math, and engineering, but also allow them to explore their creativity in writing, art, music, choreography, design, video editing, and film production. Through these project-based team activities, students develop critical thinking, problem solving, effective communication, and teamwork skills.

The online version of the course, suitable for distance learning, can be found here.

*** Approved with D science credit.
**

*A-G approved course outline*

**AP Computer Science Principles**

Suggested Concentrator Course for CTE ICT Pathway

**(Starting in 2022-2023)**

Using virtual robots and *optional *hardware robots, this year-long course introduces students to computer science principles aligned with the College Board’s AP CS Principles course and prepares them for the corresponding AP exam. In the first part of the course students use RoboBlockly, an online integrated learning environment that uses block-based programming to introduce key principles, themes, and structures in computer science and robotics. In the second part of the course students transition from block-based programming to text-based programming using the C/C++ interpreter Ch as a platform. Throughout the course students learn computational thinking and software development for practical applications, including number systems, data types, arrays, lists, iteration, selection, functions, sound, images, animation, and simulations. Students will also explore the working principles of the internet, visualization of data, cyber-security, and the impacts and limits of computing. The course concludes with a final design and development project that satisfies the AP Performance Task requirement.

**Robotic Technologies**

Suggested Capstone Course for ICT CTE Pathway

(CALPADS Course Code 4647)

This course expands students knowledge of the working principles and foundational knowledge of robotics. Students learn to control a single robot and multiple robots by graphical user interface, pose teaching, and object-oriented programs in C++. Students write robotics programs to perform various tasks based on the sensory information of the robot. Students also learn math and physical sciences with robotics. Through hands-on problem-based projects, students develop critical thinking, problem solving, effective communication, and team work skills. Robots are used as platforms to engage students on collaborative learning of science, technology, engineering, and math. This course emphasizes hands-on robotics activities with a concentration on algorithm development with robot sensors for solving problems in math and science. As term projects, students will participate in regional and statewide C-STEM RoboPlay Video and/or Challenge Competitions, which not only enhance their learning of robotics, math, and engineering, but also allow them to explore their creativity in writing, art, music, choreography, design, video editing, and film production. Through these project-based team activities, students develop critical thinking, problem solving, effective communication, and teamwork skills.

*** To-be-Approved with D elective credit as a College-Preparatory Elective in Math and Computer Science.**

**Math Lab with Coding and Robotics**

The course guides students through topics related to Science, Technology, Engineering, Art, and Mathematics (STEAM) utilizing Common Core State Standards for Mathematics while simultaneously teaching students programming and computational thinking with Computer Science standards, NGSS standards, and CTE ICT standards. Students use drag-and-drop visual programming and computing in C to reinforce and extend their knowledge of mathematical concepts by analyzing real life situations, identifying given information, formulating steps that a computer program could calculate to find a solution, analyzing the results for accuracy, and revising/modifying the programming solutions as necessary. Math topics covered include arithmetic operations (with whole numbers, fractions, and decimals), ratios, proportions, solving one-variable equations with single and multiple steps, absolute value equations and inequalities, linear equations, systems of linear equations, exponential functions, polynomial functions, step and piecewise functions, geometric transformations (including translations, rotations, and reflections), probability, statistical data analysis, and visualization. Robotics activities allow students to engage with physically derived mathematical problems to visualize situations, associate linear and quadratic graphs with physical phenomenon, predict and identify key features of the graphs with robotic systems, and solve robotics problems through mathematical modeling and programming.

*** Approved D science credit as computer science lab course emphasizing mathematics.**

**Physical Computing with Arduino**

This one-semester course provides students with the fundamental knowledge of physical computing and making. Students learn how a computer works and structured programming in C for software development for interfacing electronics and sensors using Arduino, a low cost microcontroller board. The topics include programming constructs, data types and declaration of variables, expressions and operators, selection statements, repetition, plotting for visualizing data, real-world application projects. The emphasis of the course is to introduce the students to software development concepts for interface with hardware using Arduino. Students learn how to program Arduino with a user-friendly graphical user interface (GUI) ChDuino and C/C++ interpreter Ch. Students also learn basics of electronics and how Arduino responds to sensors using enlightening examples. Then, students design and build more fun prototypes based on their imagination as team projects. At the end, student teams present their projects.

*** Approved with D science credit.**

**Physical Computing with Pi and Arduino**

This course provides students with the fundamental knowledge of physical computing and making. Students learn how a computer works and structured programming in C for software development for interfacing electronics and sensors using ultra-low-cost computers of Arduino and Raspberry Pi (Pi). The topics include programming constructs, data types and declaration of variables, expressions and operators, selection statements, repetition, functions for modular programming, arrays for statistical data analysis, plotting for visualizing data, processing data files, real-world application projects. The emphasis of the course is to introduce the students to software development concepts for interface with hardware using Arduino and Pi. Students learn how to program Arduino and Pi with a user-friendly graphical user interface (GUI) ChDuino and GPIOviewer, and C/C++ interpreter Ch, as well as Arduino IDE. Students also learn basics of electronics and how Arduino responds to sensors using enlightening examples. Then, students design and build more fun prototypes based on their imagination as team projects. At the end, student teams present their projects.

*** Approved with D science credit.**

**Computer-Aided Design in Autodesk Inventor and 3D Printing (Supplementary)**

This curriculum introduces computer-aided design with Autodesk Inventor to create accessories and parts for the Linkbot using a 3D printer. The curriculum can be used stand alone. It is also appropriate for use in conjunction with the C-STEM Computing with Robotics, and other existing engineering curriculum in schools.

**Computer-Aided Design in SolidWorks and 3D Printing (Supplementary)**

This curriculum introduces computer-aided design with SolidWorks to create accessories and parts for the Linkbot using a 3D printer. The curriculum can be used stand alone. It is also appropriate for use in conjunction with the C-STEM Computing with Robotics, and other existing engineering curriculum in schools.

**Introduction to Computer Programming for Engineering Applications (a UC Davis Engineering Course)**

This course introduces students to structured programming in C. Many algorithms for computer-aided problem solving are developed throughout the course to solve practical problems in engineering and science. The topics include number systems with internal representations of binary, octal, decimal, and hexadecimal numbers as well as binary two’s complementary representation; limitations and numerical accuracy of different data types; 32-bit and 64-bit programming models; unary, binary, and ternary operators; selection statements for making decisions; iterative statements for repetitions; modular programming and code reuse; storage classes; arrays for data processing; pointers; dynamical memory allocation and deallocation; ASCII Code; characters and strings; structures and enumerations; top-down and bottom-up design of large-scale software project; file processing; and computational arrays for matrices and linear algebra for engineering applications. Available through McGraw Hill.