Notable Course Projects
Neural Networks
Delved Deeper into the Memory Neural Networks from the most basic designs, like auto-associative networks, to the most complicated ones, Recurrent Neural Networks and their derivations such as LSTMs, GRUs, and Bert. Also, exploited the power of these models to train networks on various datasets such as bitcoin prices and texts extracted from tweets.
Learned the principles of Convolutional Neural Networks and the models that fall under CNNs, including the Inception model and the U-net. Also, developed and compared different CNN models to analyze different aspects of their structures and designs.
Analyzed the applications of Generative Adversarial Networks and their derivatives like cycle-GANs alongside Variational Auto-Encoders. Also, Implemented a cycle-GAN using the PyTorch framework.
Reinforcement Learning
- Solved different n-armed bandit problems with different policies considering different criteria such as regret and average reward, utilizing Prospect theory by Daniel Kahneman to investigate the monetary value of waiting in a real-world problem.
- Develop a load balancing framework on the famous jack’s rental car problem using policy iteration algorithm.
- Analyzed different On-policy and Off-policy methods by comparing their accuracy and performance on different tasks.
Artificial Intelligence
- Learned and applied the basic models in AI such as clustering and regression models on various datasets, including the bank churners and house prices dataset.
- Analyzed different classification models such as random forests by applying them on various datasets and learning more about entropy and information-theory basics.
- Examined the performance of different searching algorithms such as A* and IDS on custom-built datasets.
Advanced Programming
- Learned different design patterns and also clean coding principles by implementing a handful of programs covering diverse subjects such as hotel management, social networks, and file compression & cryptography.
- Get to know the essential elements of game design by designing a game from scratch using the C++ programming language.
Operating Systems
- Implemented an FTP-server using the C++ programming language, including different features such as tolerating a down server by switching to a UDP-based p2p network model shared between the individuals.
- Developed a load balancing system using semaphores.
- Learned the principles of multithreading and multiprocessing in operating systems by implementing a parallel classifier.
Computer Networks and Network Security
- Implemented a p2p network with peers being able to find their neighbors and check the tolerability of the system by turning off nodes at random.
- Implemented an FTP-server from scratch using Python language and socket-programming, having various features such as logging in to the server, downloading the available files, and uploading new files to the server.
- Examined RYU-controllers and different congestion control mechanisms.
- Analyzed and used different network security protocols and algorithms used to encrypt files and also mail security (SMIME).
Compiler
- Implemented a compiler from scratch for a given language analogous to Java programming language.
- Learned and analyzed different design patterns, particularly those used in language theory and compilers like Observer pattern, by developing different toy-tasks on this topic.