Skip to content

Latest commit

 

History

History
44 lines (35 loc) · 1.61 KB

README.md

File metadata and controls

44 lines (35 loc) · 1.61 KB

MIT 6.005 (Elements of Software Construction)

My solutions to MIT's 6.005 assignments.

Pi poetry ✔️

Find English words in the digits of Pi.

Midi piano ✔️

Implement a simple midi keyboard - play notes, change instruments, change octaves and record/play recording.

Calculator parser ✔️

Implement a calculator parser.

  1. Define a grammar:
    Symbols:
+, -, *, /  
scalar, in (inches), pt (point)  
( )  

Grammar:

calculator ::= (regular | parenthesised)+  
parenthesised = OPEN_P (regular | parenthesised)+ CLOSE_P  
regular ::= (unit operator unit)+  
unit ::= scalar | IN | PT  
operator ::= PLUS | MINUS | MUL | DIV  
scalar ::= [\d]  
  1. Implement the lexer to tokenize the input.
  2. Implement the parser to evaluate the expressions.
  3. Put it all together.
Build a Sudoku solver with SAT ✔️

Implement the DPLL algorithm and use it to solve sudoku puzzles.

Finding prime factors with networking ✔️

Make a server to do prime factor searching. Create a client that makes requests to servers it is connected to. The client's connected servers must perform its operations concurrently.

Multiplayer minesweeper ✔️

Implement a server and thread-safe data structure for playing a multiplayer variant of "Minesweeper".

Jotto client GUI ✔️

Make a simple Jotto playing client that communicates with a server.