├── LICENSE ├── .gitignore ├── README.md ├── example_courses ├── Meteorology_Course.md ├── NMF_Course.md ├── LearningAnalytics_Course.md ├── Javascript_Course.md └── DesignThinking_Course_V1.md ├── EduWeaver_AutoCourse.ipynb └── EduWeaver_AutoCourse_LCEL.ipynb /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 aneesha 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | 3 | # Byte-compiled / optimized / DLL files 4 | __pycache__/ 5 | *.py[cod] 6 | *$py.class 7 | 8 | # C extensions 9 | *.so 10 | 11 | # Distribution / packaging 12 | .Python 13 | build/ 14 | develop-eggs/ 15 | dist/ 16 | downloads/ 17 | eggs/ 18 | .eggs/ 19 | lib/ 20 | lib64/ 21 | parts/ 22 | sdist/ 23 | var/ 24 | wheels/ 25 | pip-wheel-metadata/ 26 | share/python-wheels/ 27 | *.egg-info/ 28 | .installed.cfg 29 | *.egg 30 | MANIFEST 31 | 32 | # PyInstaller 33 | # Usually these files are written by a python script from a template 34 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 35 | *.manifest 36 | *.spec 37 | 38 | # Installer logs 39 | pip-log.txt 40 | pip-delete-this-directory.txt 41 | 42 | # Unit test / coverage reports 43 | htmlcov/ 44 | .tox/ 45 | .nox/ 46 | .coverage 47 | .coverage.* 48 | .cache 49 | nosetests.xml 50 | coverage.xml 51 | *.cover 52 | *.py,cover 53 | .hypothesis/ 54 | .pytest_cache/ 55 | 56 | # Translations 57 | *.mo 58 | *.pot 59 | 60 | # Django stuff: 61 | *.log 62 | local_settings.py 63 | db.sqlite3 64 | db.sqlite3-journal 65 | 66 | # Flask stuff: 67 | instance/ 68 | .webassets-cache 69 | 70 | # Scrapy stuff: 71 | .scrapy 72 | 73 | # Sphinx documentation 74 | docs/_build/ 75 | 76 | # PyBuilder 77 | target/ 78 | 79 | # Jupyter Notebook 80 | .ipynb_checkpoints 81 | 82 | # IPython 83 | profile_default/ 84 | ipython_config.py 85 | 86 | # pyenv 87 | .python-version 88 | 89 | # pipenv 90 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 91 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 92 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 93 | # install all needed dependencies. 94 | #Pipfile.lock 95 | 96 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 97 | __pypackages__/ 98 | 99 | # Celery stuff 100 | celerybeat-schedule 101 | celerybeat.pid 102 | 103 | # SageMath parsed files 104 | *.sage.py 105 | 106 | # Environments 107 | .env 108 | .venv 109 | env/ 110 | venv/ 111 | ENV/ 112 | env.bak/ 113 | venv.bak/ 114 | 115 | # Spyder project settings 116 | .spyderproject 117 | .spyproject 118 | 119 | # Rope project settings 120 | .ropeproject 121 | 122 | # mkdocs documentation 123 | /site 124 | 125 | # mypy 126 | .mypy_cache/ 127 | .dmypy.json 128 | dmypy.json 129 | 130 | # Pyre type checker 131 | .pyre/ 132 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # eduweaver 2 | 3 | EduWeaver uses ChatGPT API to make a LiaScript course (more formats coming soon). EduWeaver can be considered an AutoCourse maker. EduWeaver uses LangChain. 4 | 5 | EduWeaver runs as a Google Colab Notebook. Click here [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/aneesha/eduweaver/blob/main/EduWeaver_AutoCourse_LCEL.ipynb) to open in Google Colab. You will need an OpenAI API key. Additional instructions are included in the Google Colab Notebook. 6 | 7 | - Specify a topic and a few other parameters (including sub sections that must be included) 8 | - Creates a list of sub sections (or chapters) 9 | - Generates the content 10 | - Generates appropriate activities eg MCQ's 11 | - Adds simplified sections to explain complex things better 12 | - Includes external links or readings 13 | - Includes code snippets/examples for programming related topics 14 | - Includes maths in Latex where appropriate 15 | - Saves as a Markdown file for valid [LiaScript](https://liascript.github.io/) 16 | 17 | **Coming soon:** 18 | 19 | - Additional interactive learning activities 20 | - Other export formats eg HTML and SCORM 21 | 22 | **Example Courses:** 23 | 24 | - [Pros and Cons of Using ChatGPT](https://liascript.github.io/course/?https://raw.githubusercontent.com/aneesha/eduweaver/main/example_courses/ProConsChatGPT_Course.md) 25 | - [Meteorology Course](https://liascript.github.io/course/?https://raw.githubusercontent.com/aneesha/eduweaver/main/example_courses/Meteorology_Course.md) 26 | - [Learning Analytics](https://liascript.github.io/course/?https://raw.githubusercontent.com/aneesha/eduweaver/main/example_courses/LearningAnalytics_Course.md) 27 | - [Javascript Course](https://liascript.github.io/course/?https://raw.githubusercontent.com/aneesha/eduweaver/main/example_courses/Javascript_Course.md) 28 | - [Non Negative Matrix Factorization Course](https://liascript.github.io/course/?https://raw.githubusercontent.com/aneesha/eduweaver/main/example_courses/NMF_Course.md) 29 | - [Writing and Evaluating Lesson Plans](https://liascript.github.io/course/?https://raw.githubusercontent.com/aneesha/eduweaver/main/example_courses/LessonPlans_Course.md) 30 | - [Introduction to Maths for Deep Learning with NumPy](https://liascript.github.io/course/?https://raw.githubusercontent.com/aneesha/eduweaver/main/example_courses/MathsDL_Course.md) 31 | - [AI Literacy](https://liascript.github.io/course/?https://raw.githubusercontent.com/aneesha/eduweaver/main/example_courses/AILiteracy_Course.md) 32 | - [Design Thinking](https://liascript.github.io/course/?https://raw.githubusercontent.com/aneesha/eduweaver/main/example_courses/DesignThinking_Course_V1.md) (made using GPT 4 API) 33 | -------------------------------------------------------------------------------- /example_courses/Meteorology_Course.md: -------------------------------------------------------------------------------- 1 | 2 | 15 | # Meteorology 16 | 17 | > This course is completely generated by AutoCourse (using ChatGPT) in Liascript Markdown format. 18 | > Please verify the content before publishing the course. 19 | 20 | 21 | In this course the following content will be covered: 22 | 23 | - Introduction to Meteorology 24 | This section provides an overview of meteorology and its importance in our daily lives. 25 | 26 | - Atmosphere and Weather 27 | This section covers the basics of the atmosphere and the factors that affect weather patterns. 28 | 29 | - Weather Instruments and Tools 30 | This section introduces various instruments and tools used by meteorologists to measure and forecast weather conditions. 31 | 32 | - Climate and Climate Change 33 | This section explores the difference between weather and climate, and the causes and effects of climate change. 34 | 35 | - Extreme Weather Events 36 | This section covers different types of extreme weather events such as hurricanes, tornadoes, and floods, and how they form and affect the environment. 37 | 38 | ## Introduction to Meteorology 39 | This section provides an overview of meteorology and its importance in our daily lives. 40 | Meteorology is the scientific study of the Earth's atmosphere, including its composition, structure, and properties, along with the processes that affect it. Meteorology plays an essential role in our daily lives, as it helps us understand and predict weather patterns, severe storms, and climate change. Understanding meteorology can help us prepare for and respond to natural disasters, make informed decisions about agriculture and energy production, and even plan our daily activities. 41 | 42 | **The Importance of Meteorology** 43 | 44 | Meteorology is a critical field that helps us understand the weather and atmosphere around us. It enables us to plan for and respond to natural disasters like hurricanes, tornadoes, and wildfires. Meteorologists use advanced tools and techniques to analyze and study the atmosphere, including weather satellites, radars, and computer models. 45 | 46 | Meteorology is also crucial for agriculture, as it helps farmers make informed decisions about planting, harvesting, and irrigation. Understanding weather patterns and seasonal changes can help farmers improve crop yields, reduce water usage, and prevent crop damage. 47 | 48 | Another area where meteorology is essential is energy production. Meteorologists can predict the amount of wind and solar energy that can be generated in a specific area, helping us plan for and optimize renewable energy production. Meteorology also plays a vital role in aviation, as pilots rely on weather forecasts to plan their flights and ensure passenger safety. 49 | 50 | In summary, meteorology is a crucial field that helps us understand and predict weather patterns, natural disasters, and climate change. It plays an essential role in our daily lives, from helping us plan our daily activities to enabling us to respond to natural disasters and make informed decisions about agriculture and energy production. 51 | 52 | ### Quiz Questions 53 | 54 | What is meteorology? 55 | 56 | [( )] The study of meteors 57 | [(X)] The study of weather and the atmosphere 58 | [( )] The study of rocks 59 | 60 | What are some of the important uses of meteorology? 61 | 62 | [[X]] Predicting the weather for agricultural purposes 63 | [[X]] Predicting the weather for outdoor events 64 | [[ ]] Predicting the weather for space travel 65 | [[ ]] Predicting the weather for underwater exploration 66 | 67 | What is the difference between weather and climate? 68 | 69 | [(X)] Weather is the day-to-day condition of the atmosphere while climate is the long-term pattern of weather in a particular area 70 | [( )] Weather and climate are the same thing 71 | [( )] Climate is the day-to-day condition of the atmosphere while weather is the long-term pattern of weather in a particular area 72 | 73 | What is the purpose of the National Weather Service? 74 | 75 | [(X)] To provide weather information to the public 76 | [( )] To control the weather 77 | [( )] To study the weather for scientific purposes 78 | 79 | How do meteorologists gather data about the weather? 80 | 81 | [[X]] Using satellites 82 | [[X]] Using weather balloons 83 | [[X]] Using radar 84 | [[ ]] Using magic 85 | 86 | 87 | ## Atmosphere and Weather 88 | This section covers the basics of the atmosphere and the factors that affect weather patterns. 89 | The atmosphere is the layer of gases that surrounds the Earth. It is made up of nitrogen, oxygen, argon, carbon dioxide, and other trace gases. The atmosphere is important for life on Earth as it protects us from harmful radiation from the sun and provides us with the air we breathe. In this section, we will explore the basics of the atmosphere and the factors that affect weather patterns. 90 | 91 | **Composition of the Atmosphere** 92 | 93 | The Earth's atmosphere is composed of several layers. The layer closest to the Earth is called the troposphere. The troposphere is where weather occurs and is the layer where we live and breathe. It is the thinnest layer, extending up to about 10 kilometers from the Earth's surface. 94 | 95 | Above the troposphere is the stratosphere, followed by the mesosphere, and finally, the thermosphere. Each layer has a different composition of gases and plays a unique role in the Earth's atmosphere. 96 | 97 | **Factors Affecting Weather Patterns** 98 | 99 | Weather patterns are influenced by a variety of factors, including temperature, humidity, air pressure, winds, and precipitation. Temperature and humidity determine the amount of moisture in the air, which can lead to the formation of clouds and precipitation. 100 | 101 | Air pressure is the force exerted by the weight of air molecules in a specific area. Differences in air pressure cause winds to form. Wind can be caused by differences in temperature, pressure systems, and the rotation of the Earth. 102 | 103 | **Conclusion** 104 | 105 | The atmosphere plays a vital role in the Earth's ecosystem, and understanding its composition and the factors that affect weather patterns is essential. In the next section, we will explore the different types of clouds and how they are formed. 106 | 107 | ### Quiz Questions 108 | 109 | What is the atmosphere? 110 | 111 | [(X)] A layer of gases surrounding the Earth 112 | [( )] A type of weather condition 113 | [( )] A type of cloud formation 114 | [( )] A type of wind pattern 115 | 116 | What is the most abundant gas in the Earth's atmosphere? 117 | 118 | [( )] Oxygen 119 | [(X)] Nitrogen 120 | [( )] Carbon dioxide 121 | [( )] Argon 122 | 123 | What is the ozone layer? 124 | 125 | [(X)] A layer of gas that protects the Earth from the sun's harmful ultraviolet radiation 126 | [( )] A layer of gas that causes acid rain 127 | [( )] A layer of gas that causes global warming 128 | [( )] A layer of gas that causes smog 129 | 130 | What causes wind? 131 | 132 | [( )] The rotation of the Earth 133 | [(X)] The movement of air from high pressure to low pressure areas 134 | [( )] The gravitational pull of the moon 135 | [( )] The movement of water in the oceans 136 | 137 | What is the Coriolis effect? 138 | 139 | [( )] The tendency of air to rise when it is heated 140 | [( )] The tendency of air to sink when it is cooled 141 | [(X)] The tendency of moving objects to be deflected to the right in the Northern Hemisphere and to the left in the Southern Hemisphere 142 | [( )] The tendency of cold air to sink and warm air to rise 143 | 144 | 145 | ## Weather Instruments and Tools 146 | This section introduces various instruments and tools used by meteorologists to measure and forecast weather conditions. 147 | Weather Instruments and Tools 148 | 149 | Meteorologists use various instruments and tools to measure and forecast weather conditions. These devices help them to gather data that allows them to make accurate weather predictions. In this section, we will explore some of the most commonly used instruments and tools in meteorology. 150 | 151 | **Thermometer** 152 | 153 | A thermometer is an instrument used to measure temperature. It consists of a glass tube filled with a liquid, usually mercury or alcohol, which expands or contracts as the temperature changes. The temperature is read by observing the level to which the liquid rises in the tube. Modern thermometers use digital displays to show the temperature, making them easier to read. 154 | 155 | **Barometer** 156 | 157 | A barometer is an instrument used to measure atmospheric pressure. It consists of a glass tube filled with mercury or aneroid barometer, which uses a sealed metal container to measure pressure changes. As air pressure changes, the mercury or metal container expands or contracts, allowing the atmospheric pressure to be calculated. The measurement is usually given in units of millibars or inches of mercury. 158 | 159 | **Anemometer** 160 | 161 | An anemometer is an instrument used to measure wind speed. It consists of cups that rotate when wind blows on them. The number of rotations per minute is used to calculate the wind speed. 162 | 163 | **Weather Balloon** 164 | 165 | A weather balloon is a balloon equipped with instruments that measure atmospheric pressure, temperature, and humidity. Launched into the atmosphere, it records and transmits data back to meteorologists on the ground, allowing them to make weather forecasts. 166 | 167 | **Weather Satellites** 168 | 169 | Weather satellites orbit the Earth, collecting data on weather patterns and providing images of cloud formations, temperature, and other weather conditions. This data is used to create weather maps and improve weather forecasting. 170 | 171 | In conclusion, meteorologists use a variety of instruments and tools to measure and forecast weather conditions. These devices allow them to gather accurate data and provide valuable information to the public. 172 | 173 | ### Quiz Questions 174 | 175 | What is the name of the instrument used to measure wind speed? 176 | 177 | [(X)] Anemometer 178 | [( )] Barometer 179 | [( )] Hygrometer 180 | [( )] Thermometer 181 | 182 | What is the name of the instrument used to measure atmospheric pressure? 183 | 184 | [( )] Anemometer 185 | [(X)] Barometer 186 | [( )] Hygrometer 187 | [( )] Thermometer 188 | 189 | What is the name of the instrument used to measure humidity? 190 | 191 | [( )] Anemometer 192 | [( )] Barometer 193 | [(X)] Hygrometer 194 | [( )] Thermometer 195 | 196 | What is the name of the instrument used to measure precipitation? 197 | 198 | [( )] Anemometer 199 | [( )] Barometer 200 | [( )] Hygrometer 201 | [(X)] Rain gauge 202 | 203 | What is the name of the instrument used to measure temperature? 204 | 205 | [( )] Anemometer 206 | [( )] Barometer 207 | [( )] Hygrometer 208 | [(X)] Thermometer 209 | 210 | 211 | ## Climate and Climate Change 212 | This section explores the difference between weather and climate, and the causes and effects of climate change. 213 | Climate and Climate Change 214 | 215 | Climate is the long-term average of weather patterns observed in a particular area over a period of time, typically at least 30 years. Climate is different from weather, which is the short-term atmospheric conditions of a particular place and time. Climate is determined by various factors, including latitude, altitude, distance from the sea, prevailing winds, and topography. 216 | 217 | Climate change refers to the long-term alteration in Earth's global climate patterns, primarily as a result of human activities. The rise in global temperatures is the most significant and widespread impact of climate change. This is caused by an increase in greenhouse gases, such as carbon dioxide, which trap more heat in the Earth's atmosphere. Other impacts of climate change include an increase in extreme weather events, sea level rise, and changes in precipitation patterns. 218 | 219 | **Causes of Climate Change** 220 | The primary cause of climate change is the increase in greenhouse gases, primarily carbon dioxide, in the atmosphere. Human activities, such as burning fossil fuels, deforestation, and industrial processes, are responsible for the majority of greenhouse gas emissions. Natural causes, such as volcanic eruptions and changes in solar radiation, can also contribute to climate change, but the effects are relatively small compared to human activities. 221 | 222 | **Effects of Climate Change** 223 | Climate change has a significant impact on our planet and its inhabitants. The rise in global temperatures has led to an increase in extreme weather events, such as hurricanes, floods, and droughts. Sea levels are rising as a result of the melting of polar ice caps, which is threatening low-lying areas and island nations. Changes in precipitation patterns are leading to more frequent and severe wildfires, which can have devastating effects on communities and ecosystems. 224 | 225 | **Mitigating Climate Change** 226 | There are various ways to reduce greenhouse gas emissions and mitigate the effects of climate change. These include increasing energy efficiency, transitioning to renewable energy sources, planting trees and other vegetation to absorb carbon dioxide, and reducing waste and consumption. Individuals, businesses, and governments all have a role to play in mitigating climate change. 227 | 228 | In conclusion, understanding the difference between weather and climate is crucial to understanding climate change. Human activities are primarily responsible for the increase in greenhouse gas emissions, which is causing global temperatures to rise and having significant impacts on our planet. Reducing greenhouse gas emissions and mitigating the effects of climate change is essential to ensure a sustainable future for our planet and its inhabitants. 229 | 230 | ### Quiz Questions 231 | 232 | What is the main difference between weather and climate? 233 | 234 | [(X)] Weather refers to short-term atmospheric conditions while climate describes long-term weather patterns 235 | [( )] Weather refers to long-term weather patterns while climate describes short-term atmospheric conditions 236 | 237 | What is the primary cause of climate change? 238 | 239 | [( )] Volcanic eruptions 240 | [(X)] Human activity such as burning fossil fuels 241 | 242 | What is the name of the natural process that keeps the Earth's temperature stable? 243 | 244 | [( )] Greenhouse effect 245 | [( )] Carbon cycle 246 | [(X)] Radiative equilibrium 247 | 248 | Which of the following is a potential effect of climate change? 249 | 250 | [[ ]] Increased biodiversity 251 | [[X]] Rising sea levels 252 | [[ ]] Decreased frequency of natural disasters 253 | [[ ]] Improved air quality 254 | 255 | What is the name of the international treaty established to address climate change? 256 | 257 | [(X)] Paris Agreement 258 | [( )] Kyoto Protocol 259 | [( )] Montreal Protocol 260 | 261 | 262 | ## Extreme Weather Events 263 | This section covers different types of extreme weather events such as hurricanes, tornadoes, and floods, and how they form and affect the environment. 264 | Extreme Weather Events 265 | 266 | Extreme weather events can have a significant impact on the environment and human life. These events can cause widespread destruction, and it's essential to understand how they form and their effects to prepare for them. In this section, we will cover different types of extreme weather events such as hurricanes, tornadoes, and floods. 267 | 268 | **Hurricanes** 269 | 270 | A hurricane is a type of tropical cyclone that forms over warm ocean waters. It is a rotating system of winds that can cause heavy rainfall, high winds, and storm surges. Hurricanes are categorized based on their wind speed, with Category 5 being the most severe. 271 | 272 | Hurricanes form in the Atlantic Ocean, Caribbean Sea, Gulf of Mexico, and the Eastern Pacific Ocean. Warm ocean waters provide the energy that fuels a hurricane's development. As warm, moist air rises, it cools and condenses, forming clouds and releasing heat, which powers the storm. 273 | 274 | **Tornadoes** 275 | 276 | A tornado is a type of violent windstorm that forms over land. It is a rotating column of air that extends from a thunderstorm cloud to the ground. Tornadoes can cause significant damage to buildings, vehicles, and infrastructure. 277 | 278 | Tornadoes form when there is a clash between warm and cold air masses, strong wind shear, and atmospheric instability. The warm air rises, and the cold air descends, creating a rotating column of air. 279 | 280 | **Floods** 281 | 282 | Floods are one of the most common natural disasters that can occur anywhere in the world. They occur when there is an overflow of water from rivers, lakes, or oceans, or heavy rainfall. 283 | 284 | Floods can be caused by natural events such as hurricanes and heavy rainfall, or human activities such as dam failures and urbanization. Floods can cause significant damage to homes, businesses, and infrastructure. 285 | 286 | In conclusion, extreme weather events such as hurricanes, tornadoes, and floods can have a significant impact on the environment and human life. Understanding how they form and their effects is critical in preparing for them. 287 | 288 | ### Quiz Questions 289 | 290 | What is the main difference between a hurricane and a tornado? 291 | 292 | [( )] A hurricane is larger than a tornado 293 | [(X)] A hurricane forms over water while a tornado forms over land 294 | [( )] A tornado is larger than a hurricane 295 | [( )] A tornado forms over water while a hurricane forms over land 296 | 297 | What is the most common cause of flooding? 298 | 299 | [(X)] Heavy rainfalls 300 | [( )] Melting snow 301 | [( )] Natural disasters 302 | [( )] Human activities 303 | 304 | What is the Fujita scale used for? 305 | 306 | [( )] Measuring the intensity of hurricanes 307 | [(X)] Measuring the intensity of tornadoes 308 | [( )] Measuring the intensity of floods 309 | [( )] Measuring the intensity of earthquakes 310 | 311 | What are the conditions necessary for a hurricane to form? 312 | 313 | [[ ]] Cool water 314 | [[X]] Low atmospheric pressure 315 | [[ ]] High atmospheric pressure 316 | [[ ]] Dry air 317 | [[X]] Warm water 318 | 319 | What is the difference between a watch and a warning? 320 | 321 | [( )] A watch means that the extreme weather event is already happening, while a warning means that it is about to happen 322 | [(X)] A watch means that the extreme weather event is possible, while a warning means that it is likely to happen 323 | [( )] A watch means that the extreme weather event is about to happen, while a warning means that it is already happening 324 | [( )] A watch means that the extreme weather event is not going to happen, while a warning means that it is going to happen 325 | 326 | 327 | -------------------------------------------------------------------------------- /example_courses/NMF_Course.md: -------------------------------------------------------------------------------- 1 | 2 | 15 | # Non Negative Matrix Factorization 16 | 17 | > This course is completely generated by AutoCourse (using ChatGPT) in Liascript Markdown format. 18 | > Please verify the content before publishing the course. 19 | 20 | 21 | In this course the following content will be covered: 22 | 23 | - Introduction to Non Negative Matrix Factorization (NMF) 24 | This section will provide an overview of NMF, its applications, and its advantages over other matrix factorization techniques. 25 | 26 | - Mathematical Foundations of NMF 27 | This section will cover the mathematical foundations of NMF, including matrix operations, optimization, and algorithms such as multiplicative updates and alternating least squares. 28 | 29 | - NMF Applications in Data Analysis 30 | This section will explore the practical applications of NMF in data analysis, including image processing, text mining, and audio signal processing. 31 | 32 | - NMF Implementations in Python 33 | This section will provide hands-on experience with implementing NMF in Python, including using popular libraries such as scikit-learn and numpy. 34 | 35 | - Assessment and Conclusion 36 | This final section will assess the student's knowledge of NMF and provide a conclusion to the module, including possible future directions for NMF research and applications. 37 | 38 | ## Introduction to Non Negative Matrix Factorization (NMF) 39 | This section will provide an overview of NMF, its applications, and its advantages over other matrix factorization techniques. 40 | Non Negative Matrix Factorization (NMF) is a popular technique used in data analysis and machine learning. It is a type of matrix factorization where the input matrix is factorized into two matrices, one of which is non-negative. NMF is widely used in image processing, text mining, and bioinformatics, among other fields. 41 | 42 | **Applications of NMF** 43 | 44 | One of the most common applications of NMF is in image processing. It is used to reduce the dimensionality of images, making it easier to analyze them. In text mining, NMF is used to identify the underlying topics in a corpus of text. It has also been used to analyze gene expression data in bioinformatics. 45 | 46 | **Advantages of NMF** 47 | 48 | Compared to other matrix factorization techniques, NMF has several advantages. First, it produces a parts-based representation of the input data, which means that the columns of the factor matrices represent parts of the input data. This makes the results more interpretable. Second, NMF is a convex optimization problem, which means that it can be solved efficiently using standard numerical methods. Finally, NMF is a non-parametric technique, which means that it does not require any assumptions about the underlying distribution of the data. 49 | 50 | In the next section, we will discuss the mathematical formulation of NMF and how it is different from other matrix factorization techniques. 51 | 52 | ### Quiz Questions 53 | 54 | What does NMF stand for? 55 | 56 | [( )] Nonlinear Matrix Factorization 57 | [(X)] Non Negative Matrix Factorization 58 | [( )] Negative Matrix Factorization 59 | 60 | What is the advantage of NMF over other matrix factorization techniques? 61 | 62 | [( )] It can handle negative values in the input matrix 63 | [(X)] It can provide parts-based representations of the data 64 | [( )] It can handle non-linear relationships in the data 65 | 66 | What is the main application of NMF? 67 | 68 | [( )] Image classification 69 | [(X)] Topic modeling 70 | [( )] Text summarization 71 | 72 | What is the objective of NMF? 73 | 74 | [( )] To find the inverse matrix of the input matrix 75 | [(X)] To factorize the input matrix into two non-negative matrices 76 | [( )] To find the eigenvalues of the input matrix 77 | 78 | What is the sparsity constraint in NMF? 79 | 80 | [( )] The requirement that the input matrix has many zero entries 81 | [(X)] The requirement that the factor matrices have many zero entries 82 | [( )] The requirement that the factor matrices have many non-zero entries 83 | 84 | 85 | ## Mathematical Foundations of NMF 86 | This section will cover the mathematical foundations of NMF, including matrix operations, optimization, and algorithms such as multiplicative updates and alternating least squares. 87 | Non-negative matrix factorization (NMF) is a mathematical technique that has been widely used in various fields, including computer vision, audio signal processing, and text mining. It is a powerful tool that can decompose a non-negative matrix into two non-negative matrices, which can be interpreted as the parts and features of the original matrix. This section will cover the mathematical foundations of NMF, including matrix operations, optimization, and algorithms such as multiplicative updates and alternating least squares. 88 | 89 | **Matrix Operations** 90 | Matrix operations are fundamental to NMF. In particular, matrix multiplication, transpose, and element-wise multiplication play important roles in the decomposition process. The matrix multiplication of two matrices A and B can be represented as C = AB, where the number of columns in A must be equal to the number of rows in B. The transpose of a matrix A is denoted as A^T, where the rows of A become the columns of A^T. The element-wise multiplication of two matrices A and B is denoted as A ⊙ B, where each element in A is multiplied by the corresponding element in B. 91 | 92 | **Optimization** 93 | Optimization is the process of finding the values of the unknown variables that minimize or maximize a given objective function. In NMF, the objective function is usually a measure of the distance between the original matrix and the reconstructed matrix, such as the Frobenius norm or the Kullback-Leibler divergence. The optimization problem is to find the non-negative matrices W and H that minimize the objective function. This is a non-convex optimization problem and can be solved by various algorithms. 94 | 95 | **Multiplicative Updates** 96 | Multiplicative updates is an iterative algorithm that updates the matrices W and H in turn using the element-wise division and multiplication. The algorithm starts with a random initialization of W and H, and then iteratively updates them until convergence. The algorithm is guaranteed to converge to a local minimum of the objective function. One disadvantage of the algorithm is that it can get stuck in a poor local minimum. 97 | 98 | **Alternating Least Squares** 99 | Alternating least squares (ALS) is another iterative algorithm that updates the matrices W and H in turn using the least squares method. The algorithm starts with a random initialization of W and H, and then iteratively updates them until convergence. The algorithm is guaranteed to converge to a local minimum of the objective function. One advantage of the algorithm is that it can handle missing values in the original matrix. 100 | 101 | In summary, NMF is a powerful tool that can decompose a non-negative matrix into two non-negative matrices, which can be interpreted as the parts and features of the original matrix. The mathematical foundations of NMF include matrix operations, optimization, and algorithms such as multiplicative updates and alternating least squares. These techniques are essential for understanding and applying NMF in various fields. 102 | 103 | ### Quiz Questions 104 | 105 | What is the mathematical foundation of NMF? 106 | 107 | [(X)] Linear Algebra 108 | [( )] Discrete Mathematics 109 | [( )] Number Theory 110 | [( )] Calculus 111 | 112 | What are some matrix operations used in NMF? 113 | 114 | [[X]] Transpose 115 | [[ ]] Inverse 116 | [[ ]] Determinant 117 | [[X]] Eigenvalues 118 | 119 | What is the objective function used in optimization for NMF? 120 | 121 | [(X)] Frobenius Norm 122 | [( )] L1 Norm 123 | [( )] L2 Norm 124 | [( )] Infinity Norm 125 | 126 | Which algorithm is used to solve NMF optimization problems using a multiplicative update rule? 127 | 128 | [(X)] Lee and Seung Algorithm 129 | [( )] Alternating Least Squares 130 | [( )] Expectation Maximization 131 | [( )] Conjugate Gradient 132 | 133 | What is the main difference between the multiplicative update rule and the alternating least squares algorithm? 134 | 135 | [(X)] The update rule only updates one matrix at a time, while ALS updates both matrices simultaneously 136 | [( )] The update rule uses a gradient descent method, while ALS uses a random sampling method 137 | [( )] The update rule converges faster, while ALS is more accurate 138 | [( )] The update rule is only applicable to dense matrices, while ALS works for both dense and sparse matrices 139 | 140 | 141 | ## NMF Applications in Data Analysis 142 | This section will explore the practical applications of NMF in data analysis, including image processing, text mining, and audio signal processing. 143 | Non-negative matrix factorization (NMF) is a widely used technique in data analysis that has a broad range of applications. NMF is a method for decomposing a non-negative matrix into two non-negative matrices, which can be used to identify patterns in data. This section will explore the practical applications of NMF in data analysis, including image processing, text mining, and audio signal processing. 144 | 145 | **Image Processing** 146 | 147 | NMF has been extensively used in image processing, where it can be used to identify the underlying components of an image. For example, consider an image of a car. NMF can be used to decompose the image into its constituent parts, such as the wheels, body, and windows. This is done by representing the image as a non-negative matrix and then factoring it into two non-negative matrices. The first matrix contains the basis vectors, which represent the different parts of the image, and the second matrix contains the coefficients, which represent the weights of each basis vector in the image. 148 | 149 | **Text Mining** 150 | 151 | NMF has also been used in text mining to identify the underlying topics in a corpus of documents. For example, NMF can be used to identify the topics in a collection of news articles. This is done by representing the articles as a non-negative matrix, where each row corresponds to an article and each column corresponds to a word. The matrix is then factored into two non-negative matrices, where the first matrix contains the basis vectors, which represent the different topics, and the second matrix contains the coefficients, which represent the weights of each topic in each article. 152 | 153 | **Audio Signal Processing** 154 | 155 | NMF has also been used in audio signal processing to separate the different sources in a mixture of sounds. For example, consider a recording of a band playing. NMF can be used to separate the different instruments in the recording, such as the guitar, drums, and vocals. This is done by representing the recording as a non-negative matrix and then factoring it into two non-negative matrices. The first matrix contains the basis vectors, which represent the different sources, and the second matrix contains the coefficients, which represent the weights of each source in the recording. 156 | 157 | NMF has proven to be a versatile and powerful tool in data analysis, with applications in a wide range of fields. Whether it is identifying patterns in images, topics in text, or sources in audio recordings, NMF provides a powerful framework for understanding complex data. 158 | 159 | ### Quiz Questions 160 | 161 | What are some practical applications of NMF in data analysis? 162 | 163 | [[X]] Image processing 164 | [[X]] Text mining 165 | [[X]] Speech recognition 166 | [[ ]] Weather forecasting 167 | 168 | What is the purpose of using NMF in image processing? 169 | 170 | [(X)] To reduce the dimensionality of the image data 171 | [( )] To increase the resolution of the image 172 | [( )] To add noise to the image 173 | [( )] To remove colors from the image 174 | 175 | What is the difference between NMF and PCA? 176 | 177 | [( )] NMF is a linear method while PCA is a non-linear method 178 | [(X)] NMF always produces non-negative factors while PCA can produce negative factors 179 | [( )] NMF is only used for text mining while PCA is only used for image processing 180 | [( )] There is no difference between NMF and PCA 181 | 182 | What is the goal of using NMF in text mining? 183 | 184 | [(X)] To identify the most important words in a document 185 | [( )] To remove all the stop words from a document 186 | [( )] To translate the text into another language 187 | [( )] To convert the text into a different format 188 | 189 | What is the purpose of using NMF in audio signal processing? 190 | 191 | [(X)] To separate a mixed audio signal into its individual sources 192 | [( )] To add echo and reverb to the audio signal 193 | [( )] To increase the volume of the audio signal 194 | [( )] To convert the audio signal into a different format 195 | 196 | 197 | ## NMF Implementations in Python 198 | This section will provide hands-on experience with implementing NMF in Python, including using popular libraries such as scikit-learn and numpy. 199 | Non-negative matrix factorization (NMF) is a powerful technique that has found several applications in image processing, audio signal processing, and text mining. In simple terms, NMF is a process of decomposing a non-negative matrix into two non-negative matrices such that their product approximates the original matrix. In this section, we will provide a hands-on experience with implementing NMF in Python, including using popular libraries such as scikit-learn and numpy. 200 | 201 | **Goals** 202 | 203 | - Understand the concept of NMF and its applications. 204 | - Learn how to implement NMF in Python using scikit-learn and numpy. 205 | - Understand the importance of non-negativity constraints in NMF. 206 | - Learn how to evaluate the quality of NMF results. 207 | 208 | **Implementing NMF in Python** 209 | 210 | Before we dive into implementing NMF, let's first understand the basic principles of NMF. Given a non-negative matrix $V$ of size $m \times n$, NMF aims to find two non-negative matrices $W$ and $H$ of size $m \times r$ and $r \times n$, respectively, such that their product $WH$ approximates $V$. Here, $r$ is the rank of the factorization, which is a user-defined hyperparameter. 211 | 212 | In Python, we can use the scikit-learn library to perform NMF on a given matrix $V$. The following code snippet shows how to perform NMF using scikit-learn: 213 | 214 | ``` python 215 | from sklearn.decomposition import NMF 216 | 217 | # Create an instance of NMF with 10 components 218 | nmf = NMF(n_components=10) 219 | 220 | # Fit NMF on the data matrix V 221 | W = nmf.fit_transform(V) 222 | H = nmf.components_ 223 | ``` 224 | 225 | Here, we create an instance of NMF with 10 components, fit it on the data matrix $V$, and obtain the factor matrices $W$ and $H$. 226 | 227 | Alternatively, we can also use the numpy library to perform NMF. The following code snippet shows how to perform NMF using numpy: 228 | 229 | ``` python 230 | import numpy as np 231 | 232 | # Define the number of iterations and components 233 | n_iter = 200 234 | n_components = 10 235 | 236 | # Initialize the factor matrices randomly 237 | W = np.random.rand(m, n_components) 238 | H = np.random.rand(n_components, n) 239 | 240 | # Perform NMF using multiplicative updates 241 | for i in range(n_iter): 242 | # Update H 243 | H = H * np.dot(W.T, V) / np.dot(np.dot(W.T, W), H) 244 | 245 | # Update W 246 | W = W * np.dot(V, H.T) / np.dot(np.dot(W, H), H.T) 247 | ``` 248 | 249 | Here, we initialize the factor matrices randomly, and perform NMF using multiplicative updates. This approach is computationally expensive for large matrices, but can be useful for small matrices. 250 | 251 | **Non-negativity Constraints** 252 | 253 | One important aspect of NMF is the non-negativity constraint, which ensures that the factor matrices $W$ and $H$ are non-negative. This constraint is essential for meaningful interpretation of the factorization, as negative values do not have any physical or semantic interpretation. 254 | 255 | **Evaluating NMF Results** 256 | 257 | Finally, it is essential to evaluate the quality of the NMF results. One common measure is the reconstruction error, which is the difference between the original matrix $V$ and its approximation $WH$. Another measure is the sparseness of the factor matrices $W$ and $H$, which measures the degree to which the entries of the matrices are close to zero. 258 | 259 | **Conclusion** 260 | 261 | In this section, we provided a hands-on experience with implementing NMF in Python, including using popular libraries such as scikit-learn and numpy. We also discussed the importance of non-negativity constraints in NMF and how to evaluate the quality of NMF results. NMF is a powerful technique that has several applications in various fields, and we encourage the readers to explore its potential further. 262 | 263 | ### Quiz Questions 264 | 265 | In which library can we find the NMF implementation in Python? 266 | 267 | [( )] scipy 268 | [( )] numpy 269 | [(X)] scikit-learn 270 | [( )] pandas 271 | 272 | What does the fit_transform() method of the NMF class do? 273 | 274 | [( )] Fits the model and returns the reduced dimensionality matrix 275 | [( )] Fits the model and returns the original input matrix 276 | [(X)] Fits the model and returns the factorized matrices 277 | [( )] Fits the model and returns the singular values 278 | 279 | What is the objective of the NMF algorithm? 280 | 281 | [(X)] To factorize a matrix into two lower rank matrices 282 | [( )] To compute the eigenvalues of a matrix 283 | [( )] To compute the singular values of a matrix 284 | [( )] To solve a system of linear equations 285 | 286 | What is the difference between NMF and PCA? 287 | 288 | [[X]] NMF can handle negative values, while PCA cannot 289 | [[ ]] PCA can handle missing values, while NMF cannot 290 | [[X]] NMF always produces non-negative factors, while PCA does not guarantee non-negativity 291 | [[X]] PCA is a linear dimensionality reduction technique, while NMF is a non-linear technique 292 | [[ ]] NMF always produces orthogonal factors, while PCA does not guarantee orthogonality 293 | 294 | What is the role of the random_state parameter in the NMF class? 295 | 296 | [( )] It specifies the number of iterations for the algorithm 297 | [( )] It specifies the number of factors to be computed 298 | [(X)] It sets the seed for the random number generator used by the algorithm 299 | [( )] It sets the learning rate of the algorithm 300 | 301 | 302 | ## Assessment and Conclusion 303 | This final section will assess the student's knowledge of NMF and provide a conclusion to the module, including possible future directions for NMF research and applications. 304 | Assessment and Conclusion 305 | 306 | Congratulations! You have completed the Non-Negative Matrix Factorization module. In this final section, we will assess your knowledge of NMF and provide a conclusion to the module, including possible future directions for NMF research and applications. 307 | 308 | **Assessment** 309 | 310 | Let's test your understanding of NMF with the following quiz: 311 | 312 | 1. What is Non-Negative Matrix Factorization? 313 | a. A method for reducing the dimensions of a matrix 314 | b. A method for multiplying two matrices 315 | c. A method for finding the eigenvalues of a matrix 316 | d. A method for decomposing a matrix into two non-negative matrices 317 | 318 | 2. What is the objective of NMF? 319 | a. To minimize the sum of squared errors 320 | b. To maximize the correlation between the two resulting matrices 321 | c. To maximize the sparsity of the resulting matrices 322 | d. To minimize the difference between the original matrix and the product of the two resulting matrices 323 | 324 | 3. What are some applications of NMF? 325 | a. Image processing 326 | b. Text mining 327 | c. Speech separation 328 | d. All of the above 329 | 330 | **Conclusion** 331 | 332 | In conclusion, NMF is a powerful technique that has found wide applications in various domains. Its ability to decompose a matrix into two non-negative matrices has made it particularly useful in image processing, text mining, and speech separation. As you have learned, NMF is an essential tool in modern data analysis and machine learning. 333 | 334 | Should you wish to learn more about NMF, there are many directions for further research. For instance, you could explore the application of NMF in the context of deep learning or investigate extensions of NMF, such as sparse NMF or non-negative tensor factorization. We hope you have enjoyed this module and wish you all the best in your future studies. 335 | 336 | Thank you for taking the Non-Negative Matrix Factorization module! 337 | 338 | ### Quiz Questions 339 | 340 | What are some possible future directions for research on NMF? 341 | 342 | [[X]] Developing new NMF algorithms 343 | [[X]] Applying NMF in medical diagnosis 344 | [[ ]] NMF for predicting stock prices 345 | [[ ]] NMF for predicting the weather 346 | 347 | What is the benefit of using NMF in data analysis? 348 | 349 | [(X)] It can help identify underlying patterns in data 350 | [( )] It can automatically clean and preprocess data 351 | 352 | What is a common application of NMF in image processing? 353 | 354 | [(X)] Image segmentation 355 | [( )] Enhancing image resolution 356 | 357 | What is the sparsity constraint in NMF? 358 | 359 | [( )] The requirement that each element in the factorization be non-negative 360 | [( )] The requirement that the factor matrices have a low rank 361 | [(X)] The requirement that the factor matrices have a large number of zero entries 362 | 363 | What is the difference between NMF and PCA? 364 | 365 | [[ ]] NMF is a type of unsupervised learning, while PCA is a type of supervised learning 366 | [[X]] NMF can handle non-negative data, while PCA can handle any type of data 367 | [[ ]] NMF is faster than PCA for large datasets 368 | [[ ]] NMF and PCA are essentially the same algorithm 369 | 370 | 371 | -------------------------------------------------------------------------------- /example_courses/LearningAnalytics_Course.md: -------------------------------------------------------------------------------- 1 | 2 | 15 | # Learning Analytics 16 | 17 | > This course is completely generated by AutoCourse (using ChatGPT) in Liascript Markdown format. 18 | > Please verify the content before publishing the course. 19 | 20 | 21 | In this course the following content will be covered: 22 | 23 | - Introduction to Learning Analytics 24 | This section will provide an overview of what Learning Analytics is and its relevance in education. We will define key terms and concepts, and explore the benefits of using Learning Analytics in the context of higher education. 25 | 26 | - Collecting and Analyzing Data 27 | In this section, we will discuss the various types of data that can be collected in a learning environment, such as student demographics, assessment results, and engagement levels. We will also examine the tools and methods used to collect and analyze this data. 28 | 29 | - Interpreting Learning Analytics Results 30 | This section will cover how to interpret the data collected through Learning Analytics. We will explore how to identify patterns and trends, and how to use this information to inform decision-making in educational settings. 31 | 32 | - Challenges and Limitations of Learning Analytics 33 | While Learning Analytics provides valuable insights, it is not without its limitations and challenges. In this section, we will discuss some of the ethical, technical, and practical challenges involved in implementing Learning Analytics in education, and how to mitigate them. 34 | 35 | - Applying Learning Analytics in Higher Education 36 | This final section will focus on practical applications of Learning Analytics in higher education. We will discuss case studies and examples of how Learning Analytics has been successfully implemented in different educational settings, and explore potential future developments in the field. 37 | 38 | ## Introduction to Learning Analytics 39 | This section will provide an overview of what Learning Analytics is and its relevance in education. We will define key terms and concepts, and explore the benefits of using Learning Analytics in the context of higher education. 40 | Learning Analytics is a field that is gaining popularity in the realm of education, as it provides insights into the learning process, allowing educators to make data-informed decisions. Learning Analytics is the measurement, collection, analysis, and reporting of data about learners and their contexts, for purposes of understanding and optimizing learning and the environments in which it occurs. In this section, we will explore the relevance of Learning Analytics in education, define key terms and concepts, and examine the benefits of using Learning Analytics in the context of higher education. 41 | 42 | **What is Learning Analytics?** 43 | 44 | Learning Analytics can be defined as the process of collecting, analyzing, and reporting data about learners and their contexts to understand and optimize learning and the environments in which it occurs. It involves the use of data mining, machine learning, and predictive analytics to identify patterns and trends in learner behavior and performance. Learning Analytics can provide insights into how learners engage with content, what areas they struggle with, and what interventions may be necessary to support their learning. 45 | 46 | **Key Terms and Concepts** 47 | 48 | Learning Analytics is a complex field that involves several key terms and concepts. Some of the key terms and concepts that you should be familiar with include: 49 | 50 | - **Data Mining**: The process of extracting useful information from large datasets. 51 | - **Machine Learning**: A subset of artificial intelligence that involves the development of algorithms that can learn from and make predictions on data. 52 | - **Predictive Analytics**: The use of historical data to make predictions about future events. 53 | - **Dashboard**: A visual display of key metrics and data points. 54 | - **Intervention**: A targeted effort to improve learning outcomes. 55 | 56 | **Benefits of Learning Analytics in Higher Education** 57 | 58 | Learning Analytics has several benefits for higher education institutions, including: 59 | 60 | - **Improved Student Outcomes**: Learning Analytics can identify areas where students are struggling and provide targeted interventions to support their learning. 61 | - **Personalized Learning**: Learning Analytics can provide insights into individual learner needs and preferences, allowing for personalized learning experiences. 62 | - **Improved Retention Rates**: Learning Analytics can identify at-risk students and provide interventions to support their success, improving retention rates. 63 | - **Better Resource Allocation**: Learning Analytics can identify areas where resources are being underutilized or overutilized, allowing for better resource allocation. 64 | 65 | In conclusion, Learning Analytics is a rapidly growing field that provides insights into the learning process, allowing educators to make data-informed decisions. By collecting, analyzing, and reporting data about learners and their contexts, Learning Analytics can improve student outcomes, support personalized learning, improve retention rates, and optimize resource allocation. 66 | 67 | ### Quiz Questions 68 | 69 | What is Learning Analytics? 70 | 71 | [( )] A method to analyze the learning ability of students 72 | [(X)] A process of measuring, collecting, analyzing, and reporting data about learners and their contexts 73 | [( )] A tool to identify students who are not performing well 74 | [( )] A process of measuring the teacher's effectiveness 75 | 76 | What are the benefits of using Learning Analytics in higher education? 77 | 78 | [[X]] Helps in identifying at-risk students 79 | [[X]] Improves student engagement 80 | [[ ]] Increases the workload of teachers 81 | [[ ]] Decreases the retention rate 82 | 83 | What are some key terms and concepts related to Learning Analytics? 84 | 85 | [( )] Big Data 86 | [( )] Data Mining 87 | [( )] Predictive Modeling 88 | [(X)] All of the above 89 | 90 | How can Learning Analytics be used to improve student outcomes? 91 | 92 | [(X)] By identifying students who need additional support 93 | [( )] By punishing students who are not performing well 94 | [( )] By decreasing the number of students in a course 95 | [( )] By reducing the number of assessments 96 | 97 | What is the relevance of Learning Analytics in education? 98 | 99 | [( )] It helps teachers to identify students who are cheating 100 | [(X)] It helps teachers to personalize learning experiences for students 101 | [( )] It helps teachers to decrease the number of courses offered 102 | [( )] It helps teachers to increase their workload 103 | 104 | 105 | ## Collecting and Analyzing Data 106 | In this section, we will discuss the various types of data that can be collected in a learning environment, such as student demographics, assessment results, and engagement levels. We will also examine the tools and methods used to collect and analyze this data. 107 | In today's digital age, data collection and analysis have become an integral part of the learning process. Learning Analytics is a field that focuses on collecting and analyzing data to improve student learning outcomes. In this section, we will discuss the various types of data that can be collected in a learning environment, such as student demographics, assessment results, and engagement levels. We will also examine the tools and methods used to collect and analyze this data. 108 | 109 | **Types of Data** 110 | 111 | In a learning environment, there are various types of data that can be collected. Student demographics, such as age, gender, and ethnicity, can provide insights into the diversity of the student population. Assessment results, such as grades, test scores, and completion rates, can help identify areas where students are struggling and where additional support is needed. Engagement levels, such as participation in discussions and activities, can indicate how well students are engaging with the course content. 112 | 113 | Other types of data that can be collected include learning styles, preferences, and feedback. Learning styles refer to the different ways in which students prefer to learn, such as visual, auditory, or kinesthetic. Preferences refer to the types of activities or resources that students prefer, such as videos or interactive simulations. Feedback refers to the comments and suggestions that students provide about the course content and delivery. 114 | 115 | **Tools and Methods** 116 | 117 | There are many tools and methods available for collecting and analyzing data in a learning environment. Learning Management Systems (LMS) are commonly used to track student progress and engagement. LMS can provide data on student activity, such as time spent on each activity, completion rates, and assessment results. 118 | 119 | Other tools that can be used include surveys, focus groups, and interviews. Surveys can provide insights into student attitudes, perceptions, and preferences. Focus groups and interviews can provide more detailed information about student experiences and opinions. 120 | 121 | Data analysis methods include descriptive statistics, such as mean, median, and mode, which can provide an overview of the data. Inferential statistics, such as t-tests and ANOVA, can be used to test hypotheses and identify significant differences between groups. 122 | 123 | **Conclusion** 124 | 125 | Collecting and analyzing data in a learning environment can provide valuable insights into student learning outcomes. By understanding the different types of data that can be collected and the tools and methods available for analysis, educators can make informed decisions about how to improve student learning experiences. 126 | 127 | ### Quiz Questions 128 | 129 | Which of the following is an example of data that can be collected in a learning environment? 130 | 131 | [( )] Number of pets owned by students 132 | [(X)] Assessment results 133 | 134 | What are the tools and methods used to collect and analyze data in a learning environment? 135 | 136 | [[ ]] Focus groups and interviews 137 | [[X]] Surveys and questionnaires 138 | [[X]] Social media analysis 139 | 140 | Why is it important to collect data in a learning environment? 141 | 142 | [( )] To show off to parents and stakeholders 143 | [(X)] To improve student learning outcomes 144 | 145 | What is the difference between qualitative and quantitative data? 146 | 147 | [( )] Qualitative data cannot be measured 148 | [(X)] Quantitative data is numerical and measurable 149 | 150 | What is a potential bias that may occur when collecting data in a learning environment? 151 | 152 | [[X]] Confirmation bias 153 | [[ ]] Random sampling bias 154 | [[X]] Observer bias 155 | 156 | 157 | ## Interpreting Learning Analytics Results 158 | This section will cover how to interpret the data collected through Learning Analytics. We will explore how to identify patterns and trends, and how to use this information to inform decision-making in educational settings. 159 | Interpreting Learning Analytics Results 160 | 161 | Learning Analytics is a powerful tool that enables educators to gather data about student learning behaviors, academic engagement, and performance. The data collected from Learning Analytics can provide insights into how students learn and help educators make informed decisions about teaching and learning strategies. In this section, we will explore how to interpret the data collected through Learning Analytics. We will identify patterns and trends, and use this information to inform decision-making in educational settings. 162 | 163 | **Understanding Learning Analytics** 164 | 165 | Learning Analytics is the measurement, collection, analysis, and reporting of data about learners and their contexts. It involves the use of data mining and machine learning algorithms to identify patterns and trends in learner data. Learning Analytics can be used to track student performance, monitor student engagement, and identify areas where students may need additional support. 166 | 167 | **Interpreting Learning Analytics Results** 168 | 169 | Interpreting Learning Analytics results can be challenging, but it is essential in making informed decisions about teaching and learning strategies. One of the first steps in interpreting Learning Analytics results is to identify the data points that are most relevant to your educational goals. For example, if your goal is to improve student engagement, you may want to focus on data points that measure student activity levels within the course. 170 | 171 | Once you have identified the most relevant data points, you can start to look for patterns and trends. For example, you may notice that students who engage in more discussion forums tend to perform better on assessments. Alternatively, you may notice that students who spend more time on reading assignments tend to perform better on quizzes. These patterns and trends can help you identify areas where students may need additional support and inform your teaching and learning strategies. 172 | 173 | **Using Learning Analytics to Inform Decision-Making** 174 | 175 | Learning Analytics can be a powerful tool for informing decision-making in educational settings. For example, if you notice that students are struggling with a particular concept, you can adjust your teaching strategies to provide additional support in that area. Alternatively, if you notice that students are not engaging with a particular aspect of the course, you can adjust your course design to make it more engaging. 176 | 177 | In conclusion, Learning Analytics provides educators with a powerful tool for understanding student learning behaviors, academic engagement, and performance. By interpreting Learning Analytics results, educators can identify patterns and trends, and use this information to inform decision-making in educational settings. 178 | 179 | ### Quiz Questions 180 | 181 | What is the purpose of interpreting data collected through Learning Analytics? 182 | 183 | [(X)] To identify patterns and trends 184 | [( )] To collect data 185 | [( )] To analyze data 186 | 187 | What is the benefit of using Learning Analytics to inform decision-making in educational settings? 188 | 189 | [(X)] It helps to identify areas where students need additional support 190 | [( )] It provides a way to track student attendance 191 | [( )] It helps to reduce costs 192 | 193 | What are some of the challenges associated with interpreting Learning Analytics data? 194 | 195 | [[X]] Data can be incomplete or inaccurate 196 | [[ ]] Data is always easy to understand 197 | [[ ]] Data is not relevant to decision-making 198 | [[ ]] Data is never accurate 199 | 200 | What is the difference between a pattern and a trend in Learning Analytics? 201 | 202 | [(X)] A pattern is a consistent observation, while a trend is a change over time 203 | [( )] A pattern is a change over time, while a trend is a consistent observation 204 | [( )] There is no difference between a pattern and a trend 205 | 206 | What is the main benefit of using Learning Analytics to inform decision-making over traditional methods? 207 | 208 | [(X)] It allows for data-driven decision-making 209 | [( )] It is faster than traditional methods 210 | [( )] It is more accurate than traditional methods 211 | 212 | 213 | ## Challenges and Limitations of Learning Analytics 214 | While Learning Analytics provides valuable insights, it is not without its limitations and challenges. In this section, we will discuss some of the ethical, technical, and practical challenges involved in implementing Learning Analytics in education, and how to mitigate them. 215 | Learning Analytics is a powerful tool that provides insights into the learning process of students. By gathering data from various sources, such as online activity, test scores, and academic records, Learning Analytics can help educators identify patterns, trends, and areas of improvement in their teaching methods. However, like any technology, Learning Analytics is not without its challenges and limitations. 216 | 217 | **Ethical Challenges** 218 | One of the ethical challenges of Learning Analytics is the potential violation of student privacy. The collection and analysis of student data can raise concerns about data security, confidentiality, and the potential misuse of personal information. To mitigate these concerns, it is important to ensure that data is collected and used in a transparent and responsible manner. Educators should also inform students about the data collection process and obtain their consent before collecting any personal information. 219 | 220 | **Technical Challenges** 221 | Another challenge of Learning Analytics is the technical complexity and the need for specialized skills to implement and interpret the data. The vast amount of data collected can also pose a challenge for educators who may not have the necessary tools or resources to analyze the data effectively. To overcome these challenges, educators can seek support from Learning Analytics specialists, collaborate with other educators, and attend training sessions to improve their technical skills. 222 | 223 | **Practical Challenges** 224 | Finally, practical challenges can also arise when implementing Learning Analytics in education. For example, educators may face resistance from students who are concerned about their privacy or who may not understand the purpose and benefits of Learning Analytics. Additionally, some educators may struggle to integrate Learning Analytics into their teaching methods or to interpret the data effectively. To overcome these challenges, educators can communicate the benefits of Learning Analytics to students and seek guidance from other educators who have successfully implemented Learning Analytics in their teaching methods. 225 | 226 | In conclusion, while Learning Analytics provides valuable insights, it is not without its challenges and limitations. By addressing ethical, technical, and practical challenges, educators can maximize the benefits of Learning Analytics and improve the learning outcomes of their students. 227 | 228 | ### Quiz Questions 229 | 230 | What are some of the challenges involved in implementing Learning Analytics in education? 231 | 232 | [[X]] Privacy concerns 233 | [[ ]] Lack of data 234 | [[ ]] Ease of implementation 235 | [[ ]] Availability of resources 236 | 237 | What is one of the ethical challenges involved in using Learning Analytics? 238 | 239 | [(X)] Privacy concerns 240 | [( )] Ease of implementation 241 | 242 | What is one of the technical challenges involved in using Learning Analytics? 243 | 244 | [(X)] Lack of interoperability between different systems 245 | [( )] Availability of resources 246 | 247 | What is one of the practical challenges involved in using Learning Analytics? 248 | 249 | [(X)] Difficulty in interpreting the data 250 | [( )] Lack of data 251 | 252 | What are some ways to mitigate the challenges involved in implementing Learning Analytics? 253 | 254 | [[X]] Ensuring transparency and consent 255 | [[ ]] Using only one type of data 256 | [[ ]] Ignoring the challenges 257 | [[X]] Limiting access to the data 258 | 259 | 260 | ## Applying Learning Analytics in Higher Education 261 | This final section will focus on practical applications of Learning Analytics in higher education. We will discuss case studies and examples of how Learning Analytics has been successfully implemented in different educational settings, and explore potential future developments in the field. 262 | Learning Analytics is a rapidly growing field that is transforming the way we approach education. With the help of data and analytics, educators are able to gain insights into their students' learning behaviors and provide personalized learning experiences that are tailored to their needs. In this final section, we will explore practical applications of Learning Analytics in higher education. 263 | 264 | **Case Studies and Examples** 265 | 266 | Learning Analytics has been successfully implemented in various educational settings across the globe. One such example is the Open University in the UK, where Learning Analytics is used to monitor student engagement and provide personalized support to students who are at risk of dropping out. The University of Michigan also uses Learning Analytics to provide students with personalized feedback on their academic performance and to identify students who need additional support. 267 | 268 | Another example is the use of Learning Analytics in Massive Open Online Courses (MOOCs). MOOCs are online courses that are designed to be accessible to anyone with an internet connection. Learning Analytics is used to analyze student data and provide personalized feedback to learners. This data can also be used to improve course design and to identify areas where students are struggling. 269 | 270 | **Future Developments** 271 | 272 | The potential for Learning Analytics is vast and there are many exciting developments on the horizon. One potential area of growth is the use of Artificial Intelligence (AI) to analyze student data. AI can be used to identify patterns in student behavior and to provide personalized recommendations for learning resources. This technology has the potential to revolutionize the way we approach education and to provide students with personalized learning experiences that are tailored to their needs. 273 | 274 | Another area of growth is the use of Learning Analytics to improve student retention rates. By analyzing student data, educators can identify students who are at risk of dropping out and provide them with personalized support to help them succeed. This approach has been shown to be highly effective in improving student retention rates, and is likely to become even more widespread in the future. 275 | 276 | In conclusion, Learning Analytics has the potential to transform the way we approach education. By providing educators with insights into their students' learning behaviors, we can provide personalized learning experiences that are tailored to their needs. With exciting developments on the horizon, the future of Learning Analytics looks bright. 277 | 278 | ### Quiz Questions 279 | 280 | Which of the following is NOT a practical application of Learning Analytics in higher education? 281 | 282 | [( )] Predicting student dropouts 283 | [( )] Assessing student engagement 284 | [(X)] Monitoring student social media accounts 285 | [( )] Personalizing learning experiences 286 | 287 | What is the purpose of case studies and examples of Learning Analytics in higher education? 288 | 289 | [(X)] To demonstrate the potential benefits of Learning Analytics 290 | [( )] To show how Learning Analytics can replace traditional teaching methods 291 | [( )] To criticize the limitations of Learning Analytics 292 | [( )] To discuss the ethical concerns of Learning Analytics 293 | 294 | What is an example of successful implementation of Learning Analytics in higher education? 295 | 296 | [( )] Tracking student movements with GPS 297 | [(X)] Providing personalized feedback to students 298 | [( )] Banning smartphones in the classroom 299 | [( )] Using AI to grade student assignments 300 | 301 | What is the potential benefit of using Learning Analytics in higher education? 302 | 303 | [( )] Reducing the need for human teachers 304 | [(X)] Increasing student engagement and motivation 305 | [( )] Replacing traditional assessment methods 306 | [( )] Eliminating the need for student feedback 307 | 308 | What is a potential future development in the field of Learning Analytics? 309 | 310 | [(X)] The use of virtual reality in teaching and assessment 311 | [( )] The elimination of human teachers 312 | [( )] The complete automation of the education system 313 | [( )] The use of telepathy to communicate with students 314 | 315 | 316 | -------------------------------------------------------------------------------- /EduWeaver_AutoCourse.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "provenance": [] 7 | }, 8 | "kernelspec": { 9 | "name": "python3", 10 | "display_name": "Python 3" 11 | }, 12 | "language_info": { 13 | "name": "python" 14 | } 15 | }, 16 | "cells": [ 17 | { 18 | "cell_type": "markdown", 19 | "source": [ 20 | "#EduWeaver\n", 21 | "\n", 22 | "EduWeaver uses ChatGPT API to make a LiaScript course. EduWeaver can be considered an AutoCourse maker. \n", 23 | "\n", 24 | "- Specify a topic and a few other parameters (i.e. sub-sections to nclude and exclude)\n", 25 | "- Creates a list of sub sections (or chapters)\n", 26 | "- Generates the content\n", 27 | "- Generates appropriate activities eg MCQ's\n", 28 | "- Adds simplified sections to explain complex things better\n", 29 | "- Includes external links or readings\n", 30 | "- Includes code snippets/examples for programming related topics\n", 31 | "- Saves as a Markdown file for valid [LiaScript](https://liascript.github.io/)\n", 32 | "\n", 33 | "Coming soon:\n", 34 | "\n", 35 | "- Additional interactive learning activities\n", 36 | "- Other export formats eg HTML and SCORM" 37 | ], 38 | "metadata": { 39 | "id": "4w68gwJB3gtN" 40 | } 41 | }, 42 | { 43 | "cell_type": "markdown", 44 | "source": [ 45 | "## Setup\n", 46 | "\n", 47 | "Enter a few details about the course and your OpenAI API key. You can create a new API key by going to your OpenAI Account [https://platform.openai.com/account/api-keys]." 48 | ], 49 | "metadata": { 50 | "id": "Htgj6fEB3Ji_" 51 | } 52 | }, 53 | { 54 | "cell_type": "code", 55 | "source": [ 56 | "#@title Course Generation Settings\n", 57 | "topic = 'Writing and Evaluating Lesson Plans' #@param {type: \"string\"}\n", 58 | "teaching_method = 'Explain concepts is a simple manner and include relevant learning theories and innovative learning activities where possible.' #@param {type: \"string\"}\n", 59 | "no_sub_topics = 6 #@param {type: \"slider\", min: 2, max: 10}\n", 60 | "sub_topics_to_include = \"Lesson plans for remote classes using using Zoom or Microsoft Teams\" #@param {type: \"string\"}\n", 61 | "sub_topics_to_not_include = \"Learning styles\" #@param {type: \"string\"}\n", 62 | "audience = 'First Year University Students Enrolled to become a Teacher' #@param {type: \"string\"}\n", 63 | "no_quiz_questions_in_sub_topic = 5 #@param {type: \"slider\", min: 1, max: 6}\n", 64 | "narrator_language = \"Australian Female\" #@param [\"UK English Female\", \"US English Female\", \"Australian Female\", \"UK English Male\", \"US English Male\", \"Australian Male\"]\n", 65 | "output_filename = 'LessonPlans_Course.md' #@param {type: \"string\"}\n", 66 | "\n", 67 | "#@markdown ---\n" 68 | ], 69 | "metadata": { 70 | "id": "V15z77aE-d6F" 71 | }, 72 | "execution_count": 16, 73 | "outputs": [] 74 | }, 75 | { 76 | "cell_type": "code", 77 | "execution_count": null, 78 | "metadata": { 79 | "id": "H8cYE0Rs3Vhi" 80 | }, 81 | "outputs": [], 82 | "source": [ 83 | "# Set your environment variables\n", 84 | "# Don't include quotes around the key\n", 85 | "%env OPENAI_API_KEY=" 86 | ] 87 | }, 88 | { 89 | "cell_type": "code", 90 | "source": [ 91 | "# Install required libraries\n", 92 | "!pip -q install openai langchain" 93 | ], 94 | "metadata": { 95 | "id": "8XBQbatU5YIX" 96 | }, 97 | "execution_count": 18, 98 | "outputs": [] 99 | }, 100 | { 101 | "cell_type": "code", 102 | "source": [ 103 | "from langchain.chat_models import ChatOpenAI\n", 104 | "from langchain import PromptTemplate, LLMChain\n", 105 | "from langchain.prompts.chat import (\n", 106 | " ChatPromptTemplate,\n", 107 | " SystemMessagePromptTemplate,\n", 108 | " AIMessagePromptTemplate,\n", 109 | " HumanMessagePromptTemplate,\n", 110 | ")\n", 111 | "from langchain.schema import (\n", 112 | " AIMessage,\n", 113 | " HumanMessage,\n", 114 | " SystemMessage\n", 115 | ")\n", 116 | "\n", 117 | "# Get Sections in Topic\n", 118 | "\n", 119 | "# First extract the additional specified sub-sections\n", 120 | "list_of_additional_sub_sections = sub_topics_to_include.split(';') \n", 121 | "sub_topics_to_include_text = \" \"\n", 122 | "if len(list_of_additional_sub_sections) > 0:\n", 123 | " sub_topics_to_include_text = \"In the sub sections also please include these: \" + sub_topics_to_include\n", 124 | "\n", 125 | "list_of_sub_topics_not_to_incude = sub_topics_to_not_include.split(';') \n", 126 | "sub_topics_to_not_include_text = \" \"\n", 127 | "if len(list_of_sub_topics_not_to_incude) > 0:\n", 128 | " sub_topics_to_not_include_text = \"Please don't include content on this (this is very important): \" + sub_topics_to_not_include\n", 129 | "\n", 130 | "\n", 131 | "if teaching_method!=\"\":\n", 132 | " teaching_method_to_include_text = \"You this teaching and writing style: \" + teaching_method\n", 133 | "\n", 134 | "chat = ChatOpenAI(temperature=0.7)\n", 135 | "\n", 136 | "act_as_ld_template='''\n", 137 | " Please act as a subject matter expert on the topic of {topic} that also has learning designer skills and knowledge of markdown and json. \n", 138 | " You know how to design online modules. You can break up the content into chunks, explain concepts so that can easily be understood, write quizzes to test knowledge and write creative learning activities for students. \n", 139 | " '''\n", 140 | "system_message_prompt = SystemMessagePromptTemplate.from_template(act_as_ld_template)\n", 141 | "ask_for_sections_template='''\n", 142 | " Could you please come up with {no_sub_topics} sections for an online module on the topic of {topic} for {audience} in json format?\n", 143 | " {sub_topics_to_include_text}\n", 144 | " {sub_topics_to_not_include_text}\n", 145 | " Here is an example of the format you need to return:\n", 146 | " [{{\"section_name\": \"The name of the section 1\", \"section_description\": \"The descriptions of the section 1\"}}]\n", 147 | " Please don't return any intro text before or after the json.\n", 148 | " '''\n", 149 | "human_message_prompt = HumanMessagePromptTemplate.from_template(ask_for_sections_template)\n", 150 | "\n", 151 | "\n", 152 | "chat_prompt = ChatPromptTemplate.from_messages([system_message_prompt, human_message_prompt])\n", 153 | "\n", 154 | "print(\"- Getting the sub sections to include.\")\n", 155 | "\n", 156 | "# get a chat completion from the formatted messages\n", 157 | "chat_response = chat(chat_prompt.format_prompt(topic=topic, no_sub_topics=no_sub_topics, audience=audience, sub_topics_to_include_text=sub_topics_to_include_text, sub_topics_to_not_include_text=sub_topics_to_not_include_text).to_messages())\n", 158 | "\n", 159 | "# convert sections json to dict\n", 160 | "\n", 161 | "import json\n", 162 | "\n", 163 | "sections_dict = json.loads(chat_response.content)\n", 164 | "\n", 165 | "# Get content for each sub section\n", 166 | "\n", 167 | "print(\"- Getting content for each sub section.\")\n", 168 | "\n", 169 | "course_content = {}\n", 170 | "\n", 171 | "for section in sections_dict:\n", 172 | " section_name = section['section_name']\n", 173 | " section_description = section['section_description']\n", 174 | " ask_for_section_details_template='''\n", 175 | " Could you please write the content for {section_name} that will be understood by {audience}?\n", 176 | " The description of the topic that you must write is {section_description}.\n", 177 | " {teaching_method_to_include_text}\n", 178 | " {sub_topics_to_not_include_text}\n", 179 | " Please don't output the section name but do include an introductory paragraph.\n", 180 | " If the section is on programming or coding please include code examples within backticks and specify the language and filename eg:\n", 181 | " ``` js +Filename.js\n", 182 | " let hi = \"Hello World\"\n", 183 | " ```\n", 184 | " If the section needs math just place the Latex for the math equations between $ signs eg $ \\frac{{a}}{{\\sum{{b+i}}}} $ \n", 185 | " You can include sub sections. Please place the sub section headings within ** and ** followed by \\n (eg **Goals** \\n ) as this is the markdown for sub sections at heading level 3 and a newline is required after. \n", 186 | " For difficult concept please include a section also \"**Additional Links**\" with links to Wikipedia and please make sure the proper markdown is used for links. Only include links to wikipedia that exist, don't include links to other sites (this is very important).\n", 187 | " '''\n", 188 | " human_message_prompt = HumanMessagePromptTemplate.from_template(ask_for_section_details_template )\n", 189 | "\n", 190 | " chat_prompt = ChatPromptTemplate.from_messages([system_message_prompt, human_message_prompt])\n", 191 | "\n", 192 | "\n", 193 | " # get a chat completion from the formatted messages\n", 194 | " chat_response = chat(chat_prompt.format_prompt(topic=topic, section_name=section_name, section_description=section_description, audience=audience, teaching_method_to_include_text=teaching_method_to_include_text, sub_topics_to_not_include_text=sub_topics_to_not_include_text).to_messages())\n", 195 | "\n", 196 | " course_content[section_name] = chat_response.content\n", 197 | "\n", 198 | "# Get creative projects each sub section\n", 199 | "\n", 200 | "print(\"- Getting creative projects for each sub section.\")\n", 201 | "\n", 202 | "project_content = {}\n", 203 | "\n", 204 | "for section in sections_dict:\n", 205 | " section_name = section['section_name']\n", 206 | " section_description = section['section_description']\n", 207 | " ask_for_section_project_template='''\n", 208 | " Could you please come up with a few creative project ideas for {section_name} that will be appropriate for {audience}? \n", 209 | " The description of the topic that you must write creative project ideas for is {section_description}.\n", 210 | " Be creative and the project should assist students in learning higher level skills that can't be obtained by doing multiple choice tests. \n", 211 | " The high level project ideas should develop levels from Blooms taxonomy including Knowledge, Comprehension, Application, Analysis, Synthesis, and Evaluation. \n", 212 | " Please don't output the section name or the type of level used from Blooms taxonomy but do include an introductory paragraph.\n", 213 | " If the project for the section is on programming or coding please include code examples for the project within backticks and specify the language and filename eg:\n", 214 | " ``` js +Filename.js\n", 215 | " let hi = \"Hello World\"\n", 216 | " ```\n", 217 | " If the project for the section needs maths please place the Latex for the math equations between $ signs eg $ \\frac{{a}}{{\\sum{{b+i}}}} $\n", 218 | " '''\n", 219 | " human_message_prompt = HumanMessagePromptTemplate.from_template(ask_for_section_project_template )\n", 220 | "\n", 221 | " chat_prompt = ChatPromptTemplate.from_messages([system_message_prompt, human_message_prompt])\n", 222 | "\n", 223 | "\n", 224 | " # get a chat completion from the formatted messages\n", 225 | " chat_response = chat(chat_prompt.format_prompt(topic=topic, section_name=section_name, section_description=section_description, audience=audience).to_messages())\n", 226 | "\n", 227 | " project_content[section_name] = chat_response.content\n", 228 | "\n", 229 | "\n", 230 | "# Get Quiz Questions for each sub section\n", 231 | "\n", 232 | "print(\"- Creating MCQ's for each section.\")\n", 233 | "\n", 234 | "course_assessment = {}\n", 235 | "\n", 236 | "for section in sections_dict:\n", 237 | " section_name = section['section_name']\n", 238 | " section_description = section['section_description']\n", 239 | " ask_for_section_assessment_template='''\n", 240 | " Could you please write quiz questions for the content in {section_name} that will be appropriate for {audience}?\n", 241 | " The description of the topic that you must write quiz questions for is {section_description}.\n", 242 | " Please write {no_quiz_questions_in_sub_topic} questions in the json format that is given in the example below. \n", 243 | " [\n", 244 | " {{\"question\": \"Question 1\",\n", 245 | " \"question_type\": \"single_option\",\n", 246 | " \"options\": [{{\"option_name\": \"Option 1\", \"correct\": \"false\"}}, {{\"option_name\": \"Option 2\", \"correct\": \"true\"}}]\n", 247 | " }},\n", 248 | " {{\"question\": \"Question 2\",\n", 249 | " \"question_type\": \"multiple_options\",\n", 250 | " \"options\": [{{\"option_name\": \"Option 1\", \"correct\": \"false\"}}, {{\"option_name\": \"Option 2\", \"correct\": \"true\"}}, {{\"option_name\": \"Option 3\", \"correct\": \"true\"}} the]\n", 251 | " }}\n", 252 | " ]\n", 253 | " The questions must be returned in the same json format as what is given above. The incorrect answers should not be obvious or easy.\n", 254 | " '''\n", 255 | " human_message_prompt = HumanMessagePromptTemplate.from_template(ask_for_section_assessment_template )\n", 256 | "\n", 257 | " chat_prompt = ChatPromptTemplate.from_messages([system_message_prompt, human_message_prompt])\n", 258 | "\n", 259 | "\n", 260 | " # get a chat completion from the formatted messages\n", 261 | " chat_response = chat(chat_prompt.format_prompt(topic=topic, no_quiz_questions_in_sub_topic=no_quiz_questions_in_sub_topic, section_name=section_name, section_description=section_description, audience=audience).to_messages())\n", 262 | "\n", 263 | " course_assessment[section_name] = chat_response.content\n", 264 | "\n" 265 | ], 266 | "metadata": { 267 | "colab": { 268 | "base_uri": "https://localhost:8080/" 269 | }, 270 | "id": "dVasesod6J9Y", 271 | "outputId": "de3bde42-924d-40eb-ef57-9ccf53ee3141" 272 | }, 273 | "execution_count": 20, 274 | "outputs": [ 275 | { 276 | "output_type": "stream", 277 | "name": "stdout", 278 | "text": [ 279 | "- Getting the sub sections to include.\n", 280 | "- Getting content for each sub section.\n", 281 | "- Getting creative projects for each sub section.\n", 282 | "- Creating MCQ's for each section.\n" 283 | ] 284 | } 285 | ] 286 | }, 287 | { 288 | "cell_type": "code", 289 | "source": [ 290 | "# Convert Quiz Json to LiaScript Markdown\n", 291 | "print(\"- Convert MCQ Json to Liascript Markdown.\")\n", 292 | "\n", 293 | "course_assessment_markdown = {}\n", 294 | "\n", 295 | "for section in sections_dict:\n", 296 | " section_name = section['section_name']\n", 297 | " quiz_json = course_assessment[section_name]\n", 298 | " try:\n", 299 | " quiz_dict = json.loads(quiz_json)\n", 300 | " \n", 301 | " question_markdown = \"\"\n", 302 | " for question in quiz_dict:\n", 303 | " question_title = question['question']\n", 304 | " question_type = question['question_type']\n", 305 | " if (question_type == \"single_option\"):\n", 306 | " open_brace = '('\n", 307 | " close_brace = ')'\n", 308 | " else:\n", 309 | " open_brace = '['\n", 310 | " close_brace = ']' \n", 311 | " question_markdown += question_title + '\\n\\n'\n", 312 | " options = question['options']\n", 313 | " for option in options:\n", 314 | " option_name = option[\"option_name\"]\n", 315 | " if option['correct'] == \"true\":\n", 316 | " marker = 'X'\n", 317 | " else:\n", 318 | " marker = ' '\n", 319 | " question_markdown += f''' [{open_brace}{marker}{close_brace}] {option_name} \\n'''\n", 320 | " question_markdown += '\\n'\n", 321 | " course_assessment_markdown[section_name] = question_markdown\n", 322 | " except json.decoder.JSONDecodeError:\n", 323 | "\t print(\"String could not be converted to JSON\")\n", 324 | "\n", 325 | "# Collate course and force download of the Markdown file\n", 326 | "\n", 327 | "print(\"- Collating course content.\")\n", 328 | "\n", 329 | "course_markdown = \"\"\n", 330 | "\n", 331 | "course_markdown += f\"\"\"\n", 332 | "\n", 345 | "\"\"\"\n", 346 | "\n", 347 | "course_markdown += f'''# {topic}\\n'''\n", 348 | "\n", 349 | "# Make the TOC\n", 350 | "toc = \"In this course the following content will be covered: \\n\\n\"\n", 351 | "for section in sections_dict:\n", 352 | " section_name = section['section_name']\n", 353 | " section_description = section['section_description'] \n", 354 | " toc += f'''- {section_name} \\n {section_description} \\n\\n'''\n", 355 | "\n", 356 | "course_markdown += \"\"\"\n", 357 | "> This course is completely generated by AutoCourse (using ChatGPT) in Liascript Markdown format.\n", 358 | "> Please verify the content before publishing the course. \\n \\n\n", 359 | "\"\"\"\n", 360 | "\n", 361 | "course_markdown += toc\n", 362 | "\n", 363 | "for section in sections_dict:\n", 364 | " section_name = section['section_name']\n", 365 | " section_description = section['section_description']\n", 366 | " section_content = course_content[section_name]\n", 367 | " if section_name in course_assessment_markdown:\n", 368 | " section_assessment = course_assessment_markdown[section_name]\n", 369 | " else:\n", 370 | " section_assessment = None\n", 371 | " project_ideas = project_content[section_name]\n", 372 | " course_markdown += f'''## {section_name}\\n'''\n", 373 | " course_markdown += f'''{section_description}\\n'''\n", 374 | " course_markdown += f'''{section_content}\\n\\n'''\n", 375 | " if section_assessment!=None:\n", 376 | " course_markdown += f'''### Quiz Questions \\n\\n'''\n", 377 | " course_markdown += f'''{section_assessment}\\n'''\n", 378 | " course_markdown += f'''### Project Ideas \\n\\n'''\n", 379 | " course_markdown += f'''{project_ideas}\\n\\n'''\n", 380 | " \n", 381 | "with open(output_filename, 'w') as writefile:\n", 382 | " writefile.write(course_markdown)\n", 383 | "\n", 384 | "print(\"- Forcing file download.\")\n", 385 | "from google.colab import files\n", 386 | "files.download(output_filename)\n", 387 | "\n", 388 | "print(\"- If the file does not download, click on the Folder on the left and you will be able to download manually.\")" 389 | ], 390 | "metadata": { 391 | "colab": { 392 | "base_uri": "https://localhost:8080/", 393 | "height": 89 394 | }, 395 | "id": "wWlms8i9dii4", 396 | "outputId": "4f732773-c688-4e43-f225-2a5232a90c32" 397 | }, 398 | "execution_count": 21, 399 | "outputs": [ 400 | { 401 | "output_type": "stream", 402 | "name": "stdout", 403 | "text": [ 404 | "- Convert MCQ Json to Liascript Markdown.\n", 405 | "- Collating course content.\n", 406 | "- Forcing file download.\n" 407 | ] 408 | }, 409 | { 410 | "output_type": "display_data", 411 | "data": { 412 | "text/plain": [ 413 | "" 414 | ], 415 | "application/javascript": [ 416 | "\n", 417 | " async function download(id, filename, size) {\n", 418 | " if (!google.colab.kernel.accessAllowed) {\n", 419 | " return;\n", 420 | " }\n", 421 | " const div = document.createElement('div');\n", 422 | " const label = document.createElement('label');\n", 423 | " label.textContent = `Downloading \"${filename}\": `;\n", 424 | " div.appendChild(label);\n", 425 | " const progress = document.createElement('progress');\n", 426 | " progress.max = size;\n", 427 | " div.appendChild(progress);\n", 428 | " document.body.appendChild(div);\n", 429 | "\n", 430 | " const buffers = [];\n", 431 | " let downloaded = 0;\n", 432 | "\n", 433 | " const channel = await google.colab.kernel.comms.open(id);\n", 434 | " // Send a message to notify the kernel that we're ready.\n", 435 | " channel.send({})\n", 436 | "\n", 437 | " for await (const message of channel.messages) {\n", 438 | " // Send a message to notify the kernel that we're ready.\n", 439 | " channel.send({})\n", 440 | " if (message.buffers) {\n", 441 | " for (const buffer of message.buffers) {\n", 442 | " buffers.push(buffer);\n", 443 | " downloaded += buffer.byteLength;\n", 444 | " progress.value = downloaded;\n", 445 | " }\n", 446 | " }\n", 447 | " }\n", 448 | " const blob = new Blob(buffers, {type: 'application/binary'});\n", 449 | " const a = document.createElement('a');\n", 450 | " a.href = window.URL.createObjectURL(blob);\n", 451 | " a.download = filename;\n", 452 | " div.appendChild(a);\n", 453 | " a.click();\n", 454 | " div.remove();\n", 455 | " }\n", 456 | " " 457 | ] 458 | }, 459 | "metadata": {} 460 | }, 461 | { 462 | "output_type": "display_data", 463 | "data": { 464 | "text/plain": [ 465 | "" 466 | ], 467 | "application/javascript": [ 468 | "download(\"download_25b0c82f-a963-4d16-bc61-5b5b79291b94\", \"LessonPlans_Course.md\", 46349)" 469 | ] 470 | }, 471 | "metadata": {} 472 | }, 473 | { 474 | "output_type": "stream", 475 | "name": "stdout", 476 | "text": [ 477 | "- If the file does not download, click on the Folder on the left and you will be able to download manually.\n" 478 | ] 479 | } 480 | ] 481 | }, 482 | { 483 | "cell_type": "markdown", 484 | "source": [ 485 | "## What to do next?\n", 486 | "\n", 487 | "- Place the markdown (.md) file on github and then view using the [Liascript Viewer](https://liascript.github.io/)\n", 488 | "OR\n", 489 | "- Copy the markdown content into the [Liascript LiveEditor](https://liascript.github.io/LiveEditor/) for editing and previewing." 490 | ], 491 | "metadata": { 492 | "id": "6sPrnraI2Nei" 493 | } 494 | } 495 | ] 496 | } -------------------------------------------------------------------------------- /example_courses/Javascript_Course.md: -------------------------------------------------------------------------------- 1 | 2 | 15 | # Javascript 16 | 17 | > This course is completely generated by AutoCourse (using ChatGPT) in Liascript Markdown format. 18 | > Please verify the content before publishing the course. 19 | 20 | 21 | In this course the following content will be covered: 22 | 23 | - Introduction to Javascript 24 | This section will provide an overview of what Javascript is, its uses, and its importance in web development. 25 | 26 | - Variables and Data Types 27 | This section will explain the different types of variables in Javascript, their uses, and how to declare them. It will also cover the various data types in the language. 28 | 29 | - Functions and Control Flow 30 | This section will cover how to define and call functions in Javascript, as well as how to use control structures like loops and conditionals. 31 | 32 | - DOM Manipulation 33 | This section will cover how to manipulate HTML and CSS using Javascript, including selecting and modifying elements, handling events, and creating animations. 34 | 35 | - Debugging and Troubleshooting 36 | This section will cover common errors in Javascript and how to debug them using tools like the browser console. It will also provide tips for troubleshooting issues in larger codebases. 37 | 38 | ## Introduction to Javascript 39 | This section will provide an overview of what Javascript is, its uses, and its importance in web development. 40 | Javascript is a programming language that is widely used in web development. It was created in 1995 by Brendan Eich while he was working at Netscape Communications Corporation. Javascript is a lightweight language that can be embedded into HTML pages. It is used to create interactive elements on websites, such as pop-ups, animations, and forms. 41 | 42 | **What is Javascript?** 43 | 44 | Javascript is a high-level, interpreted programming language. It is often referred to as the "language of the web" because it is used to create dynamic and interactive websites. Javascript code can be added to an HTML page using the script tag. When a user loads the page, the code is executed by their web browser. 45 | 46 | **Uses of Javascript** 47 | 48 | Javascript is used to create a wide range of web-based applications, including games, social media platforms, and e-commerce websites. It can be used to add interactivity to static HTML pages, validate form data, and create responsive designs that adapt to different screen sizes. 49 | 50 | **Importance of Javascript in Web Development** 51 | 52 | Javascript is an essential tool for web developers. It allows them to create user-friendly websites that are interactive and engaging. Without Javascript, web pages would be static and unresponsive. Javascript is also used in conjunction with other web development technologies, such as CSS and HTML, to create complex applications and websites. 53 | 54 | In conclusion, Javascript is a powerful and widely used programming language in web development. It enables developers to create interactive and dynamic websites that engage users. Understanding Javascript is essential for anyone interested in pursuing a career in web development. 55 | 56 | ### Quiz Questions 57 | 58 | What is Javascript? 59 | 60 | [(X)] A programming language used to create dynamic and interactive websites 61 | [( )] A database management system 62 | [( )] A software that helps in designing web pages 63 | [( )] A web server 64 | 65 | What are the uses of Javascript? 66 | 67 | [[X]] Creating interactive web pages 68 | [[ ]] Building mobile applications 69 | [[ ]] Developing desktop applications 70 | [[ ]] Writing server-side scripts 71 | [[X]] Creating video games 72 | 73 | What is the importance of Javascript in web development? 74 | 75 | [( )] It is not important 76 | [(X)] It is used to add interactivity and dynamic behavior to web pages 77 | [( )] It is used to create server-side scripts 78 | [( )] It is used to build mobile applications 79 | 80 | What is the difference between Javascript and Java? 81 | 82 | [( )] They are the same thing 83 | [(X)] Javascript is a scripting language used for web development, while Java is a programming language used for developing applications 84 | [( )] Java is a scripting language used for web development, while Javascript is a programming language used for developing applications 85 | [( )] Javascript is used for front-end development, while Java is used for back-end development 86 | 87 | What is the latest version of Javascript? 88 | 89 | [( )] ES3 90 | [( )] ES5 91 | [(X)] ES6 92 | [( )] ES7 93 | 94 | ## Variables and Data Types 95 | This section will explain the different types of variables in Javascript, their uses, and how to declare them. It will also cover the various data types in the language. 96 | Variables and Data Types 97 | 98 | In programming, variables serve as containers for storing values that can be accessed and manipulated throughout the code. JavaScript, a high-level programming language, supports different types of variables and data types. Understanding how to declare variables and the various data types in JavaScript is fundamental to writing efficient programs. 99 | 100 | **Declaring Variables** 101 | 102 | In JavaScript, variables can be declared using three different keywords: `var`, `let`, and `const`. The `var` keyword is used to declare variables globally or within a function. The `let` keyword is used to declare variables within a block scope, such as within a loop or conditional statement. The `const` keyword is used to declare variables that cannot be reassigned a new value. 103 | 104 | ```js -variables.js 105 | var globalVar = "I am a global variable"; 106 | let blockVar = "I am a block variable"; 107 | const constantVar = "I am a constant variable"; 108 | ``` 109 | 110 | **Primitive Data Types** 111 | 112 | JavaScript has six primitive data types: `string`, `number`, `boolean`, `null`, `undefined`, and `symbol`. A primitive data type is a data type that is not an object and has no methods. 113 | 114 | - `string` represents textual data and is enclosed within single or double quotes. 115 | - `number` represents numeric data and includes integers, floats, and NaN (Not a Number). 116 | - `boolean` represents a logical value and can either be true or false. 117 | - `null` represents a deliberate non-value or absence of any object value. 118 | - `undefined` represents a value that is not yet defined or not assigned to a variable. 119 | - `symbol` represents a unique identifier that can be used as the key of an object property. 120 | 121 | ```js -datatypes.js 122 | let myName = "John"; 123 | let myAge = 22; 124 | let isStudent = true; 125 | let noValue = null; 126 | let notDefined; 127 | let id = Symbol("id"); 128 | 129 | console.log(typeof myName); // string 130 | console.log(typeof myAge); // number 131 | console.log(typeof isStudent); // boolean 132 | console.log(typeof noValue); // object (a known bug in JS) 133 | console.log(typeof notDefined); // undefined 134 | console.log(typeof id); // symbol 135 | ``` 136 | 137 | **Composite Data Types** 138 | 139 | Composite data types are objects that can have multiple values or properties. In JavaScript, there are three composite data types: `array`, `object`, and `function`. 140 | 141 | - `array` represents a collection of values and is enclosed within square brackets. 142 | - `object` represents a collection of key-value pairs and is enclosed within curly braces. 143 | - `function` represents a block of code that can be called by other code and can take parameters. 144 | 145 | ```js -compositedatatypes.js 146 | let myArray = ["apple", "banana", "orange"]; 147 | let myObj = { name: "John", age: 22, isStudent: true }; 148 | let myFunc = function(name) { console.log("Hello " + name + "!"); } 149 | 150 | console.log(myArray[0]); // apple 151 | console.log(myObj.age); // 22 152 | myFunc("World"); // Hello World! 153 | ``` 154 | 155 | **Conclusion** 156 | 157 | In conclusion, understanding how to declare variables and the various data types in JavaScript is crucial in programming. This knowledge serves as the foundation for learning more advanced programming concepts. In the next section, we will cover operators and expressions in JavaScript. 158 | 159 | ### Quiz Questions 160 | 161 | What is the difference between let and var in JavaScript? 162 | 163 | [(X)] let is block-scoped, while var is function-scoped 164 | [( )] var is block-scoped, while let is function-scoped 165 | [( )] There is no difference between let and var in JavaScript 166 | 167 | What is the output of the following code snippet: console.log(typeof 'hello' === 'string')? 168 | 169 | [(X)] true 170 | [( )] false 171 | [( )] undefined 172 | 173 | What is the data type of null in JavaScript? 174 | 175 | [( )] Null 176 | [(X)] Object 177 | [( )] Undefined 178 | 179 | What is the output of the following code snippet: console.log('5' + 5)? 180 | 181 | [(X)] 55 182 | [( )] 10 183 | [( )] NaN 184 | 185 | Which of the following is not a primitive data type in JavaScript? 186 | 187 | [( )] Number 188 | [( )] String 189 | [( )] Boolean 190 | [(X)] Object 191 | 192 | 193 | ## Functions and Control Flow 194 | This section will cover how to define and call functions in Javascript, as well as how to use control structures like loops and conditionals. 195 | Functions and Control Flow 196 | 197 | JavaScript is a versatile programming language that allows developers to create dynamic and interactive web pages. One of the fundamental concepts in JavaScript is the use of functions and control structures. Functions are used to encapsulate a block of code and execute it when needed, while control structures are used to determine the flow of execution in a program. In this section, we will cover how to define and call functions in JavaScript, as well as how to use control structures like loops and conditionals. 198 | 199 | **Functions** 200 | 201 | Functions are a fundamental building block in JavaScript. They allow you to define a block of code that can be executed repeatedly with different inputs. A function in JavaScript can be defined using the `function` keyword, followed by the name of the function, and a set of parentheses that contain any parameters that the function may accept. The body of the function is enclosed in curly braces `{}`. 202 | 203 | ``` js -functions.js 204 | function greet(name) { 205 | console.log("Hello, " + name + "!"); 206 | } 207 | ``` 208 | 209 | In the above example, we have defined a function called `greet` that accepts a single parameter `name`. When called, the function will print a message to the console that includes the value of `name`. To call a function, we simply use its name followed by a set of parentheses that contain any arguments that we want to pass to the function. 210 | 211 | ``` js -functions.js 212 | greet("Alice"); // Outputs "Hello, Alice!" 213 | greet("Bob"); // Outputs "Hello, Bob!" 214 | ``` 215 | 216 | Functions can also return a value using the `return` keyword. The value that is returned can then be used in other parts of the program. 217 | 218 | ``` js -functions.js 219 | function add(a, b) { 220 | return a + b; 221 | } 222 | 223 | let result = add(3, 5); 224 | console.log(result); // Outputs 8 225 | ``` 226 | 227 | **Control Flow** 228 | 229 | Control structures are used to determine the flow of execution in a program. JavaScript provides a number of control structures, including loops and conditionals. 230 | 231 | **Conditional Statements** 232 | 233 | Conditional statements allow you to execute blocks of code only if certain conditions are met. The most basic conditional statement in JavaScript is the `if` statement, which allows you to execute a block of code only if a certain condition is true. 234 | 235 | ``` js -if.js 236 | let x = 5; 237 | 238 | if (x > 0) { 239 | console.log("x is positive"); 240 | } 241 | ``` 242 | 243 | In the above example, we are using the `if` statement to check if the value of `x` is greater than 0. If the condition is true, the message "x is positive" is printed to the console. 244 | 245 | JavaScript also provides an `else` statement that allows you to execute a different block of code if the condition is false. 246 | 247 | ``` js -if.js 248 | let x = -5; 249 | 250 | if (x > 0) { 251 | console.log("x is positive"); 252 | } else { 253 | console.log("x is not positive"); 254 | } 255 | ``` 256 | 257 | In the above example, we are using the `else` statement to print a different message if the value of `x` is not greater than 0. 258 | 259 | **Loops** 260 | 261 | Loops are used to execute a block of code multiple times. JavaScript provides several types of loops, including the `for` loop, the `while` loop, and the `do-while` loop. 262 | 263 | The `for` loop is used when you know the number of times you want to execute a block of code. It consists of three parts: an initialization statement, a conditional statement, and an update statement. 264 | 265 | ``` js -for.js 266 | for (let i = 0; i < 5; i++) { 267 | console.log(i); 268 | } 269 | ``` 270 | 271 | In the above example, we are using a `for` loop to print the numbers 0 to 4 to the console. The loop runs as follows: 272 | 1. The initialization statement `let i = 0` sets the initial value of `i` to 0. 273 | 2. The conditional statement `i < 5` checks if the value of `i` is less than 5. If it is, the loop continues. If it is not, the loop exits. 274 | 3. The body of the loop `console.log(i)` is executed. 275 | 4. The update statement `i++` increments the value of `i` by 1. 276 | 277 | The `while` loop is used when you don't know how many times you want to execute a block of code, but you know the condition that must be met for the loop to continue. 278 | 279 | ``` js -while.js 280 | let i = 0; 281 | 282 | while (i < 5) { 283 | console.log(i); 284 | i++; 285 | } 286 | ``` 287 | 288 | In the above example, we are using a `while` loop to print the numbers 0 to 4 to the console. The loop runs as follows: 289 | 1. The initialization statement `let i = 0` sets the initial value of `i` to 0. 290 | 2. The conditional statement `i < 5` checks if the value of `i` is less than 5. If it is, the loop continues. If it is not, the loop exits. 291 | 3. The body of the loop `console.log(i)` is executed. 292 | 4. The update statement `i++` increments the value of `i` by 1. 293 | 294 | The `do-while` loop is similar to the `while` loop, but it always executes the body of the loop at least once, even if the condition is false. 295 | 296 | ``` js -do-while.js 297 | let i = 0; 298 | 299 | do { 300 | console.log(i); 301 | i++; 302 | } while (i < 5); 303 | ``` 304 | 305 | In the above example, we are using a `do-while` loop to print the numbers 0 to 4 to the console. The loop runs as follows: 306 | 1. The initialization statement `let i = 0` sets the initial value of `i` to 0. 307 | 2. The body of the loop `console.log(i)` is executed. 308 | 3. The update statement `i++` increments the value of `i` by 1. 309 | 4. The conditional statement `i < 5` checks if the value of `i` is less than 5. If it is, the loop continues. If it is not, the loop exits. 310 | 311 | In conclusion, functions and control structures are essential concepts in JavaScript that allow developers to create dynamic and interactive web pages. By using functions, you can encapsulate a block of code and execute it repeatedly with different inputs. Control structures like loops and conditionals allow you to determine the flow of execution in a program. By mastering these concepts, you will be well on your way to becoming a proficient JavaScript developer. 312 | 313 | ### Quiz Questions 314 | 315 | What is a function in JavaScript? 316 | 317 | [(X)] A set of instructions that performs a specific task 318 | [( )] A type of data structure 319 | [( )] A way to declare variables 320 | [( )] A method for organizing code 321 | 322 | What is the syntax for declaring a function in JavaScript? 323 | 324 | [(X)] function myFunction() 325 | [( )] myFunction() 326 | [( )] declare myFunction() 327 | [( )] function = myFunction() 328 | 329 | What does the return statement do in a function? 330 | 331 | [( )] Stops the execution of the function 332 | [(X)] Returns a value from the function 333 | [( )] Declares a variable 334 | [( )] Calls another function 335 | 336 | What is the purpose of a loop in programming? 337 | 338 | [(X)] To execute a block of code multiple times 339 | [( )] To stop the execution of a program 340 | [( )] To declare variables 341 | [( )] To organize code 342 | 343 | What is the difference between a for loop and a while loop? 344 | 345 | [(X)] A for loop is used for a specific number of iterations, while a while loop is used for an unknown number of iterations 346 | [( )] A for loop is used for an unknown number of iterations, while a while loop is used for a specific number of iterations 347 | [( )] A for loop is used for executing a block of code once, while a while loop is used for executing a block of code multiple times 348 | [( )] There is no difference between a for loop and a while loop 349 | 350 | 351 | ## DOM Manipulation 352 | This section will cover how to manipulate HTML and CSS using Javascript, including selecting and modifying elements, handling events, and creating animations. 353 | DOM Manipulation is one of the core concepts of web development that allows us to interact with HTML and CSS using Javascript. In this section, we will explore how to select and modify elements, handle events, and create animations using Javascript. 354 | 355 | **Selecting Elements** 356 | To manipulate an element, we must first select it using Javascript. There are several ways to select elements in the Document Object Model (DOM) such as by tag name, class name, or ID. We can use the `document.getElementById()` method to select an element by its ID. For example, the following code selects an element with the ID "myElement": 357 | 358 | ```js 359 | let element = document.getElementById("myElement"); 360 | ``` 361 | 362 | **Modifying Elements** 363 | Once we have selected an element, we can modify its attributes, such as its text content or CSS styles. We can use the `innerHTML` property to change the content of an element. For example, the following code changes the text content of the element with the ID "myElement": 364 | 365 | ```js 366 | element.innerHTML = "New content"; 367 | ``` 368 | 369 | We can also modify the CSS styles of an element using the `style` property. For example, the following code changes the background color of the element: 370 | 371 | ```js 372 | element.style.backgroundColor = "red"; 373 | ``` 374 | 375 | **Handling Events** 376 | Events are actions or occurrences that happen in the browser, such as a user clicking a button or scrolling the page. We can use Javascript to handle these events and execute code in response to them. We can use the `addEventListener()` method to attach an event listener to an element. For example, the following code adds a click event listener to the element with the ID "myButton": 377 | 378 | ```js 379 | let button = document.getElementById("myButton"); 380 | button.addEventListener("click", function() { 381 | // Code to execute when the button is clicked 382 | }); 383 | ``` 384 | 385 | **Creating Animations** 386 | Animations are a great way to add interactivity and visual interest to a webpage. We can use Javascript to create animations by modifying element properties over time. We can use the `setTimeout()` method to delay the execution of code, and the `setInterval()` method to repeat code at a specified interval. For example, the following code animates the opacity of an element: 387 | 388 | ```js 389 | let opacity = 0; 390 | let element = document.getElementById("myElement"); 391 | let interval = setInterval(function() { 392 | opacity += 0.1; 393 | element.style.opacity = opacity; 394 | if (opacity >= 1) clearInterval(interval); 395 | }, 100); 396 | ``` 397 | 398 | In conclusion, Javascript provides a powerful toolset for manipulating HTML and CSS in the browser. By selecting and modifying elements, handling events, and creating animations, we can create dynamic and engaging webpages. 399 | 400 | ### Quiz Questions 401 | 402 | What is the DOM? 403 | 404 | [( )] A way to manipulate CSS using Javascript 405 | [(X)] The Document Object Model, a way to access and manipulate the HTML and CSS of a webpage 406 | [( )] A programming language 407 | [( )] A way to create animations in Javascript 408 | 409 | What is the syntax for selecting an element by its ID in Javascript? 410 | 411 | [( )] document.getElementByTag('id') 412 | [(X)] document.getElementById('id') 413 | [( )] document.getElement('id') 414 | [( )] document.getElementByName('id') 415 | 416 | What is an event in Javascript? 417 | 418 | [( )] A method of selecting an element in the DOM 419 | [(X)] An action that occurs as a result of user interaction with a webpage 420 | [( )] A type of animation in Javascript 421 | [( )] A way to modify CSS in Javascript 422 | 423 | What is the difference between innerHTML and textContent? 424 | 425 | [[ ]] innerHTML returns the text content of an element, while textContent returns the HTML content 426 | [[ ]] innerHTML is faster than textContent 427 | [[X]] innerHTML returns the HTML content of an element, while textContent returns only the text content 428 | [[ ]] textContent is deprecated and should not be used 429 | 430 | What is an example of an animation that can be created using Javascript? 431 | 432 | [( )] A blinking text 433 | [(X)] A rotating image 434 | [( )] A changing background color 435 | [( )] A sliding menu 436 | 437 | 438 | ## Debugging and Troubleshooting 439 | This section will cover common errors in Javascript and how to debug them using tools like the browser console. It will also provide tips for troubleshooting issues in larger codebases. 440 | Debugging and Troubleshooting 441 | 442 | As a Javascript developer, you will inevitably encounter bugs and errors in your code. Debugging and troubleshooting are essential skills for any programmer. In this section, we will cover common errors in Javascript and how to debug them using tools like the browser console. We will also provide tips for troubleshooting issues in larger codebases. 443 | 444 | **Common Errors in Javascript** 445 | Javascript is a complex language, and even experienced developers can make mistakes. Here are some common errors you may encounter: 446 | 447 | * Syntax errors: These occur when you make a mistake in the syntax of your code. For example, forgetting a semicolon or using the wrong variable name. 448 | * Logic errors: These occur when your code does not work as expected. For example, a loop that does not terminate or a function that returns the wrong value. 449 | * Runtime errors: These occur when your code encounters an error during execution. For example, trying to access a property of an undefined variable. 450 | 451 | **Debugging Tools** 452 | Javascript provides several tools for debugging your code. The most commonly used tool is the browser console. The console allows you to log messages, view errors, and inspect variables in your code. 453 | 454 | To log a message to the console, use the `console.log()` function. For example: 455 | 456 | ```js -script.js 457 | console.log("Hello World!"); 458 | ``` 459 | 460 | To view errors in the console, you can use the `console.error()` function. For example: 461 | 462 | ```js -script.js 463 | console.error("Oops! Something went wrong."); 464 | ``` 465 | 466 | You can also use the `debugger` statement to pause your code and inspect variables in the browser console. For example: 467 | 468 | ```js -script.js 469 | function addNumbers(a, b) { 470 | debugger; 471 | return a + b; 472 | } 473 | 474 | let result = addNumbers(2, 3); 475 | console.log(result); 476 | ``` 477 | 478 | When you run this code, the browser will pause at the `debugger` statement, allowing you to inspect the values of `a` and `b`. 479 | 480 | **Troubleshooting Tips** 481 | When working with larger codebases, it can be challenging to identify the source of an issue. Here are some tips for troubleshooting: 482 | 483 | * Start by identifying the symptoms of the issue. What is not working as expected? 484 | * Check the console for errors and warnings. 485 | * Use the `debugger` statement to step through your code and identify where the issue is occurring. 486 | * Break your code into smaller pieces and test each piece separately. 487 | * Ask for help! There are many online communities and forums where you can ask for assistance. 488 | 489 | In conclusion, debugging and troubleshooting are critical skills for any Javascript developer. By understanding common errors, using debugging tools, and following troubleshooting tips, you can quickly identify and fix issues in your code. 490 | 491 | ### Quiz Questions 492 | 493 | What is the browser console used for? 494 | 495 | [( )] To display images and videos on the webpage 496 | [( )] To interact with the Document Object Model (DOM) 497 | [(X)] To debug and troubleshoot errors in JavaScript 498 | [( )] To store data on the client-side 499 | 500 | What is a common cause of syntax errors in JavaScript? 501 | 502 | [(X)] Forgetting to declare variables with the var keyword 503 | [( )] Using console.log() statements 504 | [( )] Including too many comments in the code 505 | [( )] Using jQuery to manipulate the DOM 506 | 507 | What is a good way to start debugging a JavaScript error? 508 | 509 | [( )] Trying to reproduce the error in different browsers 510 | [( )] Reading through the entire codebase 511 | [(X)] Checking the browser console for error messages 512 | [( )] Asking a colleague for help 513 | 514 | What is a possible cause of a reference error in JavaScript? 515 | 516 | [(X)] Trying to access a variable that hasn't been declared 517 | [( )] Using the wrong data type for a variable 518 | [( )] Forgetting to use the semicolon at the end of a line 519 | [( )] Using a reserved keyword as a variable name 520 | 521 | Which of the following is a tip for troubleshooting issues in larger codebases? 522 | 523 | [( )] Trying to fix everything at once 524 | [( )] Refactoring the entire codebase 525 | [(X)] Using version control to track changes 526 | [( )] Ignoring errors that seem unrelated 527 | 528 | 529 | -------------------------------------------------------------------------------- /EduWeaver_AutoCourse_LCEL.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "provenance": [] 7 | }, 8 | "kernelspec": { 9 | "name": "python3", 10 | "display_name": "Python 3" 11 | }, 12 | "language_info": { 13 | "name": "python" 14 | } 15 | }, 16 | "cells": [ 17 | { 18 | "cell_type": "markdown", 19 | "source": [ 20 | "#EduWeaver\n", 21 | "\n", 22 | "EduWeaver uses ChatGPT API to make a LiaScript course. EduWeaver can be considered an AutoCourse maker.\n", 23 | "\n", 24 | "- Specify a topic and a few other parameters (i.e. sub-sections to nclude and exclude)\n", 25 | "- Creates a list of sub sections (or chapters)\n", 26 | "- Generates the content\n", 27 | "- Generates appropriate activities eg MCQ's\n", 28 | "- Adds simplified sections to explain complex things better\n", 29 | "- Includes external links or readings\n", 30 | "- Includes code snippets/examples for programming related topics\n", 31 | "- Saves as a Markdown file for valid [LiaScript](https://liascript.github.io/)\n", 32 | "\n", 33 | "Coming soon:\n", 34 | "\n", 35 | "- Additional interactive learning activities\n", 36 | "- Other export formats eg HTML and SCORM\n", 37 | "\n", 38 | "Eduweaver uses LangChain and the latest LangChain Expression Language (LCEL) syntax." 39 | ], 40 | "metadata": { 41 | "id": "4w68gwJB3gtN" 42 | } 43 | }, 44 | { 45 | "cell_type": "markdown", 46 | "source": [ 47 | "## Setup\n", 48 | "\n", 49 | "Enter a few details about the course and your OpenAI API key. You can create a new API key by going to your OpenAI Account [https://platform.openai.com/account/api-keys]." 50 | ], 51 | "metadata": { 52 | "id": "Htgj6fEB3Ji_" 53 | } 54 | }, 55 | { 56 | "cell_type": "code", 57 | "source": [ 58 | "#@title Course Generation Settings\n", 59 | "topic = 'Design Thinking' #@param {type: \"string\"}\n", 60 | "teaching_method = 'Explain concepts is a simple and straight forward manner' #@param {type: \"string\"}\n", 61 | "no_sub_topics = 8 #@param {type: \"slider\", min: 2, max: 10}\n", 62 | "sub_topics_to_include = \"Idea integration\" #@param {type: \"string\"}\n", 63 | "sub_topics_to_not_include = \"\" #@param {type: \"string\"}\n", 64 | "audience = 'Educators' #@param {type: \"string\"}\n", 65 | "no_quiz_questions_in_sub_topic = 5 #@param {type: \"slider\", min: 1, max: 6}\n", 66 | "narrator_language = \"Australian Female\" #@param [\"UK English Female\", \"US English Female\", \"Australian Female\", \"UK English Male\", \"US English Male\", \"Australian Male\"]\n", 67 | "output_filename = 'DesignThinking_Course.md' #@param {type: \"string\"}\n", 68 | "\n", 69 | "#@markdown ---\n" 70 | ], 71 | "metadata": { 72 | "id": "V15z77aE-d6F" 73 | }, 74 | "execution_count": 4, 75 | "outputs": [] 76 | }, 77 | { 78 | "cell_type": "code", 79 | "execution_count": null, 80 | "metadata": { 81 | "id": "H8cYE0Rs3Vhi" 82 | }, 83 | "outputs": [], 84 | "source": [ 85 | "# Set your environment variables\n", 86 | "# Don't include quotes around the key\n", 87 | "%env OPENAI_API_KEY=" 88 | ] 89 | }, 90 | { 91 | "cell_type": "code", 92 | "source": [ 93 | "# Install required libraries\n", 94 | "!pip install openai langchain" 95 | ], 96 | "metadata": { 97 | "id": "8XBQbatU5YIX", 98 | "colab": { 99 | "base_uri": "https://localhost:8080/" 100 | }, 101 | "outputId": "80b3e93d-6391-49db-cdb2-c4eebb7aadfc" 102 | }, 103 | "execution_count": 6, 104 | "outputs": [ 105 | { 106 | "output_type": "stream", 107 | "name": "stdout", 108 | "text": [ 109 | "Collecting openai\n", 110 | " Downloading openai-1.6.1-py3-none-any.whl (225 kB)\n", 111 | "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m225.4/225.4 kB\u001b[0m \u001b[31m4.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", 112 | "\u001b[?25hCollecting langchain\n", 113 | " Downloading langchain-0.0.352-py3-none-any.whl (794 kB)\n", 114 | "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m794.4/794.4 kB\u001b[0m \u001b[31m10.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", 115 | "\u001b[?25hRequirement already satisfied: anyio<5,>=3.5.0 in /usr/local/lib/python3.10/dist-packages (from openai) (3.7.1)\n", 116 | "Requirement already satisfied: distro<2,>=1.7.0 in /usr/lib/python3/dist-packages (from openai) (1.7.0)\n", 117 | "Collecting httpx<1,>=0.23.0 (from openai)\n", 118 | " Downloading httpx-0.26.0-py3-none-any.whl (75 kB)\n", 119 | "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m75.9/75.9 kB\u001b[0m \u001b[31m7.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", 120 | "\u001b[?25hRequirement already satisfied: pydantic<3,>=1.9.0 in /usr/local/lib/python3.10/dist-packages (from openai) (1.10.13)\n", 121 | "Requirement already satisfied: sniffio in /usr/local/lib/python3.10/dist-packages (from openai) (1.3.0)\n", 122 | "Requirement already satisfied: tqdm>4 in /usr/local/lib/python3.10/dist-packages (from openai) (4.66.1)\n", 123 | "Collecting typing-extensions<5,>=4.7 (from openai)\n", 124 | " Downloading typing_extensions-4.9.0-py3-none-any.whl (32 kB)\n", 125 | "Requirement already satisfied: PyYAML>=5.3 in /usr/local/lib/python3.10/dist-packages (from langchain) (6.0.1)\n", 126 | "Requirement already satisfied: SQLAlchemy<3,>=1.4 in /usr/local/lib/python3.10/dist-packages (from langchain) (2.0.23)\n", 127 | "Requirement already satisfied: aiohttp<4.0.0,>=3.8.3 in /usr/local/lib/python3.10/dist-packages (from langchain) (3.9.1)\n", 128 | "Requirement already satisfied: async-timeout<5.0.0,>=4.0.0 in /usr/local/lib/python3.10/dist-packages (from langchain) (4.0.3)\n", 129 | "Collecting dataclasses-json<0.7,>=0.5.7 (from langchain)\n", 130 | " Downloading dataclasses_json-0.6.3-py3-none-any.whl (28 kB)\n", 131 | "Collecting jsonpatch<2.0,>=1.33 (from langchain)\n", 132 | " Downloading jsonpatch-1.33-py2.py3-none-any.whl (12 kB)\n", 133 | "Collecting langchain-community<0.1,>=0.0.2 (from langchain)\n", 134 | " Downloading langchain_community-0.0.6-py3-none-any.whl (1.5 MB)\n", 135 | "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.5/1.5 MB\u001b[0m \u001b[31m17.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", 136 | "\u001b[?25hCollecting langchain-core<0.2,>=0.1 (from langchain)\n", 137 | " Downloading langchain_core-0.1.3-py3-none-any.whl (192 kB)\n", 138 | "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m192.4/192.4 kB\u001b[0m \u001b[31m12.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", 139 | "\u001b[?25hCollecting langsmith<0.1.0,>=0.0.70 (from langchain)\n", 140 | " Downloading langsmith-0.0.75-py3-none-any.whl (46 kB)\n", 141 | "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m46.7/46.7 kB\u001b[0m \u001b[31m6.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", 142 | "\u001b[?25hRequirement already satisfied: numpy<2,>=1 in /usr/local/lib/python3.10/dist-packages (from langchain) (1.23.5)\n", 143 | "Requirement already satisfied: requests<3,>=2 in /usr/local/lib/python3.10/dist-packages (from langchain) (2.31.0)\n", 144 | "Requirement already satisfied: tenacity<9.0.0,>=8.1.0 in /usr/local/lib/python3.10/dist-packages (from langchain) (8.2.3)\n", 145 | "Requirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp<4.0.0,>=3.8.3->langchain) (23.1.0)\n", 146 | "Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.10/dist-packages (from aiohttp<4.0.0,>=3.8.3->langchain) (6.0.4)\n", 147 | "Requirement already satisfied: yarl<2.0,>=1.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp<4.0.0,>=3.8.3->langchain) (1.9.4)\n", 148 | "Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from aiohttp<4.0.0,>=3.8.3->langchain) (1.4.1)\n", 149 | "Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.10/dist-packages (from aiohttp<4.0.0,>=3.8.3->langchain) (1.3.1)\n", 150 | "Requirement already satisfied: idna>=2.8 in /usr/local/lib/python3.10/dist-packages (from anyio<5,>=3.5.0->openai) (3.6)\n", 151 | "Requirement already satisfied: exceptiongroup in /usr/local/lib/python3.10/dist-packages (from anyio<5,>=3.5.0->openai) (1.2.0)\n", 152 | "Collecting marshmallow<4.0.0,>=3.18.0 (from dataclasses-json<0.7,>=0.5.7->langchain)\n", 153 | " Downloading marshmallow-3.20.1-py3-none-any.whl (49 kB)\n", 154 | "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m49.4/49.4 kB\u001b[0m \u001b[31m6.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", 155 | "\u001b[?25hCollecting typing-inspect<1,>=0.4.0 (from dataclasses-json<0.7,>=0.5.7->langchain)\n", 156 | " Downloading typing_inspect-0.9.0-py3-none-any.whl (8.8 kB)\n", 157 | "Requirement already satisfied: certifi in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->openai) (2023.11.17)\n", 158 | "Collecting httpcore==1.* (from httpx<1,>=0.23.0->openai)\n", 159 | " Downloading httpcore-1.0.2-py3-none-any.whl (76 kB)\n", 160 | "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m76.9/76.9 kB\u001b[0m \u001b[31m10.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", 161 | "\u001b[?25hCollecting h11<0.15,>=0.13 (from httpcore==1.*->httpx<1,>=0.23.0->openai)\n", 162 | " Downloading h11-0.14.0-py3-none-any.whl (58 kB)\n", 163 | "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.3/58.3 kB\u001b[0m \u001b[31m8.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", 164 | "\u001b[?25hCollecting jsonpointer>=1.9 (from jsonpatch<2.0,>=1.33->langchain)\n", 165 | " Downloading jsonpointer-2.4-py2.py3-none-any.whl (7.8 kB)\n", 166 | "Requirement already satisfied: packaging<24.0,>=23.2 in /usr/local/lib/python3.10/dist-packages (from langchain-core<0.2,>=0.1->langchain) (23.2)\n", 167 | "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2->langchain) (3.3.2)\n", 168 | "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2->langchain) (2.0.7)\n", 169 | "Requirement already satisfied: greenlet!=0.4.17 in /usr/local/lib/python3.10/dist-packages (from SQLAlchemy<3,>=1.4->langchain) (3.0.2)\n", 170 | "Collecting mypy-extensions>=0.3.0 (from typing-inspect<1,>=0.4.0->dataclasses-json<0.7,>=0.5.7->langchain)\n", 171 | " Downloading mypy_extensions-1.0.0-py3-none-any.whl (4.7 kB)\n", 172 | "Installing collected packages: typing-extensions, mypy-extensions, marshmallow, jsonpointer, h11, typing-inspect, jsonpatch, httpcore, langsmith, httpx, dataclasses-json, openai, langchain-core, langchain-community, langchain\n", 173 | " Attempting uninstall: typing-extensions\n", 174 | " Found existing installation: typing_extensions 4.5.0\n", 175 | " Uninstalling typing_extensions-4.5.0:\n", 176 | " Successfully uninstalled typing_extensions-4.5.0\n", 177 | "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", 178 | "llmx 0.0.15a0 requires cohere, which is not installed.\n", 179 | "llmx 0.0.15a0 requires tiktoken, which is not installed.\n", 180 | "tensorflow-probability 0.22.0 requires typing-extensions<4.6.0, but you have typing-extensions 4.9.0 which is incompatible.\u001b[0m\u001b[31m\n", 181 | "\u001b[0mSuccessfully installed dataclasses-json-0.6.3 h11-0.14.0 httpcore-1.0.2 httpx-0.26.0 jsonpatch-1.33 jsonpointer-2.4 langchain-0.0.352 langchain-community-0.0.6 langchain-core-0.1.3 langsmith-0.0.75 marshmallow-3.20.1 mypy-extensions-1.0.0 openai-1.6.1 typing-extensions-4.9.0 typing-inspect-0.9.0\n" 182 | ] 183 | } 184 | ] 185 | }, 186 | { 187 | "cell_type": "code", 188 | "source": [ 189 | "from langchain.chat_models import ChatOpenAI\n", 190 | "from langchain.prompts import ChatPromptTemplate\n", 191 | "from langchain_core.output_parsers import StrOutputParser\n", 192 | "from langchain.output_parsers.json import SimpleJsonOutputParser\n", 193 | "\n", 194 | "# Setup the model\n", 195 | "model = ChatOpenAI(temperature=0.7, model_name='gpt-4')\n", 196 | "json_output_parser = SimpleJsonOutputParser()\n", 197 | "string_output_parser = StrOutputParser()\n", 198 | "\n", 199 | "# Get TOC sections for the course\n", 200 | "\n", 201 | "print(\"- Getting Course TOC.\")\n", 202 | "\n", 203 | "# First extract the additional specified sub-sections\n", 204 | "list_of_additional_sub_sections = sub_topics_to_include.split(';')\n", 205 | "sub_topics_to_include_text = \" \"\n", 206 | "if len(list_of_additional_sub_sections) > 0:\n", 207 | " sub_topics_to_include_text = \"In the sub sections also please include these: \" + sub_topics_to_include\n", 208 | "\n", 209 | "list_of_sub_topics_not_to_incude = sub_topics_to_not_include.split(';')\n", 210 | "sub_topics_to_not_include_text = \" \"\n", 211 | "if len(list_of_sub_topics_not_to_incude) > 0:\n", 212 | " sub_topics_to_not_include_text = \"Please don't include content on these sub-topics (THIS IS VERY IMPORTANT): \" + sub_topics_to_not_include\n", 213 | "\n", 214 | "\n", 215 | "if teaching_method!=\"\":\n", 216 | " teaching_method_to_include_text = \"Use this teaching and writing style: \" + teaching_method\n", 217 | "\n", 218 | "\n", 219 | "act_as_ld_template='''\n", 220 | " Please act as a subject matter expert on the topic of {topic}. You also have learning designer skills and knowledge of markdown and json.\n", 221 | " You know how to design online modules with a deep knowledge of the sections that need to be included for the topic. You can break up the content into chunks, explain concepts so that can easily be understood, write quizzes to test knowledge and write creative learning activities for students.\n", 222 | " '''\n", 223 | "ask_for_sections_template='''\n", 224 | " Could you please come up with {no_sub_topics} sections for an online module on the topic of {topic} for {audience} in json format?\n", 225 | " {sub_topics_to_include_text}\n", 226 | " {sub_topics_to_not_include_text}\n", 227 | " Here is an example of the format you need to return:\n", 228 | " [{{\"section_name\": \"The name of the section 1\", \"section_description\": \"The descriptions of the section 1\"}}]\n", 229 | " Note that you must only return the section_name and section_description fields in the json that is returned.\n", 230 | " Please don't return any intro text before or after the json. YOU MUST RETURN ONLY VALID JSON.\n", 231 | " '''\n", 232 | "\n", 233 | "toc_prompt = ChatPromptTemplate.from_template(act_as_ld_template + ask_for_sections_template)\n", 234 | "\n", 235 | "toc_chain = toc_prompt | model | json_output_parser\n", 236 | "\n", 237 | "sections = toc_chain.invoke({\"topic\": topic, \"no_sub_topics\": no_sub_topics, \"sub_topics_to_include_text\": sub_topics_to_include_text, \"sub_topics_to_not_include_text\": sub_topics_to_not_include_text, \"audience\": audience })\n", 238 | "\n", 239 | "updated_sections = []\n", 240 | "for section in sections:\n", 241 | " new_section = {\"topic\": topic, \"no_sub_topics\": no_sub_topics, \"sub_topics_to_include_text\": sub_topics_to_include_text, \"sub_topics_to_not_include_text\": sub_topics_to_not_include_text, \"no_quiz_questions_in_sub_topic\":no_quiz_questions_in_sub_topic, \"audience\": audience, \"teaching_method_to_include_text\": teaching_method_to_include_text, \"section_name\": section[\"section_name\"], \"section_description\": section[\"section_description\"]}\n", 242 | " updated_sections.append(new_section)\n", 243 | "\n", 244 | "# Get content for each sub section\n", 245 | "\n", 246 | "print(\"- Getting content for each sub section.\")\n", 247 | "\n", 248 | "section_details_template='''\n", 249 | " Could you please write the content for this section name: {section_name}\n", 250 | " The content must be appropriate for this audience: {audience}\n", 251 | " The description of the topic that you must write is {section_description}.\n", 252 | " {teaching_method_to_include_text}\n", 253 | " {sub_topics_to_not_include_text}\n", 254 | " Please first output the section name as a level 2 markdown eg ## {section_name}\n", 255 | " If the section is on programming or coding please include code examples within backticks and specify the language and filename eg:\n", 256 | " ``` js +Filename.js\n", 257 | " let hi = \"Hello World\"\n", 258 | " ```\n", 259 | " If the section needs math just place the Latex for the math equations between $ signs eg $ \\frac{{a}}{{\\sum{{b+i}}}} $\n", 260 | " You can include sub sections. Please place the sub section headings within ** and ** followed by \\n (eg **Goals** \\n ) as this is the markdown for sub sections at heading level 3 and a newline is required after.\n", 261 | " For difficult concept please include a section also \"**Additional Links**\" with links to Wikipedia and please make sure the proper markdown is used for links. Only include links to wikipedia that exist, don't include links to other sites (this is very important).\n", 262 | " '''\n", 263 | "\n", 264 | "author_sections_prompt = ChatPromptTemplate.from_template(act_as_ld_template + section_details_template)\n", 265 | "\n", 266 | "author_sections_chain = author_sections_prompt | model | string_output_parser\n", 267 | "\n", 268 | "sections_markdown = author_sections_chain.batch(updated_sections)\n", 269 | "\n", 270 | "# Get creative projects\n", 271 | "\n", 272 | "print(\"- Getting creative projects.\")\n", 273 | "\n", 274 | "creative_project_template='''\n", 275 | " Could you please come up with a few creative project ideas for {topic} that will be appropriate for {audience}?\n", 276 | " Be creative and the project should assist students in learning higher level skills that can't be obtained by doing multiple choice tests.\n", 277 | " The high level project ideas should develop levels from Blooms taxonomy including Application, Analysis, Synthesis, and Evaluation.\n", 278 | " Please don't output the section name or the type of level used from Blooms taxonomy but do include an introductory paragraph.\n", 279 | " {sub_topics_to_not_include_text}\n", 280 | " If the project for the section is on programming or coding please include code examples for the project within backticks and specify the language and filename eg:\n", 281 | " ``` js +Filename.js\n", 282 | " let hi = \"Hello World\"\n", 283 | " ```\n", 284 | " If the project for the section needs maths please place the Latex for the math equations between $ signs eg $ \\frac{{a}}{{\\sum{{b+i}}}} $\n", 285 | " Don't include quiz questions.\n", 286 | " Include each project as a sub sections in markdown. Please place the sub section headings within ** and ** followed by \\n (eg **Project 1** \\n ) as this is the markdown for sub sections at heading level 3 and a newline is required after.\n", 287 | " '''\n", 288 | "\n", 289 | "creative_project_prompt = ChatPromptTemplate.from_template(act_as_ld_template + creative_project_template)\n", 290 | "\n", 291 | "creative_project_chain = creative_project_prompt | model | string_output_parser\n", 292 | "\n", 293 | "creative_projects = creative_project_chain.invoke({\"topic\": topic, \"no_sub_topics\": no_sub_topics, \"sub_topics_to_include_text\": sub_topics_to_include_text, \"sub_topics_to_not_include_text\": sub_topics_to_not_include_text, \"audience\": audience })\n", 294 | "\n", 295 | "# Get Quiz Questions for each section\n", 296 | "\n", 297 | "print(\"- Getting quiz questions for each sub section.\")\n", 298 | "\n", 299 | "section_assessment_template='''\n", 300 | " Could you please write quiz questions for the content in {section_name} that will be appropriate for {audience}?\n", 301 | " The description of the topic that you must write quiz questions for is {section_description}.\n", 302 | " Please write {no_quiz_questions_in_sub_topic} questions in the json format that is given in the example below:\n", 303 | "\n", 304 | " [\n", 305 | " {{\"question\": \"Question 1\",\n", 306 | " \"question_type\": \"single_option\",\n", 307 | " \"options\": [{{\"option_name\": \"Option 1\", \"correct\": \"false\"}}, {{\"option_name\": \"Option 2\", \"correct\": \"true\"}}]\n", 308 | " }},\n", 309 | " {{\"question\": \"Question 2\",\n", 310 | " \"question_type\": \"multiple_options\",\n", 311 | " \"options\": [{{\"option_name\": \"Option 1\", \"correct\": \"false\"}}, {{\"option_name\": \"Option 2\", \"correct\": \"true\"}}, {{\"option_name\": \"Option 3\", \"correct\": \"true\"}} the]\n", 312 | " }}\n", 313 | " ]\n", 314 | "\n", 315 | " The questions must be returned in the same json format as what is given above. The incorrect answers should not be obvious or easy.\n", 316 | " Please note that you there are 2 types of questions namely single_option and multiple_options.\n", 317 | " '''\n", 318 | "\n", 319 | "assessment_prompt = ChatPromptTemplate.from_template(act_as_ld_template + section_assessment_template)\n", 320 | "\n", 321 | "assessment_chain = assessment_prompt | model | json_output_parser\n", 322 | "\n", 323 | "quiz_questions = assessment_chain.batch(updated_sections)\n", 324 | "\n" 325 | ], 326 | "metadata": { 327 | "colab": { 328 | "base_uri": "https://localhost:8080/" 329 | }, 330 | "id": "MlZRArXPicoF", 331 | "outputId": "634930ac-1483-4e5b-f6e6-1630f8fecdfa" 332 | }, 333 | "execution_count": 7, 334 | "outputs": [ 335 | { 336 | "output_type": "stream", 337 | "name": "stdout", 338 | "text": [ 339 | "- Getting Course TOC.\n", 340 | "- Getting content for each sub section.\n", 341 | "- Getting creative projects.\n", 342 | "- Getting quiz questions for each sub section.\n" 343 | ] 344 | } 345 | ] 346 | }, 347 | { 348 | "cell_type": "code", 349 | "source": [ 350 | "# Convert Quiz Json to LiaScript Markdown\n", 351 | "print(\"- Convert MCQ Json to Liascript Markdown.\")\n", 352 | "\n", 353 | "quiz_questions = [[] if x is None else x for x in quiz_questions] # Makes None an empty list\n", 354 | "\n", 355 | "course_assessment_markdown = {}\n", 356 | "\n", 357 | "for index, quiz_section in enumerate(quiz_questions):\n", 358 | " question_markdown = \"\"\n", 359 | " #print(quiz_section)\n", 360 | " for question in quiz_section:\n", 361 | " question_title = question['question']\n", 362 | " question_type = question['question_type']\n", 363 | " if (question_type == \"single_option\"):\n", 364 | " open_brace = '('\n", 365 | " close_brace = ')'\n", 366 | " else:\n", 367 | " open_brace = '['\n", 368 | " close_brace = ']'\n", 369 | " question_markdown += question_title + '\\n\\n'\n", 370 | " options = question['options']\n", 371 | " for option in options:\n", 372 | " option_name = option[\"option_name\"]\n", 373 | " if option['correct'] == \"true\":\n", 374 | " marker = 'X'\n", 375 | " else:\n", 376 | " marker = ' '\n", 377 | " question_markdown += f''' [{open_brace}{marker}{close_brace}] {option_name} \\n'''\n", 378 | " question_markdown += '\\n'\n", 379 | " section_name = sections[index]['section_name']\n", 380 | " course_assessment_markdown[section_name] = question_markdown\n", 381 | "\n", 382 | "\n", 383 | "# Collate course and force download of the Markdown file\n", 384 | "\n", 385 | "print(\"- Collating course content.\")\n", 386 | "\n", 387 | "course_markdown = \"\"\n", 388 | "\n", 389 | "course_markdown += f\"\"\"\n", 390 | "\n", 403 | "\"\"\"\n", 404 | "\n", 405 | "course_markdown += f'''# {topic}\\n'''\n", 406 | "\n", 407 | "# Make the TOC\n", 408 | "toc = \"In this course the following content will be covered: \\n\\n\"\n", 409 | "for section in sections:\n", 410 | " section_name = section['section_name']\n", 411 | " section_description = section['section_description']\n", 412 | " toc += f'''- {section_name} \\n {section_description} \\n\\n'''\n", 413 | "\n", 414 | "course_markdown += \"\"\"\n", 415 | "> This course is completely generated by Eduweaver (using ChatGPT) in Liascript Markdown format.\n", 416 | "> Please verify the content before publishing the course. \\n \\n\n", 417 | "\"\"\"\n", 418 | "\n", 419 | "course_markdown += toc\n", 420 | "\n", 421 | "for index, section in enumerate(sections):\n", 422 | " section_name = section['section_name']\n", 423 | " section_description = section['section_description']\n", 424 | " section_content = sections_markdown[index]\n", 425 | " if section_name in course_assessment_markdown:\n", 426 | " section_assessment = course_assessment_markdown[section_name]\n", 427 | " else:\n", 428 | " section_assessment = None\n", 429 | "\n", 430 | " course_markdown += f'''{section_content}\\n\\n'''\n", 431 | " if section_assessment!=None:\n", 432 | " course_markdown += f'''### Quiz Questions \\n\\n'''\n", 433 | " course_markdown += f'''{section_assessment}\\n'''\n", 434 | "\n", 435 | "course_markdown += f'''## Project Ideas \\n\\n'''\n", 436 | "course_markdown += f'''{creative_projects}\\n\\n'''\n", 437 | "\n", 438 | "with open(output_filename, 'w') as writefile:\n", 439 | " writefile.write(course_markdown)\n", 440 | "\n", 441 | "print(\"- Forcing file download.\")\n", 442 | "from google.colab import files\n", 443 | "files.download(output_filename)\n", 444 | "\n", 445 | "print(\"- If the file does not download, click on the Folder on the left and you will be able to download manually.\")" 446 | ], 447 | "metadata": { 448 | "colab": { 449 | "base_uri": "https://localhost:8080/", 450 | "height": 86 451 | }, 452 | "id": "wWlms8i9dii4", 453 | "outputId": "9a46b84d-4ce2-4469-aabf-0e6bd2fd8609" 454 | }, 455 | "execution_count": 8, 456 | "outputs": [ 457 | { 458 | "output_type": "stream", 459 | "name": "stdout", 460 | "text": [ 461 | "- Convert MCQ Json to Liascript Markdown.\n", 462 | "- Collating course content.\n", 463 | "- Forcing file download.\n" 464 | ] 465 | }, 466 | { 467 | "output_type": "display_data", 468 | "data": { 469 | "text/plain": [ 470 | "" 471 | ], 472 | "application/javascript": [ 473 | "\n", 474 | " async function download(id, filename, size) {\n", 475 | " if (!google.colab.kernel.accessAllowed) {\n", 476 | " return;\n", 477 | " }\n", 478 | " const div = document.createElement('div');\n", 479 | " const label = document.createElement('label');\n", 480 | " label.textContent = `Downloading \"${filename}\": `;\n", 481 | " div.appendChild(label);\n", 482 | " const progress = document.createElement('progress');\n", 483 | " progress.max = size;\n", 484 | " div.appendChild(progress);\n", 485 | " document.body.appendChild(div);\n", 486 | "\n", 487 | " const buffers = [];\n", 488 | " let downloaded = 0;\n", 489 | "\n", 490 | " const channel = await google.colab.kernel.comms.open(id);\n", 491 | " // Send a message to notify the kernel that we're ready.\n", 492 | " channel.send({})\n", 493 | "\n", 494 | " for await (const message of channel.messages) {\n", 495 | " // Send a message to notify the kernel that we're ready.\n", 496 | " channel.send({})\n", 497 | " if (message.buffers) {\n", 498 | " for (const buffer of message.buffers) {\n", 499 | " buffers.push(buffer);\n", 500 | " downloaded += buffer.byteLength;\n", 501 | " progress.value = downloaded;\n", 502 | " }\n", 503 | " }\n", 504 | " }\n", 505 | " const blob = new Blob(buffers, {type: 'application/binary'});\n", 506 | " const a = document.createElement('a');\n", 507 | " a.href = window.URL.createObjectURL(blob);\n", 508 | " a.download = filename;\n", 509 | " div.appendChild(a);\n", 510 | " a.click();\n", 511 | " div.remove();\n", 512 | " }\n", 513 | " " 514 | ] 515 | }, 516 | "metadata": {} 517 | }, 518 | { 519 | "output_type": "display_data", 520 | "data": { 521 | "text/plain": [ 522 | "" 523 | ], 524 | "application/javascript": [ 525 | "download(\"download_dc812d9b-5c42-4817-8f17-6a6f6a428b27\", \"DesignThinking_Course.md\", 36749)" 526 | ] 527 | }, 528 | "metadata": {} 529 | }, 530 | { 531 | "output_type": "stream", 532 | "name": "stdout", 533 | "text": [ 534 | "- If the file does not download, click on the Folder on the left and you will be able to download manually.\n" 535 | ] 536 | } 537 | ] 538 | }, 539 | { 540 | "cell_type": "markdown", 541 | "source": [ 542 | "## What to do next?\n", 543 | "\n", 544 | "- Place the markdown (.md) file on github and then view using the [Liascript Viewer](https://liascript.github.io/)\n", 545 | "OR\n", 546 | "- Copy the markdown content into the [Liascript LiveEditor](https://liascript.github.io/LiveEditor/) for editing and previewing." 547 | ], 548 | "metadata": { 549 | "id": "6sPrnraI2Nei" 550 | } 551 | } 552 | ] 553 | } -------------------------------------------------------------------------------- /example_courses/DesignThinking_Course_V1.md: -------------------------------------------------------------------------------- 1 | 2 | 15 | # Design Thinking 16 | 17 | > This course is completely generated by Eduweaver (using ChatGPT) in Liascript Markdown format. 18 | > Please verify the content before publishing the course. 19 | 20 | 21 | In this course the following content will be covered: 22 | 23 | - Introduction to Design Thinking 24 | An overview of what design thinking is, its origin, and its importance in the field of education. 25 | 26 | - The Five Stages of Design Thinking 27 | Detailed exploration of the five stages of design thinking: empathize, define, ideate, prototype, and test. 28 | 29 | - Applying Empathy in Education 30 | How to apply empathy in the context of education, understanding students' needs, and how it influences design thinking. 31 | 32 | - Defining Problems in the Educational Context 33 | Techniques for defining problems in education, and how a well-defined problem sets the stage for effective design thinking. 34 | 35 | - Idea Generation and Integration 36 | Methods for generating ideas in the context of design thinking and techniques for integrating these ideas to create effective educational solutions. 37 | 38 | - Prototyping in the Educational Context 39 | How to create prototypes of educational solutions, and how this stage contributes to the design thinking process. 40 | 41 | - Testing and Iteration in Education 42 | Understanding the importance of testing and iteration in design thinking, and how these concepts apply to the educational field. 43 | 44 | - Case Study: Design Thinking in Practice 45 | Review of real-world examples of design thinking applied in an educational context, reinforcing the concepts learned in previous sections. 46 | 47 | ## Introduction to Design Thinking 48 | 49 | Design thinking is a problem-solving approach that involves empathy, experimentation, and iteration. It is often used in fields such as product design and business strategy, but it can also be incredibly valuable in the field of education. 50 | 51 | ### **What is Design Thinking?** 52 | 53 | Design thinking is a methodology used to solve complex problems and find desirable solutions. It draws upon logic, imagination, intuition, and systematic reasoning to explore the possibilities of what could be and to create desired outcomes that benefit the end user. It involves a five-phase process: empathize, define, ideate, prototype, and test. 54 | 55 | ### **Origins of Design Thinking** 56 | 57 | Design thinking has its roots in the field of architecture and industrial design in the 1960s. It was further developed in the 1990s by IDEO, a global design company, and the Hasso Plattner Institute of Design at Stanford, also known as the d.school. 58 | 59 | ### **Importance of Design Thinking in Education** 60 | 61 | In the field of education, design thinking can offer a new perspective on how to approach teaching and learning. It encourages educators to think beyond the traditional boundaries of their disciplines and to consider the needs of their students first. 62 | 63 | Design thinking can be used to redesign classroom environments, curriculum, and teaching practices in order to better meet the needs of today's learners. It can also be utilized to solve systemic issues in education, such as achievement gaps and resource inequity. 64 | 65 | Here are a few reasons why design thinking is important in education: 66 | 67 | 1. **Student-Centered:** Design thinking puts the student at the center of the learning process. This approach encourages educators to consider the needs, experiences, and perspectives of their students in order to create more effective learning experiences. 68 | 69 | 2. **Creativity and Innovation:** Design thinking fosters creativity and innovation, skills that are increasingly important in today's fast-paced, technology-driven world. 70 | 71 | 3. **Collaboration:** The process of design thinking encourages collaboration among students and between students and educators. This not only enhances learning, but also helps students develop important social and emotional skills. 72 | 73 | 4. **Problem-Solving:** Design thinking is fundamentally about solving problems. It encourages students to approach problems with a can-do attitude and to see challenges as opportunities for learning and growth. 74 | 75 | **Additional Links** 76 | 77 | For more information, you can refer to these Wikipedia articles on [Design Thinking](https://en.wikipedia.org/wiki/Design_thinking) and [Design-Based Learning](https://en.wikipedia.org/wiki/Design-based_learning). 78 | 79 | ### Quiz Questions 80 | 81 | What is Design Thinking? 82 | 83 | [( )] A linear problem-solving process 84 | [(X)] A creative, user-centered problem-solving method 85 | [( )] A rigid, structured approach to innovation 86 | 87 | Where did Design Thinking originate? 88 | 89 | [( )] IBM 90 | [(X)] IDEO and Stanford University 91 | [( )] Harvard University 92 | 93 | Which of the following are key stages in the Design Thinking process? 94 | 95 | [[X]] Empathize 96 | [[ ]] Analyze 97 | [[X]] Ideate 98 | [[X]] Implement 99 | 100 | Why is Design Thinking important in the field of education? 101 | 102 | [( )] It provides a rigid curriculum structure 103 | [(X)] It promotes active learning and problem-solving skills 104 | [( )] It reduces the need for classroom interaction 105 | 106 | Which of the following are benefits of implementing Design Thinking in education? 107 | 108 | [[X]] Enhances creativity and innovation among students 109 | [[ ]] Promotes rote learning 110 | [[X]] Encourages empathy and understanding of user needs 111 | [[ ]] Reduces collaboration and teamwork 112 | 113 | 114 | ## The Five Stages of Design Thinking 115 | 116 | Design thinking is a process that encourages empathy, creativity, and testing to solve problems. It is widely used across industries to create user-focused solutions. The process is divided into five stages: Empathize, Define, Ideate, Prototype, and Test. 117 | 118 | **Empathize** 119 | 120 | The first stage involves gaining an empathetic understanding of the problem at hand. This means understanding the needs, desires, and objectives of those who are facing the problem. This phase involves conducting interviews, observing, and interacting with people to gain a deeper personal understanding of the issues involved. 121 | 122 | **Define** 123 | 124 | In the Define stage, we collate all the information we have gathered during the Empathize stage. We analyze our observations and synthesize them to define the core problems that we have identified. This stage involves making sense of the information, identifying patterns, and drawing insights. 125 | 126 | **Ideate** 127 | 128 | The Ideate stage is where we start to generate solutions. We have a clear understanding of the problem from the Empathize and Define stages, and now we can start to 'think outside the box' to identify new solutions to the problem. Techniques such as brainstorming, mind mapping, and storyboarding can be used in this phase. 129 | 130 | **Prototype** 131 | 132 | The Prototype stage is the experimental phase. The aim is to identify the best possible solution for each of the problems identified during the Define stage. This is an iterative stage, with the creation of multiple drafts of solutions, and then narrowing down to the best. 133 | 134 | **Test** 135 | 136 | In the Test stage, the final solution(s) are tested within the group it is intended for. This is the final stage of the model but, in an iterative process such as design thinking, the results generated during the testing phase are often used to redefine one or more problems. 137 | 138 | **Quiz** 139 | 140 | 1. Which stage involves brainstorming and mind mapping? 141 | a. Empathize 142 | b. Define 143 | c. Ideate 144 | d. Prototype 145 | 146 | 2. In which stage are the final solutions tested? 147 | a. Empathize 148 | b. Define 149 | c. Ideate 150 | d. Test 151 | 152 | **Learning Activity** 153 | 154 | Try to apply these five stages of design thinking in a project or problem you're currently facing. Write down your experiences and observations at each stage. 155 | 156 | **Additional Links** 157 | 158 | - [Design thinking on Wikipedia](https://en.wikipedia.org/wiki/Design_thinking) 159 | 160 | Note: The five stages of Design Thinking provide a solution-based approach to solving problems. It is not a linear process, the stages do not have to follow any specific order and they can often occur simultaneously and be repeated. 161 | 162 | ### Quiz Questions 163 | 164 | What is the first stage in the Design Thinking process? 165 | 166 | [( )] Define 167 | [(X)] Empathize 168 | [( )] Ideate 169 | [( )] Prototype 170 | 171 | Which stages of Design Thinking involve generating solutions and building prototypes? 172 | 173 | [[ ]] Empathize and Define 174 | [[X]] Ideate and Prototype 175 | [[ ]] Test and Empathize 176 | [[ ]] Define and Test 177 | 178 | What is the primary focus of the 'Empathize' stage in Design Thinking? 179 | 180 | [( )] Developing a hypothesis 181 | [(X)] Understanding the user's needs 182 | [( )] Creating a prototype 183 | [( )] Testing the prototype 184 | 185 | In the 'Test' stage, what is a key activity? 186 | 187 | [( )] Generating a wide range of ideas 188 | [( )] Building a physical model 189 | [(X)] Gathering user feedback on the prototype 190 | [( )] Defining the problem statement 191 | 192 | Which stages can be repeated multiple times in the design thinking process? 193 | 194 | [[ ]] Empathize 195 | [[ ]] Define 196 | [[X]] Ideate 197 | [[X]] Prototype 198 | [[X]] Test 199 | 200 | 201 | ## Applying Empathy in Education 202 | 203 | Empathy, simply defined, is the ability to understand and share the feelings of others. In education, empathy plays a pivotal role in creating an environment that is responsive and supportive of student needs. By applying empathy, educators can design learning experiences that resonate with students, fostering engagement and enhancing learning outcomes. 204 | 205 | ### **Understanding Empathy** 206 | 207 | Empathy involves two key elements: emotional empathy and cognitive empathy. Emotional empathy refers to the ability to share another person's feelings, while cognitive empathy involves understanding someone else's perspective or mental state. 208 | 209 | In the context of education, empathy means understanding the unique situations, backgrounds, and learning styles of students. It's about seeing the world through the students' eyes and tailoring your teaching approach to meet their specific needs. 210 | 211 | ### **Applying Empathy in Education** 212 | 213 | Empathy can be applied in education through a variety of strategies: 214 | 215 | 1. **Active Listening**: Listen to your students. Understand their challenges, fears, and aspirations. This will help you create an educational experience that addresses their needs. 216 | 217 | 2. **Personalized Learning**: Design learning experiences tailored to each student's learning style and pace. This could involve different teaching methodologies, learning resources, or assessment strategies. 218 | 219 | 3. **Emotionally Supportive Environment**: Create a safe and supportive learning environment where students feel comfortable sharing their thoughts and feelings. 220 | 221 | 4. **Feedback**: Regularly seek and incorporate feedback from students. This not only helps improve your teaching but also shows your students that their voices matter. 222 | 223 | ### **Empathy and Design Thinking** 224 | 225 | Empathy is the first stage of the Design Thinking process, which involves understanding the needs, thoughts, emotions, and motivations of the people for whom you're designing. In education, this means understanding the students—their needs, their motivations, their learning styles, and their challenges. 226 | 227 | By empathizing with students, educators can design more effective learning experiences. It helps identify problems that may not be apparent on the surface and generate innovative solutions tailored to the students' needs. 228 | 229 | ### **Empathy in Action** 230 | 231 | Consider a scenario where a teacher notices a student struggling with a particular concept. Instead of simply re-explaining the concept in the same way, the teacher takes the time to understand the student's perspective—why is this concept difficult for the student? What is the student's learning style? What are the student's interests? With this understanding, the teacher can create a customized learning experience that resonates with the student, making the concept easier to grasp. 232 | 233 | ### **Conclusion** 234 | 235 | Empathy is not just about understanding students' feelings—it's about using that understanding to design better educational experiences. By applying empathy, educators can create a learning environment that is engaging, supportive, and tailored to the needs of each student. 236 | 237 | **Additional Links** 238 | - [Empathy on Wikipedia](https://en.wikipedia.org/wiki/Empathy) 239 | - [Design Thinking on Wikipedia](https://en.wikipedia.org/wiki/Design_thinking) 240 | 241 | ### Quiz Questions 242 | 243 | What is the role of empathy in design thinking within the context of education? 244 | 245 | [( )] To understand the emotional state of the teacher 246 | [(X)] To understand and address students' needs 247 | [( )] To make the learning process easier for the educator 248 | [( )] None of the above 249 | 250 | Which of the following are benefits of applying empathy in education? 251 | 252 | [[X]] Enhanced teacher-student relationship 253 | [[X]] Improved student engagement 254 | [[X]] Increased academic performance 255 | [[ ]] Reduced classroom management issues 256 | 257 | How does empathy influence the design thinking process in education? 258 | 259 | [( )] It helps in creating a more inclusive curriculum 260 | [(X)] It helps in designing more effective teaching strategies 261 | [( )] It reduces the time needed for lesson planning 262 | [( )] It has no influence on design thinking 263 | 264 | What is the first step in applying empathy within the design thinking process in education? 265 | 266 | [( )] Implementing the solution 267 | [(X)] Understanding students' needs and perspectives 268 | [( )] Defining the problem 269 | [( )] Generating ideas 270 | 271 | Which of the following are techniques for applying empathy in education? 272 | 273 | [[X]] Observing student behaviors 274 | [[X]] Engaging with students in conversation 275 | [[ ]] Ignoring students' emotional responses 276 | [[ ]] Relying only on academic performance data 277 | 278 | 279 | ## Defining Problems in the Educational Context 280 | 281 | When it comes to implementing design thinking in an educational setting, the first crucial step is to define the problem that needs to be addressed. A well-defined problem can act as a springboard, enabling educators to develop innovative solutions and strategies that directly address the issue at hand. 282 | 283 | **Understanding the Problem** 284 | 285 | The first step to defining the problem is understanding it. This involves conducting a thorough analysis of the issue, its causes, and effects. In an educational setting, this could mean analyzing student performance data, conducting surveys or interviews with students and teachers, or observing classroom activities. 286 | 287 | **Framing the Problem** 288 | 289 | Once the problem has been understood, it needs to be framed in a way that makes it actionable. A well-framed problem is one that clearly states the current situation, the desired outcome, and the obstacles that need to be overcome. For example, instead of saying "students are not engaged in class", a well-framed problem might be "How might we increase student engagement during mathematics lessons in order to improve their performance on standardized tests?" 290 | 291 | **Problem Statement** 292 | 293 | The problem statement is a concise, clear description of the issue that needs to be addressed. It should be specific, measurable, achievable, relevant, and time-bound (SMART). An example of a problem statement could be: "Our goal is to increase the average mathematics test score of 8th-grade students from 70% to 80% by the end of the academic year." 294 | 295 | **Importance of Well-Defined Problems** 296 | 297 | A well-defined problem provides focus and direction for the design thinking process. It helps educators identify the key issues that need to be addressed and guides the development of effective solutions. Moreover, a well-defined problem can help generate buy-in from stakeholders, as it clearly articulates the need for change. 298 | 299 | **Practice Activity** 300 | 301 | Activity: Write a problem statement for a challenge you are currently facing in your educational setting. Remember to make it specific, measurable, achievable, relevant, and time-bound. 302 | 303 | **Quiz** 304 | 305 | 1. What is the first step in defining a problem in an educational setting? 306 | 2. What is the importance of a well-framed problem? 307 | 3. What are the characteristics of a good problem statement? 308 | 309 | **Additional Links** 310 | 311 | For more information on problem definition and its role in design thinking, you can refer to the following articles on Wikipedia: 312 | 313 | - [Problem solving](https://en.wikipedia.org/wiki/Problem_solving) 314 | - [Problem statement](https://en.wikipedia.org/wiki/Problem_statement) 315 | - [Design thinking](https://en.wikipedia.org/wiki/Design_thinking) 316 | 317 | ### Quiz Questions 318 | 319 | What is the first step in defining problems in the educational context using design thinking? 320 | 321 | [( )] Generating solutions 322 | [(X)] Empathizing with the stakeholders 323 | [( )] Brainstorming 324 | [( )] Prototyping 325 | 326 | Why is problem definition crucial in design thinking? 327 | 328 | [( )] It helps to understand the stakeholders 329 | [(X)] It sets the stage for effective solution generation 330 | [( )] It is a mandatory rule in design thinking 331 | [( )] It is easier to define problems than solutions 332 | 333 | Which of the following are techniques used in defining problems in the educational context? 334 | 335 | [[X]] Empathy maps 336 | [[X]] User journey maps 337 | [[ ]] Brainstorming 338 | [[ ]] Prototyping 339 | 340 | What does a well-defined problem offer in the context of design thinking? 341 | 342 | [( )] A clear solution 343 | [(X)] Understanding of the users' needs 344 | [( )] A list of potential stakeholders 345 | [( )] A roadmap to follow 346 | 347 | Which stage in design thinking involves problem definition? 348 | 349 | [( )] Empathize 350 | [(X)] Define 351 | [( )] Ideate 352 | [( )] Prototype 353 | 354 | 355 | ## Idea Generation and Integration 356 | 357 | In the realm of design thinking, the ability to generate and integrate ideas effectively is paramount. This is especially true for educators, who often need to create innovative and engaging learning solutions. 358 | 359 | ### **Idea Generation** 360 | 361 | Idea generation, also known as ideation, is the process of generating, developing and communicating new ideas. This involves both process and content innovations. In the context of design thinking, it's about coming up with as many solutions or ideas as possible, then pushing beyond to come up with even more. 362 | 363 | There are various methods for generating ideas: 364 | 365 | - **Brainstorming**: This is the most common method for ideation. It involves gathering a group of people and having them come up with as many ideas as possible. The goal is to encourage free thinking and welcome any ideas without criticism. 366 | 367 | - **Mind Mapping**: This involves creating a visual representation of your thoughts to explore different ideas. Start with a central concept, and then branch out with related ideas and sub-ideas. 368 | 369 | - **SCAMPER**: This stands for Substitute, Combine, Adapt, Modify, Put to another use, Eliminate, and Rearrange. It's a checklist tool that helps you probe ideas in the brainstorming session. 370 | 371 | ### **Idea Integration** 372 | 373 | Idea integration is about taking the generated ideas and integrating them into a cohesive whole. This is the stage where you take the best ideas from your brainstorming sessions and start to apply them to your problem. 374 | 375 | There are several techniques for integrating ideas: 376 | 377 | - **Affinity Diagrams**: This allows you to categorize your ideas into groups for better understanding and analysis. 378 | 379 | - **Storyboarding**: This technique allows you to visualize how your ideas will work in the real world. It's a way to understand the flow and sequence of your ideas. 380 | 381 | - **Prototyping**: This is a way to get a feel for your product. It's a way of testing your ideas and seeing how they work in practice. 382 | 383 | Remember, the key to successful idea integration is collaboration. Work together as a team, respect everyone's ideas, and strive for a collective solution. 384 | 385 | **Additional Links** 386 | 387 | - [Design Thinking](https://en.wikipedia.org/wiki/Design_thinking) 388 | - [Brainstorming](https://en.wikipedia.org/wiki/Brainstorming) 389 | - [Mind Mapping](https://en.wikipedia.org/wiki/Mind_map) 390 | - [SCAMPER](https://en.wikipedia.org/wiki/SCAMPER) 391 | 392 | ### Quiz Questions 393 | 394 | Which method is NOT typically used for idea generation in design thinking? 395 | 396 | [( )] Brainstorming 397 | [( )] Mind Mapping 398 | [(X)] Financial Accounting 399 | 400 | Which of the following are techniques for integrating ideas in design thinking? (Select all that apply) 401 | 402 | [[X]] Prototyping 403 | [[X]] User Testing 404 | [[ ]] Rapid Manufacturing 405 | 406 | What is the main purpose of idea integration in the context of design thinking? 407 | 408 | [( )] To create a hierarchy of ideas 409 | [(X)] To combine and refine ideas to create effective solutions 410 | [( )] To select the best idea and discard the rest 411 | 412 | Which of the following are common pitfalls during the idea generation phase of design thinking? (Select all that apply) 413 | 414 | [[X]] Restricting ideas too early 415 | [[X]] Ignoring user needs 416 | [[ ]] Generating too many ideas 417 | 418 | What role does prototyping play in the integration of ideas? 419 | 420 | [( )] Prototyping is used to dismiss ideas 421 | [( )] Prototyping is used to present final solutions 422 | [(X)] Prototyping is used to test and refine ideas before final implementation 423 | 424 | 425 | ## Prototyping in the Educational Context 426 | 427 | When it comes to the design thinking process, prototyping holds a significant place. Especially in an educational context, prototyping can be incredibly beneficial. This stage of design thinking involves creating a scaled-down version of a concept or product, often referred to as the prototype. 428 | 429 | **Understanding Prototyping** 430 | 431 | Prototyping is a method used to test ideas, designs, and assumptions about a particular solution or product. It is a preliminary version of the end solution that allows for testing and improving. In the educational context, a prototype could be a new curriculum, a teaching method, a learning tool, or any other educational product or service. 432 | 433 | **Importance of Prototyping** 434 | 435 | Prototyping is important because it allows educators to test their ideas and solutions in a real-world context, gather feedback, and make necessary adjustments before final implementation. This way, it reduces the risk of failure and ensures that the final solution meets the needs of the learners effectively. 436 | 437 | **How to Create Prototypes** 438 | 439 | 1. **Define the Problem**: The first step in creating a prototype is to clearly define the problem that your solution is intended to solve. This might be a gap in students' understanding, a lack of interest in a subject, or a need for a more effective teaching method. 440 | 441 | 2. **Generate Ideas**: Once the problem is clearly defined, brainstorm different solutions. The more ideas generated, the better. 442 | 443 | 3. **Create the Prototype**: Select the most promising idea(s) and develop a simple, low-cost version of the solution. This doesn't have to be a polished, finalized product; it's just a representation of your idea. 444 | 445 | 4. **Test the Prototype**: Implement the prototype in a controlled environment, gather feedback, and observe its effectiveness. 446 | 447 | 5. **Iterate**: Based on the feedback and observations, refine and improve the prototype. This step might need to be repeated multiple times until the prototype meets the desired goals effectively. 448 | 449 | **Learning Activities** 450 | 451 | 1. **Activity 1**: Educators can create a prototype of a new teaching method for a particular subject and test it on a small group of students. 452 | 453 | 2. **Activity 2**: Educators can prototype a new interactive learning tool and gather student feedback on its effectiveness and usability. 454 | 455 | Remember, prototyping is not a one-time process but a cycle of testing and refining. It's an integral part of the design thinking process that ensures the development of effective and efficient educational solutions. 456 | 457 | **Additional Links** 458 | 459 | - [Wikipedia - Prototype](https://en.wikipedia.org/wiki/Prototype) 460 | - [Wikipedia - Design Thinking](https://en.wikipedia.org/wiki/Design_thinking) 461 | 462 | ### Quiz Questions 463 | 464 | What is the primary purpose of creating prototypes in the educational context? 465 | 466 | [( )] To implement the solution immediately 467 | [(X)] To test the solution in a tangible form 468 | [( )] To finalize the design process 469 | [( )] To generate new ideas 470 | 471 | Which of the following are benefits of prototyping in the design thinking process? 472 | 473 | [[X]] Detects design flaws early 474 | [[X]] Helps in understanding users' needs 475 | [[ ]] Reduces the need for user testing 476 | [[X]] Helps to secure funding for the project 477 | 478 | In the context of design thinking, prototypes should be... 479 | 480 | [( )] Perfect and complete 481 | [( )] Expensive and time-consuming 482 | [(X)] Quick and rough 483 | [( )] Designed without user input 484 | 485 | What is the role of user feedback in prototyping? 486 | 487 | [( )] It's not necessary 488 | [(X)] It helps improve the next prototype 489 | [( )] It can be used to market the prototype 490 | [( )] It can be ignored if the designer disagrees 491 | 492 | Which of the following are common tools used in creating prototypes for educational solutions? 493 | 494 | [[X]] Sketching 495 | [[X]] 3D printing 496 | [[X]] Digital software 497 | [[ ]] PowerPoint 498 | 499 | 500 | ## Testing and Iteration in Education 501 | 502 | In the realm of design thinking, two crucial elements that guarantee the success of a design are testing and iteration. This section will provide a comprehensive overview of these concepts, focusing on how they apply to the educational field. 503 | 504 | **Understanding Testing** 505 | 506 | Testing is a crucial stage in the design thinking process. It involves presenting your design to your users and observing their interaction with it. In the context of education, this could be a new teaching method, a learning tool, or a classroom layout. The goal is to gather feedback and insights about its effectiveness and identify areas of improvement. 507 | 508 | For example, a teacher who introduces a new learning game to their students would observe how the students interact with the game, the challenges they face, and their level of engagement. This method enables the teacher to refine the game based on actual user experience, rather than assumptions. 509 | 510 | **Understanding Iteration** 511 | 512 | Iteration, on the other hand, is the repetitive process of improving and refining a design based on the feedback received from testing. In educational settings, this could involve tweaking a teaching method, modifying a learning tool, or rearranging a classroom layout multiple times, testing each version until the optimal design is achieved. 513 | 514 | Iteration is a powerful tool for educators because it allows them to continuously improve their teaching methods and tools based on real-time feedback from their students. It encourages a culture of continuous learning and improvement, which is a core principle of design thinking. 515 | 516 | **The Importance of Testing and Iteration in Education** 517 | 518 | The combination of testing and iteration enables educators to create more effective, efficient, and engaging learning experiences for their students. By testing their designs, they gain a better understanding of their students' needs and challenges. By iterating on their designs, they can continuously improve and adapt their teaching methods and tools to meet these needs more effectively. 519 | 520 | In conclusion, testing and iteration are not only crucial stages in the design thinking process but also powerful tools for enhancing teaching and learning in education. 521 | 522 | **Quiz** 523 | 524 | 1. What is the goal of testing in the design thinking process? 525 | a) To present your design to your users 526 | b) To observe how your users interact with your design 527 | c) To gather feedback and insights about your design's effectiveness 528 | d) All of the above 529 | 530 | 2. How can iteration benefit educators? 531 | a) It allows them to create more effective learning experiences 532 | b) It enables them to adapt their teaching methods based on student feedback 533 | c) It encourages a culture of continuous learning and improvement 534 | d) All of the above 535 | 536 | **Answers** 537 | 1. d) All of the above 538 | 2. d) All of the above 539 | 540 | **Activity** 541 | 542 | Design a simple lesson plan using the concepts of testing and iteration. Test the lesson with a group of students and iterate based on the feedback. Reflect on the changes and improvements made during the process. 543 | 544 | **Additional Links** 545 | 546 | - [Design Thinking](https://en.wikipedia.org/wiki/Design_thinking) 547 | - [Iterative Design](https://en.wikipedia.org/wiki/Iterative_design) 548 | 549 | ### Quiz Questions 550 | 551 | What is the main purpose of testing and iteration in the design thinking process? 552 | 553 | [( )] To finalize the design as quickly as possible 554 | [(X)] To identify and fix problems in the design 555 | [( )] To make the design more aesthetically pleasing 556 | [( )] To reduce the cost of the design 557 | 558 | Which of the following statements about testing and iteration in education are correct? 559 | 560 | [[X]] Iteration allows for continuous improvement in teaching methods 561 | [[ ]] Testing is only necessary at the end of the design process 562 | [[X]] Feedback from testing can be used to improve the learning experience 563 | [[ ]] The testing and iteration process should be skipped in a time-crunched environment 564 | 565 | How does design thinking apply to the educational field? 566 | 567 | [( )] It doesn't, design thinking is only for product development 568 | [( )] It is used to design the layout of the classroom 569 | [(X)] It is used to develop and improve teaching methods and learning experiences 570 | [( )] It is used to design the school building 571 | 572 | What role does feedback play in the testing and iteration process? 573 | 574 | [( )] Feedback is not important in the testing and iteration process 575 | [( )] Feedback is only considered if it is positive 576 | [( )] Feedback is used to validate the final design 577 | [(X)] Feedback is used to identify areas of improvement and make necessary changes 578 | 579 | Which of the following are advantages of incorporating testing and iteration in education? 580 | 581 | [[X]] Improves the quality of teaching and learning 582 | [[ ]] Makes the teaching process more complicated 583 | [[X]] Helps to better understand the needs and preferences of learners 584 | [[ ]] Reduces the need for teacher training 585 | 586 | 587 | ## Case Study: Design Thinking in Practice 588 | 589 | In this section, we will review real-world examples of how design thinking has been applied in the educational context. Throughout these case studies, we aim to reinforce the concepts of design thinking that you have learned in the previous sections. 590 | 591 | **Goals** 592 | 593 | - To understand how design thinking is applied in real-world educational scenarios. 594 | - To reinforce the concepts of design thinking through practical examples. 595 | 596 | **Case Study 1: Redesigning a Classroom Experience** 597 | 598 | A high school in California was facing challenges with student engagement and participation in their history classes. The teachers decided to apply the design thinking process to this problem. They started by empathizing with the students, observing their behaviors, and conducting interviews to understand their experiences in history classes. 599 | 600 | This led to the identification of the problem: the traditional lecture format was not engaging enough for the students. The teachers then ideated on possible solutions, prototyped, and tested them. The final solution involved a flipped classroom model where students would learn the material at home through engaging videos and use class time for discussions and project-based learning. 601 | 602 | The result was a significant increase in student engagement and participation. 603 | 604 | **Case Study 2: Creating a Student-Centered Learning Environment** 605 | 606 | A university in the Midwest was looking to create a more student-centered learning environment. They employed design thinking to understand the students' needs and desires better. 607 | 608 | Through empathy, they discovered that students wanted more practical experience and real-world applications of their studies. They ideated on possible solutions, prototyped, and tested them. The final solution was to incorporate more practical assignments and projects that directly tied to real-world scenarios. 609 | 610 | The result was an increase in student satisfaction and retention rates. 611 | 612 | **Case Study 3: Enhancing Special Education** 613 | 614 | A special education school in New England applied design thinking to improve the learning experience for their students with learning disabilities. They started by empathizing with the students and their parents, understanding their challenges, and needs. 615 | 616 | Through ideation, prototyping, and testing, they developed a personalized learning approach that catered to each student's unique needs and strengths. The result was a more effective learning environment, with students showing significant progress in their learning outcomes. 617 | 618 | **Summary** 619 | 620 | These case studies highlight how design thinking can be effectively applied in an educational context. From improving classroom engagement, creating student-centered learning environments, to enhancing special education, the process of empathizing, defining, ideating, prototyping, and testing has proven to be a valuable tool in education. 621 | 622 | **Additional Links** 623 | 624 | - [Design Thinking on Wikipedia](https://en.wikipedia.org/wiki/Design_thinking) 625 | 626 | Remember, the key to successful design thinking is understanding the users' needs, ideating on potential solutions, prototyping, and testing until a suitable solution is found. 627 | 628 | ### Quiz Questions 629 | 630 | Which of the following is NOT a step in design thinking process? 631 | 632 | [( )] Empathize 633 | [( )] Define 634 | [(X)] Analyze 635 | [( )] Ideate 636 | [( )] Prototype 637 | 638 | In the context of education, how can design thinking be applied? 639 | 640 | [[X]] Curriculum Design 641 | [[X]] Student Assessment 642 | [[ ]] Building Infrastructure 643 | [[X]] Teaching Methodologies 644 | 645 | Which stage of the design thinking process involves generating a wide range of possible solutions? 646 | 647 | [( )] Empathize 648 | [( )] Define 649 | [(X)] Ideate 650 | [( )] Prototype 651 | [( )] Test 652 | 653 | Which of the following are essential skills for design thinking in education? 654 | 655 | [[X]] Collaboration 656 | [[X]] Creativity 657 | [[ ]] Quantitative Analysis 658 | [[X]] Empathy 659 | 660 | Which stage of the design thinking process involves understanding the user's needs and problems? 661 | 662 | [(X)] Empathize 663 | [( )] Define 664 | [( )] Ideate 665 | [( )] Prototype 666 | [( )] Test 667 | 668 | 669 | ## Project Ideas 670 | 671 | **Project 1: Design Thinking in Curriculum Design** 672 | 673 | The first project idea is to apply design thinking principles in crafting a curriculum for a specific subject. This project will allow educators to understand the relevance of design thinking in the field of education and how it can be used to enhance the learning experience of students. 674 | 675 | To start, identify a subject or topic that you'll be creating a curriculum for. Then, go through the design thinking process to design this curriculum. The process includes empathizing with the learners, defining their needs and challenges, ideating possible solutions, creating a prototype, and testing it. 676 | 677 | Create a document detailing the entire process, including the insights gained from empathizing with the learners, the defined needs and challenges, the brainstormed ideas for solutions, the prototype curriculum, and the feedback received when testing the prototype. 678 | 679 | **Project 2: Creating an Interactive Learning Tool** 680 | 681 | The second project idea revolves around the creation of an interactive learning tool using design thinking principles. This project will allow educators to develop a tangible product that can be used to facilitate learning. 682 | 683 | First, identify the learning objectives and the target learners. Then, apply the design thinking process to create this learning tool. This involves empathizing with the learners, defining their needs and challenges, ideating possible solutions, creating a prototype, and testing it. 684 | 685 | Create a document detailing the entire process, including the insights gained from empathizing with the learners, the defined needs and challenges, the brainstormed ideas for solutions, the prototype learning tool, and the feedback received when testing the prototype. 686 | 687 | **Project 3: Improving School Processes through Design Thinking** 688 | 689 | The third project idea is to apply design thinking in improving a particular school process. This project will allow educators to use design thinking in solving real-life problems in the educational setting. 690 | 691 | Choose a process in your school that you think needs improvement. It could be anything from student enrollment, classroom management, to communication systems. Then, apply the design thinking process to come up with an improved version of this process. 692 | 693 | Create a document detailing the entire process, including the insights gained from empathizing with the people involved in the process, the defined needs and challenges, the brainstormed ideas for solutions, the prototype process, and the feedback received when testing the prototype. 694 | 695 | --------------------------------------------------------------------------------