Summer Internship

Summer Internship

We offer several positions in different fields of Computer Science and Engineering.  You can apply for these positions here.

Early Application Deadline:  June 3, 2023 (13 Khordad)

Notification for  Early Applications: June 6, 2023 (16 Khordad)

Normal Application Deadline:  June 15, 2023 (25 Khordad)

Notification for Normal Applications: June 18, 2023 (28 Khordad)

Late Application Deadline:  June 28, 2023 (7 Tir)

Notification for Late Applications: July 01, 2023 (10 Tir)

Applied Projects

Requirements:

Knowledge of GNU/Linux Operating system

Knowledge of Programming and Scripting with Python and Bash

Additional Requirements:

Ansible

Kubernetes

Description

This project aims to automate the deployment and maintenance of infrastructure and applications used to develop, test and provide HPC services. For this purpose, we aim to change our infrastructure and deployment operations to IaC (Infrastructure as Code). This approach helps with documentation and reproducibility of operations and reduces manual effort. Our primary focus is developing Ansible codes and Helm Charts for common operations.

Requirements:

Basic knowledge of Web Programming

Basic knowledge of Java

Additional Requirements:

Basic knowledge of database operations

Basic knowledge of application deployment

Basic knowledge of distributed systems

Basic knowledge of containers

Basic knowledge of Kubernetes

Description 

  • IPM HPC center is proud to offer various services; the most important being a user-friendly and easy-to-use portal to our own HPC cluster (supercomputer). Other services include an events portal, our website and ….
  • Most of these services are a few years old now and were designed with software engineering principles of the time. To improve our quality of service we aim to re-architect our services. Our services’ distributed and modular nature and the lack of need for exceptionally low latencies make them perfect candidates for microservices design patterns.
  • Currently few of our services are hosted on a Kubernetes cluster, our goal is to use this cluster to host the rest of our services as well. To take full advantage of Kubernetes it is necessary to re-architect our services as described above.
  • As of last year, the IPM HPC center offers self-hosted HPC portal services to other universities and research centers, therefore low effort redeployment of the system is another goal of this project.

Requirements:

Basic knowledge of Web Programming

Basic knowledge of Java

Additional Requirements:

Basic knowledge of database operations

Basic knowledge of application deployment

Basic knowledge of distributed systems

Basic knowledge of containers

Basic knowledge of Kubernetes

Description 

Most academic documents are written using LaTeX. Since the syntax isn’t easy to remember and it’s hard to visualize the result in real-time, LaTeX editors become very practical tools. The ability to share documents and edit them in real-time is another important requirement for many individuals. Online LaTeX editors are an answer to this need. The most famous one of these editors is Overleaf. Due to sanctions and concerns of some researchers, it’s hard to access overhead and even harder to purchase premium features.

The goal of this project is to provide a service as such, we will modify the open-source version of OverLeaf and add the necessary features to provide it as a service.

To assure the quality of a service it is also important to find a good model of deployment and storage for this application. Towards this goal, we aim to deploy the application on a hibernated cluster.

Requirements:

Basic knowledge of Web Programming

Basic knowledge of Go programming language

Additional Requirements:

Basic knowledge of database operations

Basic knowledge of application deployment

Basic knowledge of distributed systems

Basic knowledge of containers

Basic knowledge of Kubernetes

Description 

  • One of the most popular services offered by HPC centers is hosted jupyter notebooks. Some of the most famous services in this category include Google Collaboratory, Kaggle Notebooks, azure notebooks and many more.
  • Our team in the IPM HPC center has developed a system to provide this service. Furthermore, this system was extended to allow support for arbitrary containers with a web shell (containers don’t require jupyter notebook itself, just a compliant web shell is enough)
  • Currently we are in the process of improving and further developing our in-house system to add more features and improve the quality of service.
  • The “Engine” part of this project focuses on the engine of the system; that is the part responsible for provisioning containers and notebooks and patching them through to users.

Requirements:

Basic knowledge of Web Programming

Basic knowledge of Go programming language

Additional Requirements:

Basic knowledge of database operations

Basic knowledge of application deployment

Basic knowledge of distributed systems

Basic knowledge of containers

Basic knowledge of Kubernetes

