Tensor Notes 4: Classifying and Clustering Images with tc-SVD
tc-SVD applied to handwritten digits, faces and four clustering benchmarks, with the numbers reported as they are, including the data sets where other methods won.
I build fast, reliable backends with C#, ASP.NET Core, SQL Server and Redis, and I research tensor decomposition methods for learning from big data. More than ten years of production engineering keep my research practical, and the mathematics keeps my engineering rigorous.
CP decomposition: a sum of rank-1 terms; here a single term, T ≈ a ∘ b ∘ c.
Years building high-traffic backend systems
Students on an adaptive testing platform I architected
Peak concurrent exam users on a Redis HA setup I designed
M.Sc. GPA in Computer Science (≈ top 5%)
I am a senior .NET backend engineer with more than ten years of experience building high-traffic systems with C#, ASP.NET Core, SQL Server, Redis and Docker. I have delivered .NET 6/8 microservices, SQL Server optimization and a Redis high-availability architecture for online assessment platforms serving about 89,000 students and 45,000–70,000 concurrent users at exam peaks, and before that I worked on banking and financial systems. I work hands-on as a technical lead: performance tuning, distributed caching, production troubleshooting and mentoring backend teams.
After a B.Sc. in Applied Mathematics, I earned an M.Sc. in Computer Science at Tarbiat Modares University, where my thesis, Big Data Learning with Tensor Representation, developed tc-SVD, a tensor decomposition built on a cosine-transform product, and learning methods on top of it. I have also been a teaching assistant for Advanced Machine Learning and Data Mining.
I work in industry and in academia: I build production systems that stay fast under pressure, and I research the mathematics of large-scale data.
Senior Backend Engineer · 10+ years
M.Sc. Computer Science · Tarbiat Modares University
More than a decade of production engineering, grounded in mathematics and research.
NovaTech · Tehran (remote)Current
IRT-based adaptive testing platform for about 89,000 students; leads the .NET microservices team.
.NET 6/8 · EF Core · SQL Server · Redis · Docker · Python
Independent
Marketplaces, banking tools, business systems and SaaS products built on .NET.
.NET · ASP.NET Core · EF Core · SQL Server · PostgreSQL · Redis · RabbitMQ · React · React Native
Noraco · Australia (remote contract)
PDF-to-LaTeX and LLM tagging pipeline for a bank of 5,000+ exam questions.
FastAPI · React · LaTeX · LLM APIs
Gozine2 · Tehran
Redis Sentinel high availability for 45,000–70,000 concurrent users; founded a data science team.
.NET 6 · SQL Server · Redis · RabbitMQ · Docker · Serilog
Gozine2 · Tehran
Faster reporting and structured logging for production investigations.
ASP.NET Core · SQL Server · Redis · Serilog
Refah Bank exchange house
FX remittance back office that replaced spreadsheet-based accounting.
ASP.NET Core · EF Core · SQL Server · Serilog
OmidanHozoor · Tehran
Stabilized React and React Native apps; versioned, documented REST APIs.
React · React Native · .NET Core · Swagger
Withem
A private social network for actors, built on the .NET stack.
Advanced Machine Learning & Data Mining
Machine learning and data mining courses, in 2018 and again in 2020–2021.
Tarbiat Modares University · Tehran
GPA 18.8 / 20 (≈ top 5%). Thesis on tensor representation for big data learning.
Tensor Decomposition · Machine Learning · Big Data
Urmia University · Urmia
The mathematical foundation both tracks are built on.
Tensor decomposition, t-SVD, tensor products and matricization, applied to classification and clustering of big data.
Read the thesis summaryWhat I build with, and what I research with.
C# and ASP.NET Core APIs, background services and data access tuned for high traffic.
Clear boundaries and resilient designs that hold up at exam-day peaks.
SQL Server tuning, distributed caching and messaging behind 45,000–70,000 concurrent users.
Containers, CI/CD, observability and tests from unit level to load.
Tensor methods, machine learning and data mining, plus applied AI and item response theory.
Web and mobile front ends with React and React Native, and Python APIs with FastAPI.
Native in two languages and professional in two more.
Production systems I have built and led, and the research behind my academic track.
IRT-driven item selection for personalized assessments, with scoring, reporting and analytics workflows built to hold up at exam peaks.
A Redis Sentinel architecture plus SQL Server and API tuning, validated with Locust load tests before exam peaks.
A PDF-to-LaTeX pipeline with LLM-generated topic, skill and difficulty tags, and a React console for QA and online publishing.
Live market and banking metrics in one interface, built on .NET Core microservices, SignalR streaming and reusable chart components.
A back-office system that replaced spreadsheet-based FX remittance accounting: remittances, commissions, counterparty balances and reports, plus an importer for the old data.
tc-SVD, a tensor decomposition built on a cosine-transform product, mapping data into a compact feature space for classification and clustering.
tc-SVD and t-SVD in MATLAB, with tensor-based classification, clustering and incremental updates from my M.Sc. research.
A financial management backend for accounts, transactions and loans, structured with Clean Architecture, DDD and CQRS.
Mathematica notebooks that reproduce the experiments of numerical analysis papers on integral equations, wavelet methods and Runge–Kutta schemes.
Competitive programming and machine learning, measured against thousands of participants.
of 50,000+
of 2,000+
of 5,000+
Machine learning
Writing on tensor methods, big data and backend engineering.
tc-SVD applied to handwritten digits, faces and four clustering benchmarks, with the numbers reported as they are, including the data sets where other methods won.
One exam and its mathematics lesson had four legitimate student counts: 521, 530, 522 and 523. How request identity, applicability filters, seen-blank versus unseen coding and a silent library helper decided who and what entered
Three new exams showed far lower maximum IRT discrimination than the archive. Before blaming the questions, I checked the 2PL model, a stored Lambda, a misleading 3pl name and two code paths, and learned to read a coefficient as
Structuring a Minimal API service that stays readable at fifty endpoints: feature folders, route groups, TypedResults, validation, ProblemDetails, output caching, rate limiting, health checks, an upgrade path from .NET 6/8 and
The t-SVD quietly assumes your data wraps around along its third mode. Swapping that for a mirror boundary gives the tc-product and tc-SVD: real arithmetic through the DCT and consistently shorter run times.
How an IRT-based adaptive test picks every next question: 1PL to 3PL models, EAP ability estimates, maximum information with exposure control and content balancing, and an API that stays responsive at exam peaks.
Tensors have more than one SVD, and each one gives something up. A tour of Tucker, CP and the t-product behind t-SVD, with a short NumPy implementation you can run.
Video players send play, pause, seek and heartbeat events, and some of them never arrive. How I turned that noisy telemetry into reliable per-learner watch-time facts with .NET 10 and SQL Server.
Exam platforms idle for weeks, then everyone starts at once. Redis Sentinel failover, StackExchange.Redis configuration, stampede-safe caching and Locust load tests, from a setup that carried 45,000 to 70,000 concurrent users.