F# in Education – Programming the New Generation

Total Page:16

File Type:pdf, Size:1020Kb

F# in Education – Programming the New Generation Computer Science F# in Education – Programming Fast Facts Project Principal: the New Generation Don Syme, Principal Researcher, Microsoft Research F# is a simple, type-safe, and efficient functional programming lan- Judith Bishop, guage with special expressiveness in parallel programming, scripting, Director, Computer Science, and algorithmic development. F# combines the advantages of typed Microsoft External Research functional programming with a high-quality, well-supported modern runtime system and the Microsoft .NET library and tools base. Websites: F#: http://www.fsharp.org/ # provides type-safe, succinct, efficient and expressive functional programming Microsoft F# Developer Center: on the .NET platform. It is a simple and pragmatic language, and has particular http://msdn.microsoft.com/fsharp strengths in data-oriented programming, parallel programming, scripting, and F Pex4fun: algorithmic development. It offers access to the huge .NET library and tools base and http://www.pex4fun.com/ comes with a strong set of Microsoft® Visual Studio® development tools. This combi- nation has been so successful that the language is now a first-class language in Visual Studio 2010. Events: F# in Education Workshop: As a teaching language, F# has the advantage of being freely available for .NET http://research.microsoft.com/ as well as Mono, which means that students can develop programs on Windows®, fsharpined Macintosh, and Linux. At the moment, its richest experience is in Visual Studio 2010, but to support teaching of F#, Microsoft Research is working in conjunction with the Microsoft Technologies: F# community to ensure a consistent learning experience across all three platforms. Microsoft Visual Studio 2010 Several projects are underway for F# courseware, implementations, and compiler Microsoft .NET Framework open-sourcing. F# can also be run via any browser on the Pex4Fun social site, and in a lightweight Microsoft Silverlight® application. Other Technologies: MonoDevelop 2.4: http://monodevelop.com/ Microsoft External Research Microsoft External Research part- ners with academia, government, and industry to advance computer science education and scientific research that addresses some of the world’s most urgent and significant social and technological challenges. Along with investing cash, software, hardware, and research expertise to enable ground-breaking projects worldwide, External Research is committed to providing advanced technologies and services needed to support every stage of the research process. F# programming environment in Visual Studio 2010 Microsoft External Research http://research.microsoft.com/collabo- ration/ Microsoft Research has served as the incubation center for the develop- ment of F#, which began seven years ago. Microsoft has collaborated closely with members of the global research community to ensure optimal develop- ment of the language. As a productive language for typed functional and object-oriented programming on the .NET platform, F# is being adopted by companies that need to conduct algorithmic analysis of large quantities of business information. Known for its ability to make it easier for analysts to experiment with different data and derive analysis of a higher quality, F# has been selected as the language of choice by a major bank. It is also starting to be used in courses at universities in North America and in Europe F# was developed by Microsoft Research, Cambridge, under the leader- ship of Don Syme. Don Syme, Principal Researcher, Microsoft Research - Cambridge. Quotes “Functional languages are ideal for teaching clear thinking for solving problems amenable to code solu- tions and it levels the playing field between beginners and experienced programmers. The first programming language taught has a substantial influence on what language students use when they have a free choice. F#, once it is platform independent, has the potential to become the first programming language.” Prof Susan Eisenbach, Dean of Learning and Teaching, Imperial College, United Kingdom “F# programs tend to be much shorter than their equivalents in other languages, and the fewer lines of code required, of course, the higher the productivity. When F# is combined with Visual Studio, which provides help with remembering the methods attached to different data types and how to use those methods, productivity goes through the roof!” Prof Nigel Horspool, University of Victoria, Canada “Our graduate course on Parallelism this Fall is full, even though it assumes no experience with functional programming or F#. The students are preparing the courseware themselves, and one of the topics we are studying is functional reactive programming (FRP) with continuous, time-varying behaviors. F#, with its rich graphics libraries, made it trivial to construct a super-fun assignment involving purely functional and interac- tive animation of a mock solar system.” Prof David Walker, Princeton University, United States © 2010 Microsoft Corporation. All rights reserved. This datasheet is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY. Microsoft, Silverlight, Visual Studio, and Windows are registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries. The names of actual companies and products mentioned herein may be the trademarks of their respective owners..
Recommended publications
  • Fortran Resources 1
    Fortran Resources 1 Ian D Chivers Jane Sleightholme October 17, 2020 1The original basis for this document was Mike Metcalf’s Fortran Information File. The next input came from people on comp-fortran-90. Details of how to subscribe or browse this list can be found in this document. If you have any corrections, additions, suggestions etc to make please contact us and we will endeavor to include your comments in later versions. Thanks to all the people who have contributed. 2 Revision history The most recent version can be found at https://www.fortranplus.co.uk/fortran-information/ and the files section of the comp-fortran-90 list. https://www.jiscmail.ac.uk/cgi-bin/webadmin?A0=comp-fortran-90 • October 2020. Added an entry for Nvidia to the compiler section. Nvidia has integrated the PGI compiler suite into their NVIDIA HPC SDK product. Nvidia are also contributing to the LLVM Flang project. • September 2020. Added a computer arithmetic and IEEE formats section. • June 2020. Updated the compiler entry with details of standard conformance. • April 2020. Updated the Fortran Forum entry. Damian Rouson has taken over as editor. • April 2020. Added an entry for Hewlett Packard Enterprise in the compilers section • April 2020. Updated the compiler section to change the status of the Oracle compiler. • April 2020. Added an entry in the links section to the ACM publication Fortran Forum. • March 2020. Updated the Lorenzo entry in the history section. • December 2019. Updated the compiler section to add details of the latest re- lease (7.0) of the Nag compiler, which now supports coarrays and submodules.
    [Show full text]
  • Dr. C#: a Pedagogic IDE for C# Featuring a Read-Eval-Print-Loop by Dennis Lu
    RICE UNIVERSITY Dr. C#: A Pedagogic IDE for C# Featuring a Read-Eval-Print-Loop by Dennis Lu ATHESIS SUBMITTED IN PARTIAL FULFILLMENT OF THE REQUIREMENTS FOR THE DEGREE Master of Science APPROVED,THESIS COMMITTEE: Robert Cartwright, Chair Professor of Computer Science Joe Warren Professor of Computer Science Dan Wallach Assistant Professor of Computer Science Dung X. Nguyen Lecturer, Computer Science Houston, Texas April, 2003 Dr. C#: A Pedagogic IDE for C# Featuring a Read-Eval-Print-Loop Dennis Lu Abstract As the primary programming language of the Microsoft .NET platform, C# will play a significant role in software development for the foreseeable future. As the language rapidly gains popularity in industry, tools made for C# development fo- cus on the professional programmer, while leaving the beginning computer science student behind. To address this problem, we introduce Dr. C#, a simple lightweight develop- ment environment with an integrated, interactive Read-Eval-Print-Loop (REPL). Dr. C# helps flatten the learning curve of both the environment and the language, enabling students to quickly learn key elements of the language and focus more easily on concepts. Dr. C# thus serves not only as a learning tool for beginner students but also as a teaching tool for instructors. The editor is based on an open source IDE called SharpDevelop. This thesis describes the implementation of Dr. C# focusing primarily on building the REPL and integrating with SharpDevelop. Acknowledgments I would like to thank my advisor Professor Robert “Corky” Cartwright for giving me the opportunity and autonomy to develop Dr. C#. I would also like to thank Professor Dung Nguyen for acting as co-advisor and for his years of guidance and support.
    [Show full text]
  • Oracle Fusion Middleware Platform Developer's Guide for Oracle Real-Time Decisions 11G Release 1 (11.1.1) E16630-06
    Oracle® Fusion Middleware Platform Developer's Guide for Oracle Real-Time Decisions 11g Release 1 (11.1.1) E16630-06 February 2013 Explains how to develop adaptive solutions with Oracle Real-Time Decisions (Oracle RTD). Includes a tutorial, information about integrating with Oracle RTD, and details about Inline Services. Oracle Fusion Middleware Platform Developer's Guide for Oracle Real-Time Decisions 11g Release 1 (11.1.1) E16630-06 Copyright © 2011, 2013, Oracle and/or its affiliates. All rights reserved. Primary Author: Oracle Corporation Contributors: Oracle Real-Time Decisions development, product management, and quality assurance teams. This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited. The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing. If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, the following notice is applicable: U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S.
    [Show full text]
  • Opengl Install Guide
    OpenGL Install Guide Windows Install your favorite IDE. This tutorial assumes that you have Microsoft Visual Studio 6.0 (available from the CS Department Software Library as of Autumn 2004) installed on your machine. See specific IDE guides at the end of this document for more information. Install OpenGL OpenGL v1.1 software runtime is included as part of operating system for WinXP, Windows 2000, Windows 98, Windows 95 (OSR2) and Windows NT. If you think your copy is missing, the OpenGL v1.1 libraries are also available as the self- extracting archive file from the Microsoft website, via this url: http://download.microsoft.com/download/win95upg/info/1/W95/EN-US/Opengl95.exe OpenGL Libraries and header files are • opengl32.lib • glu32.lib • gl.h • glu.h Install GLUT GLUT is not normally pre-installed. You can download it from: http://www.xmission.com/~nate/glut/glut-3.7.6-bin.zip Install GLUT by following the instructions in the README file (copy and pasted here): Copy the files: 1. glut32.dll to %WinDir%\System, 2. glut32.lib to $(MSDevDir)\..\..\VC98\lib 3. glut.h to $(MSDevDir)\..\..\VC98\include\GL. Use OpenGL & GLUT in your source code 1. Start Visual C++ and create a new empty project of type “Win32 Console Application.” 2. To test your setup, add a simple GLUT program to the project like “drawCircle.cpp” from our sample programs. 3. You should only need to #include <GL/glut.h>. It includes the other necessary dependent libraries. You might need to modify our example programs to fit this requirement.
    [Show full text]
  • Using Visual Studio Code for Embedded Linux Development
    Embedded Linux Conference Europe 2020 Using Visual Studio Code for Embedded Linux Development Michael Opdenacker [email protected] © Copyright 2004-2020, Bootlin. embedded Linux and kernel engineering Creative Commons BY-SA 3.0 license. Corrections, suggestions, contributions and translations are welcome! - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 1/24 Michael Opdenacker I Founder and Embedded Linux engineer at Bootlin: I Embedded Linux engineering company I Specialized in low level development: kernel and bootloader, embedded Linux build systems, boot time reduction, secure booting, graphics layers... I Contributing to the community as much as possible (code, experience sharing, free training materials) I Current maintainer of the Elixir Cross Referencer indexing the source code of Linux, U-Boot, BusyBox... (https://elixir.bootlin.com) I Interested in discovering new tools and sharing the experience with the community. I So far, only used Microsoft tools with the purpose of replacing them! - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 2/24 Using Visual Studio Code for Embedded Linux Development In the Stack Overflow 2019 Developer Survey, Visual Studio Code was ranked the most popular developer environment tool, with 50.7% of 87,317 respondents claiming to use it (Wikipedia) - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 3/24 Disclaimer and goals I I’m not a Visual Studio Code guru! I After hearing about VS Code from many Bootlin customers, I wanted to do my own research on it and share it with you. I The main focus of this research is to find out to what extent VS Code can help with embedded Linux development, and how it compares to the Elixir Cross Referencer in terms of code browsing.
    [Show full text]
  • Microsoft Visual Studio Code (VSC)
    Mac Installation Guide for Microsoft Visual Studio Code (VSC) Updated: 10/4/2019 Procedure: Installation of Python 3.7.x 1. Navigate to the following website: https://www.python.org/downloads/ 2. Click the yellow button at the top of the page labeled “Download Python 3.7.4” to download the installer to your default download location. 3. Once the file downloads double click on the downloaded file to execute the installer and follow the prompts in the install wizard. Procedure: Installation of Microsoft Visual Studio Code 1. Navigate to the following website: https://code.visualstudio.com/download 2. Select the installer for your OS: © Project Lead The Way Page 2 of 8 3. Allow the download to complete. 4. Click to launch the zip file, which should be named VSCode-Darwin-stable.zip, This will unpack the file, which contains only the Visual Studio Code application, to where the zip file was downloaded. 5. Once the launcher is in place double click on the Visual Studio Code application to launch the application. *Note, Once VSC launches we suggest 2 finger clicking the icon on your dock, going to Options, and then clicking on Keep in Dock. This will make the application easier to launch as it does not get added to the launchpad automatically. 6. Select the Extensions menu on the left. © Project Lead The Way Page 3 of 8 7. Search for “python” and install the Python extension shown in the picture below. It will have “linting, debugging” in the description. Your version of Visual Studio Code may not include icons for these extensions.
    [Show full text]
  • Advanced Features for an Integrated Verification Environment
    Advanced Features for an Integrated Verification Environment Ruben Kälin [email protected] Master Thesis November 2016 https://bitbucket.org/viperproject/viper-ide/ Supervisor Arshavir Ter-Gabrielyan Abstract Currently, in software verification, the IDE support is insufficient, especially for symbolic exe- cution. Many verification technologies are being developed, but only few IDEs target software verification. For example, users of the Viper framework had only little assistance in writing, and no assistance in debugging their software so far. The common way of invoking the verifier is through the command line, as a sufficient IDE support has been missing. An IDE capable of handling more than one language is desirable, as there are many small verification languages. Without proper IDE support writing, verifying, and debugging software is cumbersome. Many of the tasks normally handled by an IDE need to be performed manually. A capable IDE so- lution could reduce the overhead of verifying software and thereby improve the programmer’s productivity. In this Master’s thesis, we built a cross-platform IDE for creating Viper programs. The IDE assists the user in the process of writing, verifying, and debugging Viper source code. This support ranges from automatically performing tasks at the right time to visualizing the symbolic states and counterexamples. We provide intuitive debugging support for traversing all states of symbolic execution and allow the user to visually compare states. The Viper IDE is based on Microsoft Visual Studio Code. We use the Viper toolchain as a verification engine. We provide a solution for symbolic execution, whereas the existing solutions focus on a different verification approach.
    [Show full text]
  • 8 C# Development Tools
    Object Oriented Programming using C# C# Development Tools 8 C# Development Tools Introduction This chapter will introduce the reader to several development tools that support the development of large scale C# systems. We will also consider the importance of documentation and show tools can be used to generate documentation for systems you create (almost automatically). Objectives By the end of this chapter you will be able to…. • Find details of several professional and free interactive development environments • Understand the importance of the software documentation tools and the value of embedding XML comments within your code. • Write XML comments and generate automatic documentation for your programs. This chapter consists of eight sections :- 1) Tools for Writing C# Programs…. 2) Microsoft Visual Studio 3) SharpDevelop 4) Automatic Documentation 5) Sandcastle Help File Builder 6) GhostDoc 7) Adding Namespace Comments 8) Summary 8.1 Tools for Writing C# Programs Whatever mode of execution is employed (see section 1.7), programmers can work with a variety of tools to create source code. It is possible to write C# programs using simple discrete tools such as a plain text editor (e.g. Notepad) and a separate compiler invoked manually as required. However virtually all programmers would use a powerful Integrated Development Environment (IDE) which use compilers and other standard tools behind a seamless interface. Even more sophisticated tools Computer Aided Software Engineering (CASE) tools exist which integrate the implementation process with other phases of the software development lifecycle. CASE tools could take UML class diagrams, generated as part of the software analysis and design phase, and generate classes and method stubs automatically saving some of the effort required to write the C# code (ie.
    [Show full text]
  • The Pisharp IDE for Raspberry PI
    http://researchcommons.waikato.ac.nz/ Research Commons at the University of Waikato Copyright Statement: The digital copy of this thesis is protected by the Copyright Act 1994 (New Zealand). The thesis may be consulted by you, provided you comply with the provisions of the Act and the following conditions of use: Any use you make of these documents or images must be for research or private study purposes only, and you may not make them available to any other person. Authors control the copyright of their thesis. You will recognise the author’s right to be identified as the author of the thesis, and due acknowledgement will be made to the author where appropriate. You will obtain the author’s permission before publishing any material from the thesis. The PiSharp IDE for Raspberry PI Bo Si This thesis is submitted in partial fulfillment of the requirements for the Degree of Master of Science at the University of Waikato. August 2017 © 2017 Bo Si Abstract The purpose of the PiSharp project was to build an IDE that is usable for beginners developing XNA-like programs on a Raspberry-Pi. The system developed is capable of 1. Managing and navigating a directory of source files 2. Display a file in a code text editor 3. Display code with syntax highlight 4. Automatically discovering program library structure from code namespaces 5. Compiling libraries and programs automatically with recompilation avoided if source code has not been updated 6. Compiling and running from the IDE 7. Editing more than one file at a time 8.
    [Show full text]
  • Comparative Studies of Six Programming Languages
    Comparative Studies of Six Programming Languages Zakaria Alomari Oualid El Halimi Kaushik Sivaprasad Chitrang Pandit Concordia University Concordia University Concordia University Concordia University Montreal, Canada Montreal, Canada Montreal, Canada Montreal, Canada [email protected] [email protected] [email protected] [email protected] Abstract Comparison of programming languages is a common topic of discussion among software engineers. Multiple programming languages are designed, specified, and implemented every year in order to keep up with the changing programming paradigms, hardware evolution, etc. In this paper we present a comparative study between six programming languages: C++, PHP, C#, Java, Python, VB ; These languages are compared under the characteristics of reusability, reliability, portability, availability of compilers and tools, readability, efficiency, familiarity and expressiveness. 1. Introduction: Programming languages are fascinating and interesting field of study. Computer scientists tend to create new programming language. Thousand different languages have been created in the last few years. Some languages enjoy wide popularity and others introduce new features. Each language has its advantages and drawbacks. The present work provides a comparison of various properties, paradigms, and features used by a couple of popular programming languages: C++, PHP, C#, Java, Python, VB. With these variety of languages and their widespread use, software designer and programmers should to be aware
    [Show full text]
  • Visual Studio IDE
    Visual Studio IDE Visual Studio 2015 Other Versions Visual Studio 2013 For the latest documentation on Visual Studio 2017 RC, see Visual Studio 2017 RC Documentation. Microsoft Visual Studio 2015 is a suite of tools for creating software, from the planning phase through UI design, coding, testing, debugging, analyzing code quality and performance, deploying to customers, and gathering telemetry on usage. These tools are designed to work together as seamlessly as possible, and are all exposed through the Visual Studio Integrated Development Environment (IDE). You can use Visual Studio to create many kinds of applications, from simple store apps and games for mobile clients, to large, complex systems that power enterprises and data centers. You can create 1. apps and games that run not only on Windows, but also Android and iOS. 2. websites and web services based on ASP.NET, JQuery, AngularJS, and other popular frameworks 3. applications for platforms and devices as diverse as Azure, Office, Sharepoint, Hololens, Kinect, and Internet of Things, to name just a few examples 4. games and graphics-intensive applications for a variety of Windows devices, including Xbox, using DirectX. Visual Studio by default provides support for C#, C and C++, JavaScript, F#, and Visual Basic. Visual Studio works and integrates well with third-party applications like Unity through the Visual Studio Tools for Unity extension and Apache Cordova through Visual Studio Tools for Apache Cordova. You can extend Visual Studio yourself by creating custom tools that perform specialized tasks. If you’ve never used Visual Studio before, learn the basics with our Get Started Developing with Visual Studio tutorials and walkthroughs.
    [Show full text]
  • Installation and Configuration General Installation Considerations
    Installation and Configuration General Installation Considerations Before starting the installation, first you need to know what do you want to use PHP for. There are three main fields you can use PHP, as described in the What can PHP do? section: • Websites and web applications (server-side scripting) • Command line scripting • Desktop (GUI) applications For the first and most common form, you need three things: PHP itself, a web server and a web browser. You probably already have a web browser, and depending on your operating system setup, you may also have a web server (e.g. Apache on Linux and MacOS X; IIS on Windows). You may also rent webspace at a company. This way, you don't need to set up anything on your own, only write your PHP scripts, upload it to the server you rent, and see the results in your browser. In case of setting up the server and PHP on your own, you have two choices for the method of connecting PHP to the server. For many servers PHP has a direct module interface (also called SAPI). These servers include Apache, Microsoft Internet Information Server, Netscape and iPlanet servers. Many other servers have support for ISAPI, the Microsoft module interface (OmniHTTPd for example). If PHP has no module support for your web server, you can always use it as a CGI or FastCGI processor. This means you set up your server to use the CGI executable of PHP to process all PHP file requests on the server. If you are also interested to use PHP for command line scripting (e.g.
    [Show full text]