# Online Guides by sjh18818

VIEWS: 0 PAGES: 10

• pg 1
```									       [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

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
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
1. Students first think how they would search for a song on an MP3 player, and
2. Students think of an algorithm to shelve books in a library, and calculate the

   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
1. Students work on a sudoku puzzle and a maze puzzle, and figure out
2. Students work on algorithms for making S'mores, and sorting words.
3. Students discuss how to solve a Jumble puzzle within their groups and then

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

   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
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
2. Students work through logic problems, involving weighing coins, writing
4. Students do two different logic puzzles to gain experience in logical thinking.
8. Students work through a logic problem involving a farmer and animals
10. Students solve a check puzzle to swap places of knights. 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.
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.
17. Robots and Teamwork gets students working together in teams to build a

   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
2. Students work find out colors and messages of three cakes based on three
4. Students write a program to convert a stack of pancakes to be in size order,
5. Students find out which of her three friends Joanna visited in which month
6. Students determine which category a person belongs to based on his/her
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.
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
11. Students figure out which Muses serve which goddess based on their
14. Students Figure out the right casket based on the statement on caskets.
17. Students figure out an algorithm to guarantee two skydivers will meet one

   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

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/

   A list of free downloadable BASIC compilers and interpreters can be found at
http://www.thefreecountry.com/compilers/basic.shtml

instructions