Description 

  • One of the most popular services offered by HPC centers is hosted jupyter notebooks. Some of the most famous services in this category include google collaboratory, Kaggle Notebooks, azure notebooks and many more.
  • Our team in the IPM HPC center has developed a system to provide this service. Furthermore, this system was extended to allow support for arbitrary containers with a web shell (containers don’t require jupyter notebook itself, just a compliant web shell is enough)
  • Currently we are in the process of improving and further developing our in-house system to add more features and improve the quality of service.
  • The “Interface” part of this project focuses on the user interface; that is the part responsible for hiding away the complexity of the engine from users, offering a good presentation of service and providing required functionality to regular users and system administrators through communicating with the engine and another back-end service. This project involves the development of both front-end and back-end.

Prerequisites:

Python

CSS, javascript

web scraping tools

Description:

The project aims to implement a bot to play an online game and compete with humans. The opportunity of using game theory and reinforcement learning is an interesting side of the project.

Prerequisites:

Basic compiler knowledge

C Programming

OpenMP programming

CUDA programming

Description:

This project aims to design a parallelizing tool that gets a c code and a sample dataset as inputs and then finds the loops and highly time-consuming parts of the code to parallelize these sections. In the following, the best strategy is selected by testing all methods (serial, multi-core, GPU) based on the sample dataset and finding the optimal solution for each section separately. The mentioned strategy is just a suggestion, and we can develop new ideas as well.

Prerequisites:

CSS and javascript

Java

Spring Framework

Description:

This project aims to train talented people for the design and development of web applications by doing small projects.

Prerequisites:

C and C++

Compiler design (lexical analysis)

Algorithms

Statistics

Description:

The goal of this project is to analyze a set of programming codes and decide about the possibility of plagiarism and using other implementations in each programming code.

Prerequisites:

 Linux

Docker

php

CSS and javascript

C and C++

Description:

The Berkeley Open Infrastructure for Network Computing, an open-source middleware system, supports volunteer and grid computing. Originally developed to support the SETI@home project, it became generalized as a platform for other distributed applications in areas as diverse as mathematics, linguistics, medicine, molecular biology, climatology, environmental science, and astrophysics, among others. BOINC aims to enable researchers to tap into the enormous processing resources of multiple personal computers around the world

Our purpose is to understand the mechanism of this framework and setup the server side and run our tasks on this framework. This project is high potential for a lot of ideas and makes a great tool too. It should be mentioned that the agent user-side application of BOINC is a cross-platform application that can run on Android phones.

Research Projects

Prerequisites:

Image processing: You should be familiar with techniques for image filtering, enhancement, and restoration.

Computer vision: You’ll need to have a good understanding of image classification, object detection, and segmentation techniques.

Machine learning: You’ll need to understand the basics of machine learning, such as supervised and unsupervised learning, as well as deep learning techniques like convolutional neural networks (CNNs) and recurrent neural networks (RNNs).

Programming: You’ll need to be proficient in at least one programming language, such as Python, and be familiar with popular libraries like TensorFlow, PyTorch, and OpenCV.

Mathematics: You’ll need to be comfortable with mathematical concepts such as calculus, optimization, and differential equations.

Description 

This topic involves using deep learning techniques to perform perspective transformations on images. The aim is to correct distortions caused by camera perspectives, such as when taking photos of buildings or landscapes.

Prerequisites:


Image processing: You should be familiar with techniques for image filtering, enhancement, and restoration.

Computer vision: You’ll need to have a good understanding of image classification, object detection, and segmentation techniques.

Machine learning: You’ll need to understand the basics of machine learning, such as supervised and unsupervised learning, as well as deep learning techniques like convolutional neural networks (CNNs) and recurrent neural networks (RNNs).

Programming: You’ll need to be proficient in at least one programming language, such as Python, and be familiar with popular libraries like TensorFlow, PyTorch, and OpenCV.

Mathematics: You’ll need to be comfortable with mathematical concepts such as calculus, optimization, and differential equations.

Description 

This topic involves the analysis and generation of document images that contain multiple types of content, such as text, images, and graphics. The aim is to develop algorithms that can automatically analyze and generate these types of documents.

Prerequisites:


Image processing: You should be familiar with techniques for image filtering, enhancement, and restoration.

Computer vision: You’ll need to have a good understanding of image classification, object detection, and segmentation techniques.

Machine learning: You’ll need to understand the basics of machine learning, such as supervised and unsupervised learning, as well as deep learning techniques like convolutional neural networks (CNNs) and recurrent neural networks (RNNs).

