Hi, I'm Gal Ben Ami

Computer Science Student | Full-Stack Developer

About Me

Motivated Computer Science student with a solid foundation in object-oriented programming, algorithms, and software development. Experienced in full-stack development. Available for full-time work.

I'm passionate about building efficient, scalable applications and continuously expanding my knowledge in various programming languages and frameworks. I enjoy tackling complex problems and creating elegant solutions.

Education

Bachelor of Science in Computer Science

Ariel University • 2022 - 2026

Relevant Coursework:

  • Data Structures & Algorithms
  • Object-Oriented Programming
  • Database Systems
  • Web Development
  • Software Engineering
  • Operating Systems
  • System Design
  • Network Programming

GPA: 85 / 100

Projects

Israel Bridge Federation Website

Israel Bridge Federation

Building a brand-new web application for the IBF from scratch, using Next.js, TypeScript, Tailwind CSS, and Prisma. Replacing their outdated system, the project emphasizes accessibility, user-friendliness, secure payments, membership management, and an advanced rating system.

Next.jsPrismaTypeScriptTailwind CSS
Currently in progress
ClientLeader ThreadFollower 1Follower 2Follower 3

System Design Patterns

A multi-threaded server using Pipeline and Leader-Follower concurrency patterns to efficiently handle operations over TCP. Optimized performance and scalability with thread synchronization and resource management.

C++LinuxMulti-threadingTCP
Netcat Clone

Netcat Clone

A custom netcat-like tool that opens clients and servers over TCP, UDP, and UNIX domain sockets. It reroutes standard input/output based on flags and even includes a Tic-Tac-Toe game you can play against the computer, showcasing how versatile network communication can be across different protocols.

C++LinuxTCPUDPUNIX-Sockets
ML - Text Classification

ML - Text Classification

Using the 20 Newsgroups dataset, investigating the performance of various machine learning algorithms for text classification, and how does different dimensionality reduction techniques affect the results.

PythonSklearnMatplotlibPandas
async def receive_data(self) -> List[bytes] | None:
        """
        1. receive data from the socket and divide it into packet and frames
        2. if the packet is not SYN/ACK/SYN_ACK/FIN start measuring time
        3. if the stream_id is not in the streams stats dictionary,add it
        """
        frames_received_counter = 0
        while True:
            received_data, address = self.sock.recvfrom(QUIC_PACKET.Max_size)
            received_packet, received_frames = QUIC_PACKET.deserialize_data(received_data)

            if received_packet.packet_flag not in (FLAGS.SYN, FLAGS.ACK,
                                                   FLAGS.SYN_ACK, FLAGS.FIN):

                frames_received_counter += len(received_frames)
                # GOT THE FIRST PACKET OF THE SPECIFIC STREAM, START MEASURING TIME

                if received_packet.packet_flag == FLAGS.FIRST_PACKET:
                    if received_frames[0].stream_id not in self.streams_stats:
                        self.streams_stats[received_frames[0].stream_id] = Stats(received_frames[0].stream_id, 0, 0, 0,
                                                                                 time.time())
                    if OVERALL_DATA not in self.connection_stats:
                        self.connection_stats[OVERALL_DATA] = Stats(0, 0, 0, 0, time.time())

                if len(received_frames) != 0:
                    self.streams_stats[received_frames[0].stream_id].frames_amount += len(received_frames)
                    self.connection_stats[OVERALL_DATA].frames_amount += len(received_frames)
                # GOT THE LAST PACKET OF THE SPECIFIC STREAM, MEASURING END TIME
                if received_packet.packet_flag == FLAGS.LAST_PACKET:
                    self.streams_stats[received_frames[0].stream_id].time = time.time() - self.streams_stats[
                        received_frames[0].stream_id].time

QUIC Multi Streams

Asynchronous multi-stream QUIC functionality with dynamic frame management, leveraging asyncio for concurrent operations.

PythonAsyncioQUIC

Skills

Programming Languages

C/C++

Java

Python

TypeScript

JavaScript

HTML

CSS

SQL

Frameworks & Libraries

React

Next.js

Node.js

Symfony

Tailwind CSS

Prisma ORM

Doctrine ORM

Tools & Technologies

Git

MongoDB

MySQL

Windows

Linux

TCP/IP

Multi-threading

Resume

This is a short version of my resume. Click the button below to download the full resume.

Gal Ben Ami

Computer Science Student

Download Full Resume

Profile

Motivated Computer Science student with a solid foundation in object-oriented programming, algorithms, and software development. Experienced in full-stack development. Available for full-time work.

Education

Bachelor of Science in Computer Science

Ariel University

2022 - 2026

GPA: 85/100

Projects

Israel Bridge Federation

Currently in progress

Developing IBF's brand-new website (frontend & backend) using Next.js, Prisma, Tailwind CSS, and TypeScript.

QUIC multi streams (Python)

Asynchronous multi-stream QUIC functionality with dynamic frame management, leveraging asyncio for concurrent operations.

System Design Patterns (C++)

A multi-threaded server using Pipeline and Leader-Follower concurrency patterns to efficiently handle operations over TCP. Optimized performance and scalability with thread synchronization and resource management.

Technical Skills

  • C/C++, Java, Python, Shell, TypeScript, CSS, HTML, SQL
  • MongoDB, MySQL
  • React, Next.js, Node.js, Symfony
  • Windows, Linux
  • Git, Prisma ORM, Doctrine ORM

Get In Touch

Thank you for visiting my website!