1. F# in the Classroom and the Lab Richard Minerich Senior Researcher at Bayard Rock and F# MVP
2. F# is Open Source You don’t need to buy Visual Studio to use F# You don’t need to have Windows to use F#
3.
4. “Today’s students, from freshmen to seniors, desire relevant assignments that are engaging, challenging, and creative, that also prepare them for their careers.” - Game2Learn: Building CS1 Learning Games for Retention Tiffany Barnes et al.
11. Ant Visible Cells Visible Cells Nest Cells Has Food? Properties? Properties? Are Full? Yes No Out of Ideas? No Nest Cells? Food? Phero? Food but no Phero? Nest Cell? Take Food Move Toward Max Phero Drop Pheromones Move Toward Nest Yes No Move to a Random Cell Move to a Random Nest Cell Drop Food
12. match ant with | HasFood-> matchvisibleCellswith | HasUnownedFood cells when not here.HasPheromone->DropPheromone (here) | AreNestnestCells-> matchnestCellswith | CanDropdropCell->DropFooddropCell | CantDrop-> Move (randomEmptyCellnestCells) | AreNotNest cells -> Move (closestToHomevisibleCells) | HasNoFood-> matchvisibleCellswith | HasUnownedFood cells ->TakeFood (maximizeFood cells) | HasPheromones cells -> Move (maximizePhero cells) | _ -> Move (randomEmptyCellvisibleCells)
13. A Framework for F# Assignments Obfuscated Library CI Server Student Assignment Template
17. Pain % Matlab function [varargout] = CalcPepIndex (A, E) A=spconvert(A); E=full(spconvert (E)); c=0; d=0; R=E; while c < 1000 R1=.975*(A*R)+.025*E; d=norm(R1-R,1); c=c+1; R=R1; end varargout (0) = R; end function; Pleasure //F# let calcPepIndex (A: matrix) (E: Vector<_>) = let rec calc R = let R' = 0.975*(A*R) + 0.025*E let d = Vector.norm(R' - R) if d = 0.0 then R else calc R' calc E
18. F# vsMatlab Fast Specific General Purpose Tools Easy Deployment Integrates R&D Slow Imprecise Domain Specific Tools Painful Deployment Segregates R&D
19. Learning in F# Researching with F# Finding Opportunities with .NET