This course introduces the compilation process, presenting foundational topics on formal languages …
This course introduces the compilation process, presenting foundational topics on formal languages and outline each of the essential compiler steps: scanning, parsing, translation and semantic analysis, code generation, and optimization. Upon successful completion of this course, the student will be able to: describe the compilation process and explain the function of the components that comprise the structure of a compiler; apply concepts of formal languages and finite-state machines to the translation of computer languages; identify the compiler techniques, methods, and tools that are applicable to other software applications; describe the challenges and state-of-the-practice of compiler theory and practice. This free course may be completed online at any time. (Computer Science 304)
In this activity, students and teachers are able to sort components of …
In this activity, students and teachers are able to sort components of a computer into 4 categories: input, output, process, and store (memory). Reinforcing the ability to drag and drop, learners are able to identify and begin developing the purpose of each categorized component.
This activity complements the book Hello Ruby: Journey Inside the Computer by Linda Liukas and was remixed with permission from the San Francisco Unified School District (SFUSD) Computer Science Team.
Key concepts include: mouse keyboard printer microphone headphones monitor controller camera temperature sensor 3-D printer CPU GPU ROM RAM Hard Drive Input Output Memory Process
Students explore the concept of optical character recognition (OCR) in a problem-solving …
Students explore the concept of optical character recognition (OCR) in a problem-solving environment. They research OCR and OCR techniques and then apply those methods to the design challenge by developing algorithms capable of correctly "reading" a number on a typical high school sports scoreboard. Students use the structure of the engineering design process to guide them to develop successful algorithms. In the associated activity, student groups implement, test and revise their algorithms. This software design lesson/activity set is designed to be part of a Java programming class.
Testing is critical to any design, whether the creation of new software …
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.
Students are introduced to the concepts of digital organisms and digital evolution. …
Students are introduced to the concepts of digital organisms and digital evolution. They learn about the research that digital evolution software makes possible, and compare and contrast it with biological evolution.
A hypothetical scenario is introduced in which the class is asked to …
A hypothetical scenario is introduced in which the class is asked to apply their understanding of the forces that drive natural selection to prepare a proposal along with an environmental consulting company to help clean up an area near their school that is contaminated with trichloroethylene (TCE). Students use the Avida-ED software application to test hypotheses for evolving (engineering) a strain of bacteria that can biodegrade TCE, resulting in a non-hazardous clean-up solution. Conduct this design challenge activity after completion of the introduction to digital evolution activity, Studying Evolution with Digital Organisms.
Just about everything you can do on a computer—checking your email, posting …
Just about everything you can do on a computer—checking your email, posting to Facebook, online banking and shopping—is powered by software. The people who come up with that software, and keep it working efficiently, are behind the scenes of a big portion of our lives. Software engineering is an exciting career,.In this remix, some reflections questions for students have been added.
Just about everything you can do on a computer—checking your email, posting …
Just about everything you can do on a computer—checking your email, posting to Facebook, online banking and shopping—is powered by software. The people who come up with that software, and keep it working efficiently, are behind the scenes of a big portion of our lives. Software engineering is an exciting career,.
This course traces the birth of information technology and briefly describes the …
This course traces the birth of information technology and briefly describes the concepts by linking it to the development of computers beginning with the first generation of computers. It introduces the learner to the basic working processes of a computer. It demonstrates how the memory and the processor coordinate activities based on instructions received from input devices or computer programs stored on the disk drive. This course discusses the different computer components and helps the learner to understand the role and contribution of each component to the effective working of the system. It explains software and hardware types and the uses to which they may be put. It also explains what data is, how it is processed and how the user may submit data to the computer for processing.
Students are introduced to the concepts of evolution by natural selection and …
Students are introduced to the concepts of evolution by natural selection and digital evolution software. They learn about the field of evolutionary computation, which applies the principles of natural selection to solve engineering design problems. They learn the similarities and differences between natural selection and the engineering design process.
Student groups use the Java programming language to implement the algorithms for …
Student groups use the Java programming language to implement the algorithms for optical character recognition (OCR) that they developed in the associated lesson. They use different Java classes (provided) to test and refine their algorithms. The ultimate goal is to produce computer code that recognizes a digit on a scoreboard. Through this activity, students experience a very small part of what software engineers go through to create robust OCR methods. This software design lesson/activity set is designed to be part of a Java programming class.
Working as a team, students discover that the value of pi (3.1415926...) …
Working as a team, students discover that the value of pi (3.1415926...) is a constant and applies to all different sized circles. The team builds a basic robot and programs it to travel in a circular motion. A marker attached to the robot chassis draws a circle on the ground as the robot travels the programmed circular path. Students measure the circle's circumference and diameter and calculate pi by dividing the circumference by the diameter. They discover the pi and circumference relationship; the circumference of a circle divided by the diameter is the value of pi.
In this culminating activity of the unit, students bring together everything they've …
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.
This course presents software engineering concepts and principles in parallel with the …
This course presents software engineering concepts and principles in parallel with the software development life cycle. Topics addressed include the Software Development Life Cycle (SDLC), software modeling using Unified Modeling Language (UML), major phases of SDLC (Software Requirements and Analysis, Software Design, and Software Testing), and project management. Upon successful completion of this course, the student will be able to: demonstrate mastery of software engineering knowledge and skills, and professional issues necessary to practice software engineering; discuss principles of software engineering; describe software development life cycle models; learn principles of software modeling through UML as a modeling language; identify major activities and key deliverables in a software development life cycle during software requirements and analysis, software design, and software testing; apply the object-oriented methodology in software engineering to create UML artifacts for software analysis and requirements, software design, and software testing; apply project management concepts in a software engineering environment to manage project, people, and product; participate as an individual and as part of a team to deliver quality software systems. This free course may be completed online at any time. (Computer Science 302)
Students observe natural selection in action and investigate the underlying mechanism, including …
Students observe natural selection in action and investigate the underlying mechanism, including random mutation and differential fitness based on environmental characteristics. They do this through use of the free AVIDA-ED digital evolution software application.
Students engineer and evolve digital organisms with the challenge to produce organisms …
Students engineer and evolve digital organisms with the challenge to produce organisms with the highest fitness values in a particular environment. They do this through use of the free Avida-ED digital evolution software application. The resulting organisms compete against each other in the same environment and students learn the benefits of applying the principles of natural selection to solve engineering design problems.
Students gain experience using the software/systems (engineering) design process, specifically focusing on …
Students gain experience using the software/systems (engineering) design process, specifically focusing on the testing phase. This problem-based learning activity uses the design process to solve open-ended challenges. In addition to learning about test cases for testing software, students utilize the design process as a vehicle to work through a problem and arrive at a solution.
JUnit is a testing method that is included with NetBeans (Java) installs …
JUnit is a testing method that is included with NetBeans (Java) installs or can be downloaded from the web and included in the Java build. In this activity, students design tests for a provided Java class before the class methods are constructed using a process called test-driven development. To create a design, the software/system design process, which is a specific case of the engineering design process, is followed. After students create a design, it is implemented and tested and if necessary, the design undergoes editing to make sure it functions by testing the Java class correctly. To conclude the activity, students write the methods in the Java class using their tests to debug the program.
Students learn basic concepts of robotic logic and programming by working with …
Students learn basic concepts of robotic logic and programming by working with Boe-Bot robotsâa simple programmable robotic platform designed to illustrate basic robotic concepts. Under the guidance of the instructor and a provided lab manual, student groups build simple circuits and write codes to make their robots perform a variety of tasks, including obstacle and light detection, line following and other motion routines. Eight sub-activities focus on different sensors, including physical sensors, phototransistors and infrared headlights. Students test their newly acquired skills in the final activity, in which they program their robots to navigate an obstacle course.
No restrictions on your remixing, redistributing, or making derivative works. Give credit to the author, as required.
Your remixing, redistributing, or making derivatives works comes with some restrictions, including how it is shared.
Your redistributing comes with some restrictions. Do not remix or make derivative works.
Most restrictive license type. Prohibits most uses, sharing, and any changes.
Copyrighted materials, available under Fair Use and the TEACH Act for US-based educators, or other custom arrangements. Go to the resource provider to see their individual restrictions.