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

Exercism

C#

via Exercism

Overview

Coursera Flash Sale
40% Off Coursera Plus for 3 Months!
Grab it
C# is a multi-paradigm, statically-typed programming language with object-oriented, declarative, functional, generic, lazy, integrated querying features and type inference. Statically-typed means that identifiers have a type set at compile time--like those in Java, C++ or Haskell--instead of holding data of any type like those in Python, Ruby or JavaScript.

Syllabus

  • Hello World
    • Exercism's classic introductory exercise. Just say "Hello, World!".
  • Bird Watcher
    • Learn about arrays by keeping track of how many birds visit your garden.
  • Lucian's Luscious Lasagna
    • Learn about the basics of C# by following a lasagna recipe.
  • Annalyn's Infiltration
    • Learn about Booleans while helping Annalyn rescue her friend.
  • Secure Munchester United
    • Learn about casting by creating security passes.
  • Squeaky Clean
    • Learn about characters and StringBuilder by cleaning strings.
  • Jedlik's Toys
    • Learn about classes by working on a remote controlled car.
  • Authentication System
    • Learn about the const and readonly keywords by refactoring an authentication system.
  • Need for Speed
    • Learn about classes by creating cars.
  • Booking up for Beauty
    • Learn about the DateTime class by working on an appointment scheduler for a beauty salon.
  • International Calling Connoisseur
    • Learn about dictionaries by keeping track of international dialling codes.
  • Logs, Logs, Logs!
    • Learn about enums by parsing logs.
  • Face ID 2.0
    • Learn about equality by adding face recognition to a login process.
  • Calculator Conundrum
    • Learn about error handling by working on a simple calculator.
  • The Weather in Deather
    • Learn about expressions by improving legacy code.
  • Attack of the Trolls
    • Learn about flag enumerations by checking permissions of user accounts on an internet forum.
  • Interest is Interesting
    • Learn about floating point numbers by adding interest to savings accounts.
  • Wizards and Warriors
    • Learn about inheritance by creating an RPG.
  • Hyper-optimized Telemetry
    • Learn about bit conversion by implementing a message protocol.
  • Remote Control Competition
    • Learn about interfaces by working on cars.
  • Tracks on Tracks on Tracks
    • Learn about lists by keeping track of programming languages you want to learn.
  • Wizards and Warriors 2.0
    • Learn about classes by extending an RPG.
  • Red vs. Blue: Darwin Style
    • Learn about namespaces by managing car development teams.
  • Remote Control Cleanup
    • Learn about nested types by refactoring a car class.
  • Tim from Marketing
    • Learn about nullables by printing name badges.
  • Cars, Assemble!
    • Learn about numbers by analyzing the production of an assembly line.
  • Developer Privileges
    • Learn about object initialisers by adding functionality to an authentication system.
  • Hyperia Forex
    • Learn about operator overloading by introducing a new currency to a bank.
  • Hyperinflation Hits Hyperia
    • Learn about arithmetic overflow by dealing with hyperinflation.
  • Building Telemetry
    • Learn about parameter modifiers by adding telemetry to a car.
  • Weighing Machine
    • Learn about properties by modelling a weighing machine.
  • Roll the Die!
    • Learn about randomness by generating numbers in a game.
  • Parsing Log Files
    • Learn about regular expressions by parsing logs.
  • Object Relational Mapping
    • Learn about the IDisposable interface by implementing an ORM system.
  • Orm in One Go
    • Learn about the using block by implementing an ORM system.
  • High School Sweethearts
    • Learn about string formatting by helping high school sweethearts profess their love on social media.
  • Log Levels
    • Learn about strings by processing logs.
  • Land Grab in Space
    • Learn about structs by improving the performance of a land claim system.
  • Football Match Reports
    • Learn about switches by developing a system to report on soccer matches.
  • Beauty Salon Goes Global
    • Learn about the DateTime class by helping a salon deal with timezones.
  • Phone Number Analysis
    • Learn about tuples by analysing phone numbers.
  • Instruments of Texas
    • Learn about exceptions by handling adding multiplication to a calculator.
  • Log Analysis
    • Learn about extension-methods by analysing logs.
  • Two Fer
    • Create a sentence of the form "One for X, one for me.".
  • Leap
    • Determine whether a given year is a leap year.
  • Gigasecond
    • Given a moment, determine the moment that would be after a gigasecond has passed.
  • Resistor Color
    • Convert a resistor band's color to its numeric representation.
  • Space Age
    • Given an age in seconds, calculate how old someone is in terms of a given planet's solar years.
  • High Scores
    • Manage a player's High Score list.
  • Hamming
    • Calculate the Hamming distance between two DNA strands.
  • Nucleotide Count
    • Given a DNA string, compute how many times each nucleotide occurs in the string.
  • Robot Name
    • Manage robot factory settings.
  • Allergies
    • Given a person's allergy score, determine whether or not they're allergic to a given item, and their full list of allergies.
  • Grade School
    • Given students' names along with the grade that they are in, create a roster for the school.
  • Rotational Cipher
    • Create an implementation of the rotational cipher, also sometimes called the Caesar cipher.
  • Circular Buffer
    • A data structure that uses a single, fixed-size buffer as if it were connected end-to-end.
  • Clock
    • Implement a clock that handles times without dates.
  • Bob
    • Bob is a lackadaisical teenager. In conversation, his responses are very limited.
  • Matching Brackets
    • Make sure the brackets and braces all match.
  • Spiral Matrix
    • Given the size, return a square matrix of numbers in spiral order.
  • Tournament
    • Tally the results of a small football competition.
  • Variable Length Quantity
    • Implement variable length quantity encoding and decoding.
  • Dominoes
    • Make a chain of dominoes.
  • Forth
    • Implement an evaluator for a very simple subset of Forth.
  • Pangram
    • Determine if a sentence is a pangram.
  • Isogram
    • Determine if a word or phrase is an isogram.
  • Acronym
    • Convert a long phrase to its acronym.
  • Grains
    • Calculate the number of grains of wheat on a chessboard given that the number on each square doubles.
  • Perfect Numbers
    • Determine if a number is perfect, abundant, or deficient based on Nicomachus' (60 - 120 CE) classification scheme for positive integers.
  • Collatz Conjecture
    • Calculate the number of steps to reach 1 using the Collatz conjecture.
  • Phone Number
    • Clean up user-entered phone numbers so that they can be sent SMS messages.
  • Scrabble Score
    • Given a word, compute the Scrabble score for that word.
  • Meetup
    • Calculate the date of meetups.
  • Difference of Squares
    • Find the difference between the square of the sum and the sum of the squares of the first N natural numbers.
  • Resistor Color Duo
    • Convert color codes, as used on resistors, to a numeric value.
  • Resistor Color Trio
    • Convert color codes, as used on resistors, to a human-readable label.
  • Series
    • Given a string of digits, output all the contiguous substrings of length `n` in that string.
  • Sum of Multiples
    • Given a number, find the sum of all the multiples of particular numbers up to but not including that number.
  • Accumulate
    • Implement the `accumulate` operation, which, given a collection and an operation to perform on each element of the collection, returns a new collection containing the result of applying that operation to each element of the input collection.
  • All Your Base
    • Convert a number, represented as a sequence of digits in one base, to any other base.
  • Largest Series Product
    • Given a string of digits, calculate the largest product for a contiguous substring of digits of length n.
  • Pascal's Triangle
    • Compute Pascal's triangle up to a given number of rows.
  • Prime Factors
    • Compute the prime factors of a given natural number.
  • Pythagorean Triplet
    • Given an integer N, find all Pythagorean triplets for which a + b + c = N.
  • Armstrong Numbers
    • Determine if a number is an Armstrong number.
  • Darts
    • Calculate the points scored in a single toss of a Darts game.
  • Triangle
    • Determine if a triangle is equilateral, isosceles, or scalene.
  • Rational Numbers
    • Implement rational numbers.
  • Complex Numbers
    • Implement complex numbers.
  • Raindrops
    • Convert a number into its corresponding raindrop sounds - Pling, Plang and Plong.
  • Bottle Song
    • Produce the lyrics to the popular children's repetitive song: Ten Green Bottles.
  • Proverb
    • For want of a horseshoe nail, a kingdom was lost, or so the saying goes. Output the full text of this proverbial rhyme.
  • Strain
    • Implement the `keep` and `discard` operation on collections.
  • House
    • Output the nursery rhyme 'This is the House that Jack Built'.
  • Protein Translation
    • Translate RNA sequences into proteins.
  • Roman Numerals
    • Convert modern Arabic numbers into Roman numerals.
  • Simple Cipher
    • Implement the Vigenère cipher, a simple substitution cipher.
  • ETL
    • Change the data format for scoring a game to more easily add other languages.
  • Parallel Letter Frequency
    • Count the frequency of letters in texts using parallel computation.
  • Alphametics
    • Given an alphametics puzzle, find the correct solution.
  • Sieve
    • Use the Sieve of Eratosthenes to find all the primes from 2 up to a given number.
  • Anagram
    • Given a word and a list of possible anagrams, select the correct sublist.
  • Binary Search
    • Implement a binary search algorithm.
  • Kindergarten Garden
    • Given a diagram, determine which plants each child in the kindergarten class is responsible for.
  • Secret Handshake
    • Given a decimal number, convert it to the appropriate sequence of events for a secret handshake.
  • Matrix
    • Given a string representing a matrix of numbers, return the rows and columns of that matrix.
  • Crypto Square
    • Implement the classic method for composing secret messages called a square code.
  • Flower Field
    • Mark all the flowers in a garden.
  • Food Chain
    • Generate the lyrics of the song 'I Know an Old Lady Who Swallowed a Fly'.
  • Tree Building
    • Refactor a tree building algorithm.
  • Change
    • Correctly determine change to be given using the least number of coins.
  • Rectangles
    • Count the rectangles in an ASCII diagram.
  • Wordy
    • Parse and evaluate simple math word problems returning the answer as an integer.
  • Connect
    • Compute the result for a game of Hex / Polygon.
  • SGF Parsing
    • Parsing a Smart Game Format string.
  • Atbash Cipher
    • Create an implementation of the Atbash cipher, an ancient encryption system created in the Middle East.
  • Binary Search Tree
    • Insert and search for numbers in a binary tree.
  • Flatten Array
    • Take a nested list and return a single list with all values except nil/null.
  • List Ops
    • Implement basic list operations.
  • Sublist
    • Write a function to determine if a list is a sublist of another list.
  • Ledger
    • Refactor a ledger printer.
  • OCR Numbers
    • Given a 3 x 4 grid of pipes, underscores, and spaces, determine which number is represented, or whether it is garbled.
  • Saddle Points
    • Detect saddle points in a matrix.
  • Palindrome Products
    • Detect palindrome products in a given range.
  • Hangman
    • Implement the logic of the hangman game using functional reactive programming.
  • Two Bucket
    • Given two buckets of different size, demonstrate how to measure an exact number of liters.
  • Go Counting
    • Count the scored points on a Go board.
  • D&D Character
    • Randomly generate Dungeons & Dragons characters.
  • Queen Attack
    • Given the position of two queens on a chess board, indicate whether or not they are positioned so that they can attack each other.
  • Robot Simulator
    • Write a robot simulator.
  • Bank Account
    • Simulate a bank account supporting opening/closing, withdraws, and deposits of money. Watch out for concurrent transactions!
  • Simple Linked List
    • Write a simple linked list implementation that uses Elements and a List.
  • Error Handling
    • Implement various kinds of error handling and resource management.
  • Affine Cipher
    • Create an implementation of the Affine cipher, an ancient encryption algorithm from the Middle East.
  • ISBN Verifier
    • Check if a given string is a valid ISBN-10 number.
  • Twelve Days
    • Output the lyrics to 'The Twelve Days of Christmas'.
  • Word Count
    • Given a phrase, count the occurrences of each word in that phrase.
  • Yacht
    • Score a single throw of dice in the game Yacht.
  • DOT DSL
    • Write a Domain Specific Language similar to the Graphviz dot language.
  • Linked List
    • Implement a doubly linked list.
  • Diamond
    • Given a letter, print a diamond starting with 'A' with the supplied letter at the widest point.
  • Grep
    • Search a file for lines matching a regular expression pattern. Return the line number and contents of each matching line.
  • Luhn
    • Given a number determine whether or not it is valid per the Luhn formula.
  • Markdown
    • Refactor a Markdown parser.
  • State of Tic-Tac-Toe
    • Determine the game state of a match of Tic-Tac-Toe.
  • Word Search
    • Create a program to solve a word search puzzle.
  • Bowling
    • Score a bowling game.
  • REST API
    • Implement a RESTful API for tracking IOUs.
  • Poker
    • Pick the best hand(s) from a list of poker hands.
  • Run-Length Encoding
    • Implement run-length encoding and decoding.
  • Pig Latin
    • Implement a program that translates from English to Pig Latin.
  • Transpose
    • Take input text and output it transposed.
  • Say
    • Given a number from 0 to 999,999,999,999, spell out that number in English.
  • Book Store
    • To try and encourage more sales of different books from a popular 5 book series, a bookshop has decided to offer discounts of multiple-book purchases.
  • Custom Set
    • Create a custom set type.
  • Nth Prime
    • Given a number n, determine what the nth prime is.
  • Rail Fence Cipher
    • Implement encoding and decoding for the rail fence cipher.
  • Diffie-Hellman
    • Diffie-Hellman key exchange.
  • Zebra Puzzle
    • Solve the zebra puzzle.
  • React
    • Implement a basic reactive system.
  • POV
    • Reparent a graph on a selected node.
  • Zipper
    • Creating a zipper for a binary tree.
  • Reverse String
    • Reverse a given string.
  • RNA Transcription
    • Given a DNA strand, return its RNA complement.
  • Conway's Game of Life
    • Implement Conway's Game of Life.
  • Eliud's Eggs
    • Help Eliud count the number of eggs in her chicken coop by counting the number of 1 bits in a binary representation.
  • Knapsack
    • Given a knapsack that can only carry a certain weight, determine which items to put in the knapsack in order to maximize their combined value.
  • Square Root
    • Given a natural radicand, return its square root.
  • Killer Sudoku Helper
    • Write a tool that makes it easier to solve Killer Sudokus
  • Satellite
    • Rebuild binary trees from pre-order and in-order traversals.
  • Intergalactic Transmission
    • Add parity bits to a message for transmission
  • Relative Distance
    • Given a family tree, calculate the degree of separation.
  • Split-Second Stopwatch
    • Keep track of time through a digital stopwatch.
  • Baffling Birthdays
    • Estimate the birthday paradox's probabilities.
  • Swift Scheduling
    • Convert delivery date descriptions to actual delivery dates.
  • Camicia
    • Simulate the card game and determine whether the match ends or enters an infinite loop.

Reviews

Start your review of C#

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.