Tools for Schools-Teacher Support

From nswccWiki
Jump to: navigation, search

Contents

Tis the season of the Calculus

EureKalc is a wonderful and very quirky piece of software that is going places- and that is a compliment. It's interface concept would be perfect on an iPhone/iPad.

EureKalc clearly demonstrates a degree of interaction and relative simplicity that is missing in many applications trying to do similar things. It's a kind of lightweight Mathematica or [Maple.

I have used both Mathematica and Maple and similar packages like Octave and R, but they are all clearly aimed at tertiary level research. At one time I used Mathematica to generate a series of Fourier series and then used Mathematica's ability to translate them into sounds. The aim was to demonstrate how complex sounds can be "re-constructed". I also used Maple to develop a simple application that could perform Least Squares fitting to a data set. While this could have been done using a spreadsheet, the Maple version was able to algebraically handle any kind of fit formula directly to a specified accuracy.

I hope the author of EureKalc absolutely refuses to engage in feature creep with this product. If the author stops at providing an excellent product to support science education then it is well worth using. The author was a science teacher - and knows exactly how software to be used in high schools should work- with the emphasis on intuitive simplicity. I see it working towards similar goals as GeoGebra that excellent geometry/ algebra package being developed for use in high schools.

OK, EureKalc's functionality needs a lot of work but the concept and interface have real potential. The one really standout feature of the package is that it does algebra with SI units attached. Only a handful of software can do that, and most of the software driving mission critical systems is NOT in that handful - one reason for spectacular systems failures being spectacular. Interactive scale conversion is also built in as is conversion of units. Another interesting feature of it's functionality is its ability generate lists of data that could be used to generate graphs and/or data tables. It has a rudimentary plot function that is very useful for visualisation. Images may be imported, Graphs and lists of data in the form of data tables can be exported and constructed in the application.

This would be the ideal companion for a Physics or Chemistry teacher wanting to show how physical and chemical principles make use of mathematical equations. It has other features that make it useful for developing notes for presentation to students-such as the ability to hide calculation results. It also has an elementary Applescript dictionary (basically making use of evaluation "hooks" in the code).

The source code written for Revolution Stack (similar to Hyperscript/ Applescript) is also available. EureKalc is currently free.

Term Attendance Register -Numbers version 0.1

This is one relatively simple implementation based on my previous work with Excel. The most important features are that it is much easier to read, and was easier to write (after the effort put into the Excel version) This version is based on tables rather than sheets. That is one sheet represents one term of one year. One table of one sheet represents 1 week of one term.

