Online Guides by sjh18818

VIEWS: 0 PAGES: 10

									       [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

								
To top