
Learn Racket as a powerful, list-based functional programming language close to mathematics. Follow a step-by-step, hands-on path to build a solid foundation and even create games, compilers, or interpreters.
Install Dr Racket by downloading the correct version for your operating system, choose the location, and finish setup to begin exploring the full featured programming environment.
start by selecting the language to work with, since the course supports multiple languages. use the bottom-left language option to choose, then begin with primitives and move toward lists.
Explore how expressions are written in prefix form in Racket, with a function and its arguments inside brackets and spaces separating them.
Explore consistency in function notation for beginners using Racket and Elm. Compare fixed notation with prefix notation and how arguments appear in parenthesis.
Define a function with the define keyword, specify its name, arguments, and body inside parentheses, and call it with numbers to double or triple them.
Learn how to import and manipulate images in Racket and Elm, using image height and width to resize, and combine images through image multiplication.
Explore strings in Racket and Elm, learn how string literals like hello world are defined, and perform operations such as concatenation and length using the function-argument expression format.
Learn how to define and use comments in Racket, including single-line comments with semicolons and block comments using hash and pipes to improve readability and control output.
Explore conditional statements in Racket and Elm, using if to test conditions such as greater than five or less than five, and direct control flow with else branches.
Learn how to define a function with the define keyword, name and one parameter, call the function, and use cond for conditional logic within functions.
Explore how structures hold multiple fields in a single variable, define a human with height and weight, use a constructor to create instances, and access the stored values.
Learn how to define lists with the list function, create lists, and use single quotes to denote symbols. Access zero-based elements, compute list length, append lists, and reverse them.
Learn to draw shapes in Racket and Elm by defining circles with a radius and rectangles with width and height, and render them through function calls.
Explore the basics of programming languages, their compilation, and the role of functional programming, while engaging in a hands-on course with lifetime access and continuous updates.
Install Elm and an editor locally on Windows, download the Elm setup, install language dependencies, and configure code editor support for syntax highlighting.
Install language packages using the package manager, open the installer, search for languages, and enable syntax highlighting and auto-completion in Racket and Elm projects.
Install Node.js on your computer, manage dependencies with a package manager, and use the command prompt to install the 64-bit version for your OS, enabling local compilation outside the browser.
Learn how to use the package manager to create a JSON file, configure downloads and packages, and migrate from the command prompt to manage created files.
Explore the model-view-controller concept, linking the model with the view in a functional programming style, and learn to print hello world from a main function with localhost preview using esteemable.
Explore using the repl in racket and elm, install and load audio packages, and run simple calculations to see data types and outputs in real time.
Explore how to define and manipulate lists in Racket and Elm, including creating lists, concatenation, measuring list size, and basic list operations like adding or removing elements.
Learn boolean data types and equals-based comparisons in Racket and ELM by practicing value comparisons to determine true or false results.
Learn how tuples store values of different types in a single collection, and create custom types or records to access their fields.
Define a function by naming it and listing its parameters, such as x and y, and call it by passing values like 5, 6, and 11.
Explore recursive calls in Racket, learn how to call a function within a function, and map a function over lists to generate sequences from zero to four.
Master module imports by selectively exposing parts, using qualified names, and managing namespaces to avoid ambiguity, while learning how to access library functions from imported modules.
Learn to create and expose a module using the model keyword, define a module file, and import your custom modules to compose a project.
Learn how to use type annotations in Racket and Elm, understand how the compiler infers function types, and document your code to define clear function interfaces.
Define and reuse type aliases to simplify data structures in Racket and Elm, using a user type with bio fields and a has-bio check.
Explore Elm architecture for beginners, building a small web app with a clear model, view, and update flow, handling user input and state updates.
Create a basic elm-like app with two buttons to increment and decrement a number, using on-click events and updating the model and view.
Racket is a programming language that started life as a Scheme implementation, but then grew into new areas. Racket is a mature LGPL project that’s actively developed and maintained. Racket’s crown jewel is its macro system, which lets you freely extend the language. Racket consists of extensive standard library that gets your projects off the ground quickly. Racket runs on Linux, macOS, and Windows. Develop on one; deploy to all three.
Racket (formerly PLT Scheme) is a general purpose, multi-paradigm programming language in the Lisp-Scheme family. One of its design goals is to serve as a platform for language creation, design, and implementation.The language is used in a variety of contexts such as scripting, general-purpose programming, computer science education, and research.
Racket's core language includes macros, modules, lexical closures, tail calls, delimited continuations, parameters (fluid variables), software contracts, green and OS threads, and more. The language also comes with primitives, such as eventspaces and custodians, which control resource management and enables the language to act like an operating system for loading and managing other programs. Further extensions to the language are created with the powerful macro system, which together with the module system and custom parsers can control all aspects of a language. Unlike programming languages that lack macro systems, most language constructs in Racket are written on top of the base language using macros. These include a mixin class system, a component (or module) system as expressive as ML's, and pattern matching.
The feature that distinguishes Racket from other languages in the Lisp family is its integrated language extensibility. Racket's extensibility features are built into the module system to allow context-sensitive and module-level control over syntax
In this course we use DrRacket IDE , which is a graphical environment for developing programs using the Racket programming languages. DrRacket (formerly DrScheme) is widely used among introductory Computer Science courses that teach Scheme or Racket and is lauded for its simplicity and appeal to beginner programmers. The IDE was originally built for use with the TeachScheme! project (now ProgramByDesign), an outreach effort by Northeastern University and a number of affiliated universities for attracting high school students to computer science courses at the college level. It is the fastest way to get a sense of what the language and system feels like, even if you eventually use Racket with Emacs, vi, or some other editor.
Curious why Functional Programming is on the Rise? Do you wish there was a better option than JavaScript? Would you like to learn Elm or Functional Programming in general, but short on time?
If you answered yes, then this course is for you.
Elm is very approachable, and is the best language to learn functional programming.
Elm is a functional programming language that compiles to JavaScript and runs in the browser. It is designed to be fun and friendly to use. Indeed, Elm upends the notion that functional programming is only accessible to mad scientists and academics. With its clean and readable syntax, world-class tooling, and friendly compiler, Elm is truly a delightful language.
The Elm Architecture helps you create complex, modular web apps with code that stays easy to maintain as you add features. Toss in great performance, no runtime exceptions, and JavaScript interop, and you've got a super-charged way to produce reliable, scalable, and maintainable web apps!
But what we love most about Elm is that you can actually build practical stuff with it quickly, which is exactly what we do in this course.
Elm compiles to JavaScript, so trying out Elm is easy. Convert a small part of your app to Elm and embed it in JS. No full rewrites, no huge time investment.
Unlike hand-written JavaScript, Elm code does not produce runtime exceptions in practice. Instead, Elm uses type inference to detect problems during compilation and give friendly hints. This way problems never make it to your users. There are several examples where companies are running applications on thousands of lines of Elm, and even after more than a year in production, it still has not produced a single runtime exception anywhere.
Elm has its own virtual DOM implementation, designed for simplicity and speed. All values are immutable in Elm, and the benchmarks show that this helps us generate particularly fast JavaScript code.
As Elm compiles to JavaScript, you can really use it to build very complicated single page applications. Eventually it’s possible to interface with other JavaScript code when necessary. With Elm, cost savings are enormous. Elm component architecture allows problems to be solved encapsulated. No more side-effects. No more pages and page scripts. No more untraceable bugs because of changing pages.
Why should you consider using Elm?
Elm offers many benefits over JavaScript, which you’ll see in this course.
Benefits such as:
- Zero Runtime Exceptions
- Simplified Debugging
- Easy Refactoring
- Helpful Type System & Compiler
- Improved Productivity
- Inherently testable code
- Enforced Semantic Versioning
- and many more...
Can we ask a favor? Lot of efforts have gone into creating this course, and new videos would be continuously added. We would be very grateful if you would help spread the word about this course. Thanks!