Programming: You’ll need to be proficient in at least one programming language, such as Python, and be familiar with popular libraries like TensorFlow, PyTorch, and OpenCV.

Mathematics: You’ll need to be comfortable with mathematical concepts such as calculus, optimization, and differential equations.

Description 

This topic involves developing a forward algorithm that can solve both image classification and segmentation problems simultaneously. The aim is to develop a more efficient and accurate algorithm for these tasks.

 

Prerequisites:


Image processing: You should be familiar with techniques for image filtering, enhancement, and restoration.

Computer vision: You’ll need to have a good understanding of image classification, object detection, and segmentation techniques.

Machine learning: You’ll need to understand the basics of machine learning, such as supervised and unsupervised learning, as well as deep learning techniques like convolutional neural networks (CNNs) and recurrent neural networks (RNNs).

Programming: You’ll need to be proficient in at least one programming language, such as Python, and be familiar with popular libraries like TensorFlow, PyTorch, and OpenCV.

Mathematics: You’ll need to be comfortable with mathematical concepts such as calculus, optimization, and differential equations.

Description 

This topic involves using deep learning techniques to stitch together multiple images into a single composite image. The aim is to create high-quality panoramic images or 360-degree photos.

Prerequisites:


Image processing: You should be familiar with techniques for image filtering, enhancement, and restoration.

Computer vision: You’ll need to have a good understanding of image classification, object detection, and segmentation techniques.

Machine learning: You’ll need to understand the basics of machine learning, such as supervised and unsupervised learning, as well as deep learning techniques like convolutional neural networks (CNNs) and recurrent neural networks (RNNs).

Programming: You’ll need to be proficient in at least one programming language, such as Python, and be familiar with popular libraries like TensorFlow, PyTorch, and OpenCV.

Mathematics: You’ll need to be comfortable with mathematical concepts such as calculus, optimization, and differential equations.

Description 

This topic involves using deep learning techniques to generate images based on textual descriptions. The aim is to develop algorithms that can generate realistic images that match the descriptions provided.

Prerequisites:

HDL

Machine learning

Python Programming

Description:

Hardware accelerators can be designed for a variety of tasks, such as graphics processing, ML, cryptography, and signal processing. The design of a hardware accelerator typically involves selecting and optimizing the appropriate hardware components and developing algorithms and software that can efficiently utilize these components.

Hardware accelerator design is becoming increasingly important as the demand for high-performance computing continues to grow, particularly in areas such as artificial intelligence, big data analytics, and scientific research. By designing specialized hardware components that can handle specific tasks more efficiently than a general-purpose CPU, hardware accelerator design can significantly improve the performance and energy efficiency of computing systems.

Prerequisites:

HDL

HLS

Description:

Computer arithmetic is the field of study that deals with the design and analysis of algorithms and hardware for performing arithmetic operations in digital computers. It involves the development of algorithms and techniques for performing basic arithmetic operations such as addition, subtraction, multiplication, division, and other more complex operations such as exponentiation, logarithms, and trigonometric functions.

Computer arithmetic is essential in many fields of computing, such as scientific computing, engineering, finance, and cryptography. It is also a fundamental component of many computer hardware design and implementation tasks, including the design of arithmetic logic units (ALUs), floating-point units (FPUs), and digital signal processors (DSPs).

Prerequisites:

C++

Machine learning

Python Programming

Description:

Neural network acceleration using GPUs is a process of utilizing the computational power of GPUs to perform the matrix multiplication and other operations required for training and running a neural network. GPUs are suitable for these tasks because they have many cores that can perform calculations in parallel, allowing them to process large amounts of data quickly. By offloading the compute-intensive tasks from the CPU to the GPU, significant speedups can be achieved, reducing training and inference times by orders of magnitude. This technique allows researchers and practitioners to train and deploy more complex models more quickly, which can lead to advances in fields such as computer vision, natural language processing, and robotics.

Specialized software libraries such as CUDA or OpenCL are used to write code that can be executed on the GPU. Input data is loaded onto the GPU memory, and the neural network model parameters are also transferred to the GPU memory. The GPU performs matrix multiplication operations between the input data and model parameters, which are then used to calculate the output values of the neural network. Specialized hardware accelerators such as TPUs and FPGAs are also available for neural network acceleration, but they require specialized hardware and software expertise to use effectively.

If you are  interested in other computer architecture subjects, you may apply for this position