Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Exercism

Julia

via Exercism

Overview

The creators of Julia want to eat their cake and have it too. As they describe in their blog post "Why We Created Julia" they want the speed of C, the dynamism of Ruby, the familiar mathematical notation of Matlab. They want it to be their favourite things from their favourite languages. String processing like Perl. Glue like the shell. Powerful but not impenetrably complex.

Julia has a powerful, yet clear and intuitive, dynamic type system. It allows writing dynamic code and specifying types if additional expressiveness is needed for simplification or performance increases. The language features multiple dispatch, meaning it chooses which method is called based on the types of each argument. This lets you write specific methods for certain types while providing generic fallbacks and is particularly useful for mathematical code, where it is not clear why an operation should belong to a specific argument.

Metaprogramming is easy in Julia. Code can be represented as a data structure in Julia itself, so a program can transform and generate its own code, similarly to Lisp. Large parts of Julia's base and standard library are also written in Julia. Understanding and changing it does not require knowledge of another language. If a library you need to use is written in another language, such as C, Fortran or Python, you can use simple interfaces to call them directly from your code.

Despite its young age, Julia is already being used in the real world in a variety of fields, such as but not limited to Finance, Data Science and Scientific Computing. You can find many showcase applications on the Julia Blog Aggregator, case studies from commercial use on juliacomputing.com, and a list of publications about the language and its applications in research here.

Syllabus

  • Hello World: The classical introductory exercise. Just say "Hello, World!"
  • Killer Sudoku Helper: Write a tool that makes it easier to solve Killer Sudokus
  • Leap: Given a year, report if it is a leap year.
  • Nucleotide Count: Given a DNA string, compute how many times each nucleotide occurs in the string.
  • Pangram: Determine if a sentence is a pangram.
  • Rotational Cipher: Create an implementation of the rotational cipher, also sometimes called the Caesar cipher.
  • Difference Of Squares: Find the difference between the square of the sum and the sum of the squares of the first N natural numbers.
  • Raindrops: Convert a number to a string, the content of which depends on the number's factors.
  • Secret Handshake: Given a decimal number, convert it to the appropriate sequence of events for a secret handshake.
  • Clock: Implement a clock that handles times without dates.
  • Robot Name: Manage robot factory settings.
  • Darts: Write a function that returns the earned points in a single toss of a Darts game
  • Hamming: Calculate the Hamming difference between two DNA strands.
  • Rna Transcription: Given a DNA strand, return its RNA Complement Transcription.
  • Run Length Encoding: Implement run-length encoding and decoding.
  • Scrabble Score: Given a word, compute the Scrabble score for that word.
  • Word Count: Given a phrase, count the occurrences of each word in that phrase.
  • Etl: We are going to do the `Transform` step of an Extract-Transform-Load.
  • Reverse String: Reverse a string
  • Allergies: Given a person's allergy score, determine whether or not they're allergic to a given item, and their full list of allergies.
  • Isogram: Determine if a word or phrase is an isogram.
  • Anagram: Given a word and a list of possible anagrams, select the correct sublist.
  • Minesweeper: Add the numbers to a minesweeper board
  • Binary Search: Implement a binary search algorithm.
  • Atbash Cipher: Create an implementation of the atbash cipher, an ancient encryption system created in the Middle East.
  • Grains: Calculate the number of grains of wheat on a chessboard given that the number on each square doubles.
  • Pascals Triangle: Compute Pascal's triangle up to a given number of rows.
  • Collatz Conjecture: Calculate the number of steps to reach 1 using the Collatz conjecture
  • Sieve: Use the Sieve of Eratosthenes to find all the primes from 2 up to a given number.
  • Luhn: Given a number determine whether or not it is valid per the Luhn formula.
  • Roman Numerals: Write a function to convert from normal numbers to Roman Numerals.
  • Isbn Verifier: Check if a given string is a valid ISBN-10 number.
  • Trinary: Convert a trinary number, represented as a string (e.g. '102012'), to its decimal equivalent using first principles.
  • Custom Set: Create a custom set type.
  • Rational Numbers: Implement rational numbers.
  • Complex Numbers: Implement complex numbers.
  • Robot Simulator: Write a robot simulator.
  • Circular Buffer: A data structure that uses a single, fixed-size buffer as if it were connected end-to-end.
  • Acronym: Convert a long phrase to its acronym
  • Armstrong Numbers: Determine if a number is an Armstrong number
  • Gigasecond: Given a moment, determine the moment that would be after a gigasecond has passed.
  • Phone Number: Clean up user-entered phone numbers so that they can be sent SMS messages.
  • Prime Factors: Compute the prime factors of a given natural number.
  • Triangle: Determine if a triangle is equilateral, isosceles, or scalene.
  • Bob: Bob is a lackadaisical teenager. In conversation, his responses are very limited.
  • Resistor Color Trio: Convert color codes, as used on resistors, to a human-readable label.
  • Perfect Numbers: Determine if a number is perfect, abundant, or deficient based on Nicomachus' (60 - 120 CE) classification scheme for positive integers.
  • Spiral Matrix: Given the size, return a square matrix of numbers in spiral order.
  • All Your Base: Convert a number, represented as a sequence of digits in one base, to any other base.
  • Matching Brackets: Make sure the brackets and braces all match.
  • Pythagorean Triplet: There exists exactly one Pythagorean triplet for which a + b + c = 1000. Find the product a * b * c.
  • Alphametics: Write a function to solve alphametics puzzles.

Reviews

Start your review of Julia

Never Stop Learning.

Get personalized course recommendations, track subjects and courses with reminders, and more.

Someone learning on their laptop while sitting on the floor.