This course introduces cryptography by addressing topics such as ciphers that were used before World War II, block cipher algorithms, the advanced encryption standard for a symmetric-key encryption adopted by the U.S. government, MD5 and SHA-1 hash functions, and the message authentication code. The course will focus on public key cryptography (as exemplified by the RSA algorithm), elliptic curves, the Diffie-Hellman key exchange, and the elliptic curve discrete logarithm problem. The course concludes with key exchange methods, study signature schemes, and discussion of public key infrastructure. Note: It is strongly recommended that you complete an abstract algebra course (such as the Saylor FoundationĺÎĺ_ĺĚĺ_s MA231) before taking this course. Upon successful completion of this course, students will be able to: explain how symmetric and asymmetric key ciphers work; list and define cryptographyĺÎĺ_ĺĚĺ_s goals; list and define the most common classical ciphers; explain the workings of mechanical ciphers Enigma and Lorenz; describe the principles of substitution-permutation networks; describe the algorithms for data encryption and the advanced encryption standard; describe and use the MD5 and SHA-1 hash functions; explain the idea behind public key cryptography; use the RSA cryptography system by applying it to practical problems; test whether the large integer is prime with the mathematical tools presented in this course; define the elliptic curve and use it in cryptography; explain the Diffie-Hellman key exchange; describe the most common signature and autokey identity schemes; describe the conceptual workings of public key infrastructure. This free course may be completed online at any time. (Computer Science 409)
Through Internet research, patent research, standards and codes research, user interviews (if possible) and other techniques (idea web, reverse engineering), students further develop the context for their design challenge. In subsequent activities, the design teams use this body of knowledge about the problem to generate product design ideas. (Note: Conduct this activity in the context of a design project that students are working on, which could be a challenge determined by the teacher, brainstormed with the class, or the example project challenge provided [to design a prosthetic arm that can perform a mechanical function]. This activity is Step 2 in a series of six that guide students through the engineering design loop.)
Testing is critical to any design, whether the creation of new software or a bridge across a wide river. Despite risking the quality of the design, the testing stage is often hurried in order to get products to market. In this lesson, students focus on the testing phase of the software/systems design process. They start by exploring existing examples of program testing using the CodingBat website, which contains a series of problems and challenges that students solve using the Java programming language. Working in teams, students practice writing test cases for other groups' code, and then write test cases for a program before writing the program itself.
This site allows students to get exposure to coding. Teachers and students can access material with or without an account. There are various options to choose from and are engaging for students. This is a great way to introduce coding and have exploratory days.
This course covers the entire family of programming languages, starting with an introduction to programming languages in general and a discussion of the features and functionality that make up a modern programming language. Upon successful completion of this course, the student will be able to: identify the common concepts used to create programming languages; compare and contrast factors and commands that affect the programming state illustrate how execution ordering affects programming; identify the basic objects and constructs in Object-Oriented Programming; explain the characteristics of pure functional functions in functional programming; describe the structures and components utilized in logical programming. (Computer Science 404)
In this culminating activity of the unit, students bring together everything they've learned in order to write the code to solve the Grand Challenge. The code solution takes two images captured by robots and combines them to create an image that can be focused at different distances, similar to the way that humans can focus either near or far. They write in a derivative of C++ called QT; all code is listed in this activity.
Students analyze a cartoon of a Rube Goldberg machine and a Python programming language script to practice engineering analysis. In both cases, they study the examples to determine how the different systems operate and the function of each component. This exercise in juxtaposition enables students to see the parallels between a more traditional mechanical engineering design and computer programming. Students also gain practice in analyzing two very different systems to fully understand how they work, similar to how engineers analyze systems and determine how they function and how changes to the system might affect the system.
Working in small groups, students complete and run functioning Python codes. They begin by determining the missing commands in a sample piece of Python code that doubles all the elements of a given input and sums the resulting values. Then students modify more advanced Python code, which numerically computes the slope of a tangent line by finding the slopes of progressively closer secant lines; to this code they add explanatory comments to describe the function of each line of code. This requires students to understand the logic employed in the Python code. Finally, students make modifications to the code in order to find the slopes of tangents to a variety of functions.
Based on the Scratch "Animate Your Name" tip tutorial, this mini-lesson has students showing their school spirit by animating their school mascot. The step-by-step instructions assume that the teacher has a little exposure to the Scratch platform.
Students learn about homeostasis and create models by constructing simple feedback systems using Arduino boards, temperature sensors, LEDs and Arduino code. Starting with pre-written code, students instruct LEDs to activate in response to the sensor detecting a certain temperature range. They determine appropriate temperature ranges and alter the code accordingly. When the temperature range is exceeded, a fan is engaged in order to achieve a cooling effect. In this way, the principle of homeostasis is demonstrated. To conclude, students write summary paragraphs relating their models to biological homeostasis.