A coupe of features:

  • all dates are relative to the the first date. If you change the first date- all the rest will change accordingly. It is based on <date> + 1 indexing.
  • days which count in the totals can be "switched in or switched out". This done by altering the "1" in the yellow row above the attendance grid (meaning count in the totals), to "0" (meaning don't count in the totals).

If you export it to Excel, the export process will put each table on a separate sheet in Excel with a nifty index sheet at the front.

One of the more useful things I've always wanted was a way to randomly assign students to workgroups. This version does that. For 30 students it is guaranteed to generate 6 random lists of 1 to 5 each week. It does a pretty good job considering the simple nature of the implementation.

I'v also experimented with using background colour triggers. This is where the colour of the cell changes according to the contents. For example; suppose you had a list of codes: {a,pa,r,o,y,g} that meant { absent, partial absence, red level, orange level, yellow level, green level} for attendance and discipline. You can make a cell background change colour according to the code present. This more easily shows any patterns.

One thing not implemented here is the total summation of days present for a whole term. But there is a summation for each week. It is implemented in the conventional style of "present if not marked absent". So only "a" and "pa" trigger an absence reduction in the present count.

Another feature that could be added into a separate table is assessment tasks. Since there is tremendous variation in how this is done it is not implemented. But just add another table at the end and set up your assessment grid for the term.


-- Term Attendance Register - vers 0.1, original version written for Excel
-- Ian Parker 2001-2005, 2012, , this version requires Apple iWork, Numbers
-- first worked on 2001-01-07                           --last worked on 2012-01-14
-- -----------------------------------------------------------------------------------
set {theStartDay, weeksInTerm, myclass} to {date string of (current date), 3, "xyxyxy"}
set {columnOffset, startRow, endRow} to {1, 4, 35} -- can't be changed see below
set yellow to {65300, 65300, 40000} -- define the colours as {r,g,b}
set blue to {0, 0, 60000}
set student_count to 30 -- or whatever your max class size
--------------------------------------------------------------------------------------
-- this should allow any date, then work back to a Monday -- maybe in Vers. 0.2
display dialog "Enter Date to begin Sequence-must be a MONDAY" default answer theStartDay
-- get text version of the date, and default to today!
set theStartDay to date (text returned of the result)
-- ask user for term information
display dialog "Enter Term Number {1, 2, 3, 4}" default answer 1
set termNumber to (text returned of the result) as number
-- ask user for how many weeks; we also accept a final date
display dialog "Enter number of weeks in term or last Date" default answer weeksInTerm
try
	-- a properly formatted date will produce an error when coercing to a number
	set weeksInTerm to (text returned of the result) as number
on error
	-- so assume that we can't coerce into a date and return weeksInTerm as a number
	set theEndDay to date (text returned of the result)
	set weeksInTerm to ((((theEndDay - theStartDay) / weeks) div 1) + 1)
end try
-- ask user for name of the class
-- ------------------------------------------------------------------------------------
display dialog "Enter name of Class" default answer myclass
set myclass to text returned of the result

tell application "Numbers"
	run
	-- ensure we have a clean sheet
	tell first sheet of first document to delete every table -- ensure we have a clean slate
end tell
--	
-- well, we might have to start the term at week 2, and go up to (weeksInTerm+1)!
repeat with weekNo from 1 to weeksInTerm
	set groupList to randomOrder(student_count) -- create a random group order for this week
	tell application "Numbers"
		activate
		tell first sheet of first document
			set name to "Term " & termNumber as string
			-- construct the table according to our specs
			set this_table to make new table with properties ¬
				{name:"Week " & weekNo as string, column count:11, row count:37}
			-- --------------------------------------------------------------
			tell every row of this_table
				set alignment to center
				set {width of every column, vertical alignment} to {72, center}
				set {font name of every cell, font size of every cell} to {"Verdana", 10}
			end tell
			-- --------------------------------------------------
			tell this_table
				-- layout
				tell row startRow
					set text color of every cell to blue
					set value of cell columnOffset to "Term: " & termNumber
					set background color of cell columnOffset to yellow
					set value of cell (columnOffset + 1) to myclass
				end tell
				tell row (startRow + 2)
					set value of cell columnOffset to "Roll Group"
					set value of cell (columnOffset + 1) to "Workgroup"
					set value of cell (columnOffset + 2) to "Surname"
					set value of cell (columnOffset + 3) to "FirstName"
					set value of cell (columnOffset + 10) to "Days Present"
				end tell
				-- ---------------------------------------------------------------------------------------
				-- construct headers
				repeat with myIndex from 0 to 4
					-- MUST BEGIN ON A MONDAY
					set mydate to (theStartDay + myIndex * days + (weekNo - 1) * 7 * days) as date
					set dayString to weekday of mydate as string
					set colRef to myIndex + columnOffset + 5
					tell column colRef
						-- plant header info
						if weekday of mydate as string is "Tuesday" then ¬
							set value of cell (startRow - 1) to "Week: " & weekNo as string
						-- week A or Week B
						if weekday of mydate as string is "Thursday" then
							-- the "A" and "B"  might need to be reversed as well !
							if ((weekNo + 1) mod 2) is 0 then
								set value of cell (startRow - 1) to "A"
							else
								set value of cell (startRow - 1) to "B"
							end if
						end if
						set value of cell startRow to dayString -- plant weekday name
						if myIndex is 0 then set value of cell (startRow + 1) to date string of mydate
						set font size of cell (startRow + 1) to 9 -- reduce font size
						set value of cell (startRow + 2) to 1 -- 1 assumes we count presence
						set background color of cell (startRow + 2) to yellow
					end tell
					--
					if myIndex is not 0 then set value of cell (startRow + 1) of column (colRef) to ¬
						"=" & name of cell (startRow + 1) of column (colRef - 1) & "+1"
				end repeat
				--
				repeat with index10 from 1 to student_count
					tell row (startRow + 2 + index10)
					--  *******this makes the sheet non relative (parts cannot be moved) **************
					-- ** absolute addresses eg. $F$6, need to be rewritten if you change {startRow, columnOffset} ***
						set {selector1, index1} to {"$F$6", name of cell (columnOffset + 5)}
						set {selector2, index2} to {"$G$6", name of cell (columnOffset + 6)}
						set {selector3, index3} to {"$H$6", name of cell (columnOffset + 7)}
						set {selector4, index4} to {"$I$6", name of cell (columnOffset + 8)}
						set {selector5, index5} to {"$J$6", name of cell (columnOffset + 9)}
						--
						set part1 to "=IF(AND(" & selector1 & "=1," & index1 & "<>\"a\"),1,0)"
						set part2 to "+IF(AND(" & selector2 & "=1," & index2 & "<>\"a\"),1,0)"
						set part3 to "+IF(AND(" & selector3 & "=1," & index3 & "<>\"a\"),1,0)"
						set part4 to "+IF(AND(" & selector4 & "=1," & index4 & "<>\"a\"),1,0)"
						set part5 to "+IF(AND(" & selector5 & "=1," & index5 & "<>\"a\"),1,0)"
						-- combine strings from each day
						set value of cell (columnOffset + 10) to part1 & part2 & part3 & part4 & part5
						-- assign each person to a randomised group each week
						set value of cell (columnOffset + 1) to item index10 of groupList
					end tell
				end repeat
				-- adust column widths & colour for the divider
				tell column (columnOffset + 4) to set {width, background color of every cell} to {5, yellow}
				tell column (columnOffset + 2) to set width to 150 -- surname
				tell column (columnOffset + 3) to set width to 150 -- first name
			end tell
		end tell
	end tell
end repeat

on randomOrder(span)
	-- routine to construct a list of single digit numbers
	-- represents a randomised list of lists for assigning students to workgroups
	-- these are the numbers you see. Guanranteed each counts 4 or 5
	set selList to {}
	set {count6, count5, count4, count3, count2, count1} to {0, 0, 0, 0, 0, 0}
	set groups to 6 -- 6 groups of 5 for 30 students
	repeat until length of selList is span
		-- get random number
		set indexSel to ((random number from 1 to span) as integer) mod groups
		if count6 < groups and indexSel is 6 then
			set selList to selList & {indexSel}
			set count6 to count6 + 1
		else if count5 < groups and indexSel is 5 then
			set selList to selList & {indexSel}
			set count5 to count5 + 1
		else if count4 < groups and indexSel is 4 then
			set selList to selList & {indexSel}
			set count4 to count4 + 1
		else if count3 < groups and indexSel is 3 then
			set selList to selList & {indexSel}
			set count3 to count3 + 1
		else if count2 < groups and indexSel is 2 then
			set selList to selList & {indexSel}
			set count2 to count2 + 1
		else if count1 < groups and indexSel is 1 then
			set selList to selList & {indexSel}
			set count1 to count1 + 1
		end if
	end repeat
	return selList
end randomOrder

Time Lines- Intro to the future

A move to "student project self management" in education has brought on the need for tools to construct timelines. While some tools do exist, they are rather bland and primitive…

A very interesting application is called Easy Timeline that allows you to develop timelines for stunning dynamic presentations. I used it with a Year 10 class to introduce their science student research project- the response was stunned silence and ready to write the details in the event boxes into their planning booklets.

It takes a short while to understand the visual model but once you have the model understood this is a powerful tool to manage any project that would be enhanced by a timeline presentation. This application allows for a 3-D representation and you can embed text, video or images at any event point. It would be an excellent tool for forward planning, presentations to students for organising their work, or for presentations at staff meetings. This is the only application I know of that moves the display of a timeline to another dimension. Well worth a look.

Interestingly, it was the first time that I also used a kaiser baas Bluetooth Mini Keyboard as a fully functional remote control. It has a QWERTY keyboard, mouse design with two buttons on top left and a sprung joystick on the top right. Beside the joystick is a touch sensitive slider for scrolling. I have used several pointer style remote controls but this one has a good feel and response and means I can leave my laptop out the front of the room and have full remote control, even with function keys operating as a video controller.

And one more thing… Easy Timeline also has an AppleScript interface. For such a simple application there are many possibilities… So ….

-- Embed Timeline data, for display using Easy Timeline Application
-- example is for (Science) Student Research Project
-- Ian W. Parker , first worked on: 2012-03-25, Last worked on: 2012-04-02
set eol to ASCII character 12 -- to reduce unsightly formatting because text not in an IDE

-- set up a document with two stacked timelines
-- create 6 events and plant them in the parallel timelines

tell application "Easy Timeline"
	activate
	-- because of special syntax, we must construct within context of Easy Timeline
	set event1 to {name:"SRP Intro Presentation", notes:"Set up timeline organisation." & eol & "Walkthrough SRP Plan Booklet." & eol & "Set up Organisation", starting date:date "Wednesday, 4 April 2012 12:00:00 AM", ending date:date "Wednesday, 4 April 2012 12:00:00 AM", show descender:true}
	
	set event2 to {name:"Easter Holidays", notes:"Work on project if you wish." & eol & " Use the planning booklet", starting date:date "Friday, 6 April 2012 12:00:00 AM", ending date:date "Monday, 23 April 2012 12:00:00 AM", show descender:true} ¬
		
	set event3 to {name:"Journal Review A", notes:"Signed off by your teacher." & eol & "Review date first week back after Easter Holidays.", starting date:date "Thursday, 26 April 2012 12:00:00 AM", ending date:date "Friday, 27 April 2012 12:00:00 AM", show descender:true}
	
	set event4 to {name:"Journal Review B", notes:"Completion of all experimental work.", starting date:date "Monday, 7 May 2012 12:00:00 AM", ending date:date "Tuesday, 8 May 2012 12:00:00 AM", show descender:true}
	
	set event5 to {name:"Final Draft", notes:"Check the layout" & eol & "-all required content present" & eol & "-ensure high quality", starting date:date "Wednesday, 9 May 2012 12:00:00 AM", ending date:date "Monday, 14 May 2012 12:00:00 AM", show descender:true}
	
	set event6 to {name:"Final Report", notes:"Last day for submission- 22nd May", starting date:date "Wednesday, 16 May 2012 12:00:00 AM", ending date:date "Tuesday, 22 May 2012 12:00:00 AM", show descender:true}
	
	-- configure a new document
	set newDoc to make new document
	set font of newDoc to "Arial Rounded MT Bold"
	set size of newDoc to 14
	tell newDoc
		-- applies to the document
		set showing panel to false -- to prevent being stalled at startup
		set view mode to bulk edit view -- momentary, really not needed
		
		-- populate first row (bottom row), always present
		tell first row
			set name to "Student Research Project"
			make new event with properties event3
			make new event with properties event4
			make new event with properties event5
			make new event with properties event6
		end tell
		
		-- stack a row
		tell newDoc to make new row
		-- populate second row (top)
		tell second row
			set name to "Student Research Project"
			make new event with properties event1
			make new event with properties event2
			
		end tell
		-- set appearance; you can also select "format looks" after generation
		set label style of every row to text only
		set foundation height of every row to 200.0
		set view mode to screen view
	end tell
end tell

Using Photoshop to make Line Sketches

Firstly, I am distinguishing between line drawing and sketching. A line drawing is generated by mathematically precise line definitions. A sketch is generated by short semi-random strokes, or bit image manipulation.

We sometimes give students photographs or images from microscopes and ask students to sketch the important features. It may be reasonably easy if you are trying to obtain an "artistic impression" but in science we are after students to recognise and sketch images, highlighting what is important, and leaving out what is not important. That is an art in itself. These days we can use USB cameras to obtain sill images and even short video clips. But they do not provide an indication of the "important" parts.

The following AppleScript performs the reproducible and technical conversion of a camera captured image to a line sketch using Photoshop.

The purpose is to motivate students into making these kinds of sketches by hand or using the sketches to learn how to extract image features.

Before you begin, make sure the image to be processed is copied to the clipboard.

Technically the process is as follows:

(i) optionally resize the image (ii) adjust the image so that you remove the colour leaving a grey scale image (i) optionally, adjust the image so that you have slightly greater contrast than was in the captured image if you deem it desirable (ii) adjust the image so that the edges are blurred. (iii) adjust the image so that you sharpen the edges, and if desired do this one more time but no more (v) adjust the black and white threshold levels, by posterising with 2 levels, this will automatically adjust the b/w levels

The two "secret operations" are: blur the image first before edge sharpening. This has to do with the way edge enhancement works. It actually works better if the edges are slightly blurred before sharpening and adjust the black and white image thresholds automatically using 2 levels rather than more than 2 levels. You will be left with a posterised b/w image of the original, which would pass for a pretty good representation of "sketch the important parts".

The AppleScript below is a precise implementation of this process. I have specified Adobe Photoshop Elements 9 Editor" but almost any up to date version will work. If you follow the process, you can also do it manually. And for those Windows version users, the same process can be done manually.

-- I. Parker, first worked on 2012-01-15, last worked on 2012-01-17
-- process microscope image to highlight "significant" features
-- best images should have good range of colours and intensities, but not washed out look.
-- before using, ensure you have the image in the clipboard-(use apple-C)
-- workflow observable, with audio feedback

tell application "Adobe Photoshop Elements 9 Editor" -- or any other recent version of Photoshop
	activate
	set doc to make new document with properties {name:"image-processed"}
	set background layer of layer 1 of doc to false
	set topLayer to make new art layer at beginning of doc with properties {name:"Top Layer", visible:true}
	
	set no_error to true
	try
		paste -- the clipboard into the current layer
		-- stage 1
		try -- to remove colour for further blob and line processing
			say "image change to greyscale: " with waiting until completion
			change mode of doc to grayscale -- so we can better deal with conversion to drawing
			say "done" with waiting until completion
		on error
			say "image resize failed. " with waiting until completion
			set no_error to false
		end try
		-- stage 2a
		try --first blurring to assist edge enhancement!
			say "bler: " with waiting until completion -- accent an issue
			filter current layer of doc using blur with options {class:lens blur, radius:15}
			say "finished" with waiting until completion
		on error
			say "image blur filter failed. " with waiting until completion
			set no_error to false
		end try
		-- stage 2b
		try -- to enhance the edges (apply Laplace transform several times)
			say "sharpen edges:" with waiting until completion
			filter current layer of doc using sharpen edges
			set answer to "Again" -- assume we want at least a bit of sharpening
			repeat until answer is "No"
				set answer to display dialog "Sharpen more ?" buttons {"No", "Again"}
				set answer to button returned of answer
				if answer is "Again" then filter current layer of doc using sharpen more
			end repeat
			say "done" with waiting until completion
		on error
			say "image sharpen edges failed. " with waiting until completion
			set no_error to false
		end try
		-- stage 3
		try -- a nice simple way to ...
			say "set black and white threshold: " with waiting until completion
			adjust current layer of doc using posterize with options {level:2}
			say "done" with waiting until completion
		on error
			say "image threshold failed: image not selected" with waiting until completion
			set no_error to false
		end try
	on error
		say "image paste failed: you need an image on the clipboard" with waiting until completion
		set no_error to false
	end try
	change mode of doc to RGB -- for compatibility
	if no_error then
		say "end of: image processing"
		try
			save doc in (path to desktop as string) as JPEG with options ¬
				{class:JPEG save options, quality:12, format options:optimized}
		on error
			say "save failed" with waiting until completion
		end try
	end if
end tell
Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox