VIEWS: 0 PAGES: 10 CATEGORY: Guides POSTED ON: 8/9/2010 Public Domain
[L6] Demonstrate an understanding of the distinguishing concepts of algorithms and programming languages from Computer Science and Software Engineering o Understand the concept of an algorithm (vs. a program), and that there are different costs for different algorithms for the same task. This could be illustrated with searching (e.g. linear vs binary) or other tasks that have contrasting algorithms. Algorithm Theory Daniel Ángel Jiménez has lecture notes in his course Analysis of Algorithms at http://www.cs.utsa.edu/~dj/cs3343/ See lecture 9 in particular on the limits of sorting algorithms at http://www.cs.utsa.edu/~dj/cs3343/lecture9.html Online Guides An online presentation (runs in Internet Explorer only) on algorithms from Advanced Computing section of AS Computing developed by King George V School at http://www.kgv.net/ict-ks5/AS/Algorithms_files/frame.htm Joe Carthy offers a very clear explanation of Complexity Theory in his course handout in Comparing Algorithms: Complexity Theory at http://www.csi.ucd.ie/staff/jcarthy/home/FirstYear/Comp1001-L13.pdf A tutorial on algorithms and it’s history by many developers can be found at http://www.cs.usask.ca/content/resources/tutorials/csconcepts/2001_5/index.html which discusses many popular algorithms and also a quiz at the end of it for testing purposes. A complete module on algorithms by Virginia Tech CS department is at http://courses.cs.vt.edu/~csonline/Algorithms/Lessons/index.html Sorting and searching algorithms and measuring time complexity are discussed with theory and exercises at David Schmidt’s course in Data Structures at the locations below: 1. Searching and Sorting 2. Time complexity measures Nishant Gupta has lessons on Curriki in sorting algorithms and how to differentiate them on the basis of time complexity, running time, space consumption, etc. http://www.cosc.canterbury.ac.nz/tim.bell/dt/ 10 December 2009 Students can easily remember and memorize these things using the notes file attached inside this lesson. View here. Laurent Haan has a good clear tutorial in Introduction to Algorithm Complexity at http://www.progressive-coding.com/tutorial.php?id=1 CS Animated has a section on Algorithms where they offer short presentations for some popular algorithms at http://www.csanimated.com/category.php?c=Algorithms ComputingStudents has sections with brief explanation of the following topics at locations below: 1. Algorithm Analysis and Pseudocode 2. Big-O Notation 3. Binary Search 4. Selection Sort 5. Insertion Sort 6. Bubble Sort 7. Quick Sort 8. Merge Sort Visual Simulations & Demonstrations Sorting Algorithm Animation System (SAAS) features a very clear comparison of sort algorithms using animation at http://www.mundayweb.com/progs/applets/saas/. This animation can also be downloaded for offline use at any time. Several Java Applets that can be used to demonstrate different sort algorithms are collated by Henry can be viewed at http://home.westman.wave.ca/~rhenry/sort/ A good site that explains sort algorithms and also lets you do the sort yourself with instructions on each step of the algorithm is at http://mathsite.math.berkeley.edu/sorting/brick.html. Students can use this site to get guided on sort algorithms step-by-step. Demonstrate both Linear and Binary searches using visual simulation at the Java Applets Centre developed by R Mukundan at http://www.cosc.canterbury.ac.nz/mukundan/dsal/appldsal.html To visually demonstrate the concept of some popular algorithms for sorting data, see the following website developed by David Martin at http://www.sorting- algorithms.com/ http://www.cosc.canterbury.ac.nz/tim.bell/dt/ 10 December 2009 A really cool way to visualise algorithms is using different sound frequencies that need ordering or sorting, an idea by Ryan Compton at http://www.math.ucla.edu/~rcompton/musical_sorting_algorithms/musical_sorting _algorithms.html Canvas visualisation of algorithms is another way to visualise sorting algorithms by Jacob Seidelin at http://www.nihilogic.dk/labs/sorting_visualization/ Teachers could print these out for different search parameters for different sort algorithms and hang these canvases as posters in the classroom. These could then be used in quizzing the students on specific algorithms or comparing sorts side by side. Another visual or timed view of sorting algorithms developed by David Eck can be seen at http://math.hws.edu/TMCM/java/xSortLab/index.html Thomas Baudel has visualisations of sort algorithms at http://thomas.baudel.name/Visualisation/VisuTri/index.html Fachhochschule Flensburg has a page dedicated to sequential and parallel sorting algorithms at http://www.iti.fh- flensburg.de/lang/algorithmen/sortieren/algoen.htm. See in particular the Sorting Contest that compares some sort algorithms. Classroom Activities & Games CS Unplugged Activity 6 - Battleships: Searching Algorithms CS Unplugged Activity 7 - Sorting Algorithms examines selection sort, quick sort, insertion sort, bubble sort and merge sort. CS4FN has the following online activities/articles that demonstrates concepts in algorithms and complexity: 1. Swap Puzzle (Interactive Activity): Algorithms is also about devising efficient ways of doing things. Two different ways of doing something could both guarantee to get the job done but one may be quicker than the other and so better. 2. Bean Counting 3. Non-reversing Mirror 4. The cure that just folds away The Royal Institution UK and Microsoft Research together have produced activities in sorting algorithms for the classroom at http://www.rigb.org/christmaslectures08/html/activities/get-it-sorted.pdf#page=1 http://www.cosc.canterbury.ac.nz/tim.bell/dt/ 10 December 2009 See also, games and tryouts related to these lectures at interactive website at http://www.rigb.org/christmaslectures08/ MATHmaniaCS Lesson 7 – Searching MATHmaniaCS Lesson 8 - Sorting Computing Science Inside Workshop (Requires Registration) – Algorithm Development A Kinaesthetic Learning Activity (KLA) activity developed by Paul A. G. Sivilotti to introduce CS concepts to high school girls is Parallel Programming: "Parallel Programs are Fast" at http://www.cse.ohio- state.edu/~paolo/outreach/FESC02/parallel.pdf. This activity compares sort algorithms such as Bubble Sort, Even-Odd Transposition Sort and Radix Sort. Steve Wolfman has a KLA activity for students to invent and analyze for counting the number of people in the class and implement at least one on the spot. After the exercise, students will understand that many different algorithms may address a single problem. They will recognize that there may be tradeoffs between speed, accuracy, and accuracy guarantees (such as upper and lower bounds). View here at http://people.cs.ubc.ca/~kla/index.php?page=Counting_the_Class Barbara Ryder has some activities for getting students to develop algorithms for different tasks below: 1. Students first think how they would search for a song on an MP3 player, and then they learn about binary search. Download here. 2. Students think of an algorithm to shelve books in a library, and calculate the cost to sort books using the algorithm. Download here. Suzanne Alejandre has an activity and an applet called Traffic Jam which is a problem solving activity that requires you to develop an algorithm at http://mathforum.org/alejandre/frisbie/jam.html Susan Rodger has some exercises for getting students to develop algorithms for different tasks below: 1. Students work on a sudoku puzzle and a maze puzzle, and figure out algorithms to solve them. Download here. 2. Students work on algorithms for making S'mores, and sorting words. Download here. 3. Students discuss how to solve a Jumble puzzle within their groups and then write an algorithm for solving them. Download here. http://www.cosc.canterbury.ac.nz/tim.bell/dt/ 10 December 2009 Videos Watch a Schoolhouse Rock-style YouTube video that teaches the difference between two sorting algorithms---selection sort and quick sort. Created for use in an introductory computer science class at Rutgers University (NJ, USA) Royce Neagle has videos on the two following related topics below: 1. Hill Climbing: Using searching to solve problems with many solutions, some of which are better than others. 2. Optimisation: Techniques used to solve very hard problems with no quick and easy answer. MIT Open Courseware in Electrical Engineering and Computer Science has the following relevant lectures by Eric Grimson and John Guttag. The lectures are available on their archives in MP4 format and also on YouTube. 1. Complexity; log, linear, quadratic, exponential algorithms 2. Binary search, bubble and selection sorts http://www.cosc.canterbury.ac.nz/tim.bell/dt/ 10 December 2009 [L6] Demonstrate an understanding of the distinguishing concepts of algorithms and programming languages from Computer Science and Software Engineering o Understand the Programming Language concepts of high level languages, machine languages, interpretation and compilation, and the idea that programming languages are precise. Programming Language Concepts Online Guides An online presentation (runs in Internet Explorer only) on the brief history of programming languages from Advanced Computing section of A2 Computing developed by King George V School at http://www.kgv.net/ict- ks5/A2/Programming%20Languages_files/frame.htm A short introduction to algorithms and programming language concepts that developed over time is “Intro to OOP and Algorithms” by Escuela Campo Alegre school at http://www.eca.com.ve/hsclassweb/cs/javac/notes/ib_cs1_07/notes_08- 17-07.pdf A mini website dedicated to programming languages can be found at http://www.teach- ict.com/gcse/software/programming_languages/miniweb/index.htm www.theteacher.info has a few free chapters from their textbook in A Level Computing with some online tests for the modules at locations below: Low Level Languages Available tests: Test 1, Test 2, Test 3, Test 4, Test 5, Test 6, Test 7 Classroom Activities & Games CS Unplugged Activity 12 – Programming Languages A Kinaesthetic Learning Activity (KLA) activity developed by Paul A. G. Sivilotti to introduce CS concepts to high school girls is Software Engineering: "Mars Pathfinder" at http://www.cse.ohio-state.edu/~paolo/outreach/FESC02/se.pdf. This activity illustrates the fact that a program is a series of instructions that tells a computer exactly what to do. So, a computer scientist must design the program carefully, to be http://www.cosc.canterbury.ac.nz/tim.bell/dt/ 10 December 2009 sure that the computer will do the right thing. Please note: The above activity requires the use of a Lego Rover robot. A blog with interesting post and comments on teaching functional programming to kids, and especially using the familiar context of a Dr Seuss story to introduce the idea. A poster that can used as a simple activity to guess which programming language called ‘What am I’ in the classroom by Teach ICT UK can be downloaded from http://www.teach- ict.com/gcse/software/programming_languages/starters_plenaries/what%20am%20 I%20_%20programminglanguage.pdf A lesson by Deb Sweeney on developing an algorithm for making a sandwich. Students will learn the importance of written communication skills and sequential thinking while trying to write a computer program on how to make a peanut butter and jelly sandwich. View at http://www.eduref.org/cgi- bin/printlessons.cgi/Virtual/Lessons/Computer_Science/EDT0200.html Logic Puzzles were developed as an extension activity at ROCS, Purdue University to teach students logical thinking in order to solve puzzles. Download at http://www.cs.purdue.edu/external_relations/k- 12_outreach/programs/ROCS/LogicPuzzles.doc Kinaesthetic Learning Activities that are designed to promote logical thinking and learning logical approaches to programming by Susan Horwitz are below: 1. Students carefully describe how to make a jelly sandwich to learn careful specification of an algorithm. Download. 2. Students work through logic problems, involving weighing coins, writing logical code in Alice, and Boolean conditions game. Download. 3. Students work on Sudoku to learn logical thinking. Download. 4. Students do two different logic puzzles to gain experience in logical thinking. Download. 5. Students work through a logic problem to balance coins. Download. 6. Students solve a logic problem involving a prisoner. Download. 7. Students solve logic problems by arranging toothpicks. Download. 8. Students work through a logic problem involving a farmer and animals crossing a river. Download. 9. Time is of Essence Logical Problem Download. 10. Students solve a check puzzle to swap places of knights. Download. 11. Elementary my Dear Watson! Download. 12. Hats and Snacks Logical Problem! Download. 13. Students play a logic game using paper clips. Download. http://www.cosc.canterbury.ac.nz/tim.bell/dt/ 10 December 2009 14. Students play a logic game in math and try to find a winning strategy. Download. 15. Students play a logic game, in which they pick chocolates, arranged in a triangular shape and the person who picks the last chocolate win. Download. 16. Island Quiz Logical Problem. Download. 17. Robots and Teamwork gets students working together in teams to build a robot. Download. Kinaesthetic Learning Activities that are designed to promote logical thinking and learning logical approaches to programming by Barbara Ryder are below: 1. Students find out the order of height and age of three brothers based on three statements. Download. 2. Students work find out colors and messages of three cakes based on three statements. Download. 3. Students do find the bad coin from eight coins by weighing them. Download. 4. Students write a program to convert a stack of pancakes to be in size order, by flipping the top pancakes as a unit. Download. 5. Students find out which of her three friends Joanna visited in which month based on three clues. Download. 6. Students determine which category a person belongs to based on his/her statement. Download. 7. Students swap places of two blue knights with two red knights. Download. 8. Decide whether a person is a knight or a knave based on what he/she says. Download. 9. Students solve a check puzzle to swap places of knights. Download. 10. Students figure out how to get different water measurements with a five-litre and a three-litre bottle. Download. 11. Students figure out which Muses serve which goddess based on their statements. Download. 12. Students answer four paradox questions. Download. 13. Students distribute 44 silver dollars into 10 pockets. Download. 14. Students Figure out the right casket based on the statement on caskets. Download. 15. Three logic questions on reunion, barrels and fruit. Download. 16. Three logic questions on rope, dollar, and deal. Download. 17. Students figure out an algorithm to guarantee two skydivers will meet one another. Download. To demonstrate programming is about a set of instructions towards completing a common activity, include the lesson from Instructional Day 10-11 on pages 37-38 of http://csta.acm.org/Curriculum/sub/CurrFiles/ExploringCSv2.pdf A lesson plan ‘Computers only do what they are told’ by Daniel Swomley from Hanover School, Colorado Springs, USA is an exercise on giving directions precisely at http://www.cosc.canterbury.ac.nz/tim.bell/dt/ 10 December 2009 http://www.eduref.org/cgi- bin/printlessons.cgi/Virtual/Lessons/Computer_Science/EDT0020.html Some lesson plans that demonstrate how to program a set of simple instructions are at http://www.abbotswood.hants.sch.uk/planning/y4logo06.htm To introduce students to the concept of Fuzzy Logic, there is an activity designed by PBS Teachers which demonstrates fuzzy systems use a series of simple rules, based upon experience, much as the human brain does. Download the activity at http://www.pbs.org/teachers/connect/resources/2218/preview/ To demonstrate the need to formalise everyday language, do some exercises for everyday tasks as a precursor to learning Pseudocode later. Some exercise ideas are below: Brainstorm with a group of students the steps they will need to perform everyday tasks such as below: 1. Change a broken light bulb 2. Close the largest window in the room that has 3 windows of different sizes 3. Unlock a cupboard using a bunch of keys 4. Fetch mail from the letterbox outside the house Discuss: 1. Steps that were easy overlooked 2. Decision statements 3. Looping/Repetition for a number of times 4. Looping until a rogue value is reached 5. Need to formalise the language to have some consistency Now is a good time to emphasize the need for more precision particularly in Mathematical tasks. Try these exercises for a start: 1. Calculate the area of a rectangle 2. Given the gross pay of an employee, calculate the income tax and net pay Discuss: 1. Operators and operands 2. Syntax for writing these tasks so everyone can follow Textbooks A complete free version of the textbook ‘Machine Language for Beginners’ by Richard Mansfield can be obtained from http://www.atariarchives.org/mlb/ http://www.cosc.canterbury.ac.nz/tim.bell/dt/ 10 December 2009 A good introduction to machine code operations and instructions can be found in Chapter 7.3 of textbook ‘AQA Computing’ by Kevin Bond and Sylvia Langfield. This book costs can be purchased for $62 from fishpond.co.nz at http://www.fishpond.co.nz/Books/Computers/General/product_info/12010070/ Downloads A list of free downloadable BASIC compilers and interpreters can be found at http://www.thefreecountry.com/compilers/basic.shtml To demonstrate an interpreter, Python IDLE can be downloaded at http://www.python.org/download/ and used to carry out some command line instructions Java: since downloading and installing Java can be quite complex, please follow this YouTube video tutorial ‘Java Programming Tutorial - 1 - Installing the JDK’ to follow step-by-step instructions on doing this. Please be advised that the operating system used in this video is Windows Vista. http://www.cosc.canterbury.ac.nz/tim.bell/dt/ 10 December 2009