Due to the fact that many of these projects are still being used to asses
students at SU, these repos must be set to private, in order to prevent
students from
copying my work
* 1st Year, 1st Semester - Lines of Action, a game similar to 
othello, written
  in java.
* 1st Year, 2nd Semester - Obstacle Chess, Normal chess rules, with new pieces
  introduced, such as bombs, wall's, trapdoors, etc. Written in java.
* 2nd Year, 1st Semester - Sudoku Solver, using a heuristic algorithm +
  mutations on possible solutions to form new solutions, written in java.
* 2nd Year, 2nd Semester - Wrote a compiler for a pascal like language named
  ALAN standing for Another LANguage, includes scanning, parsing, typechecking,
  codegen (to the jvm using 
jasmin) the compiler was written in C.
* 2nd Year, 2nd Semester - 
Brainfuck Intepreter,
  written in x86 Assembly.
* 2nd Year, 2nd Semester - 
Huffman Encoder,
  written in x86 Assembly
* 3rd Year, 1st Semester - Process Scheduler simulator, written in C.
* 3rd Year, 1st Semester - Bank Transaction simulator, using omp, and locks to
  prevent race conditions, written in C.
* 3rd Year, 1st Semester - Othello bot, using MPI, and negamax search with
  alpha beta pruning to find optimal moves, written in C.
* 3rd Year, 1st Semester - Food review website using flask (python), redis,
  neo4j.
* 3rd Year, 2nd Semester - Multi-Client/Server chat program. Both client and
  server written in Java. For more details, please see:
  
- 
Project Specification.
* 3rd Year, 2nd Semester - TCP and RBUDP file sharing program. Written in Java.
  More details:
  
- 
Project Specification.
* 3rd Year, 2nd Semester - NAT Simulation, that is a fully simulated "Internet
  Environment", with the following simulated protocals: IP, TCP, UDP Ethernet
  Frames, DHCP, ICMP. Written in Java.  For more details, see below:
  
- 
Project Specification
* 3rd Year, 2nd Semester - VoIP/Messaging program Using TCP for messaging, and
  for VoIP we use UDP packets for sending the audio streams. Client for Making
  and recieving calls/ conference calls, as well as direct and or group
  messaging. Both server and client are written in Java. Details:
  
- 
Project Specification.
* 3rd Year, 2nd Semester - P2P File hosting/sharing system, which is made up of
  a central server which handles minimal book-keeping. The actual file transfer
  occurs in 2 stages, the first is a handshake to ensure that the sender is
  talking to the reciever and vice versa, this is done using certificates and
  RSA encryption. Once the intial handshake is completed, a 96 key is
  transmited to the reciever encrypted using the recievers public key (RSA
  encryption, the keys where passed during the handshake). The sender will
  encrypt the payload using that key, as well as generating the next key that
  will be used and padding it into the data. We then encrypt and send the
  packet.  This forms a 
one-time-pad, which is
  unbreakable.  The recieve uses the inital key that was recieved from the
  secure handshake process to decrypt the recieved packet, it then removes the
  included key that was padded, and will use that key to decrypt the next
  process, this process continues until all packets are recieved. This is a
  super simplified explanation of the security. Written in Java, details can be
  found below:
  
- 
Project Specification.