Join devRant
Do all the things like
++ or  rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Get a devDuck
Rubber duck debugging has never been so cute! Get your favorite coding language devDuck
Buy Now
Search  "linear algebra"

About six months ago I decided I wanted to learn to write a neural network from the ground up, using only the C++ standard lib. Had to learn some linear algebra, multivariable calc and a dash of wizardry.
The mathematics of neural networks is still one of the coolest things I've ever learnt. It still marvels me that you can make a specialized minibrain out of nothing but numbers.18 
To become an engineer (CS/IT) in India, you have to study:
1. 3 papers in Physics (2 mechanics, 1 optics)
2. 1 paper in Chemistry
3. 2 papers in English (1 grammar, 1 professional communication). Sometimes 3 papers will be there.
4. 6 papers in Mathematics (sequences, series, linear algebra, complex numbers and related stuff, vectors and 3D geometry, differential calculus, integral calculus, maxima/minima, differential equations, descrete mathematics)
5. 1 paper in Economics
6. 1 paper in Business Management
7. 1 paper in Engineering Drawing (drawing random nuts and bolts, locus of point etc)
8. 1 paper in Electronics
9. 1 paper in Mechanical Workshop (sheet metal, wooden work, moulding, metal casting, fitting, lathe machine, milling machine, various drills)
And when you jump in real life scenario, you encounter source/revision/version control, profilers, build server, automated build toolchains, scripts, refactoring, debugging, optimizations etc. As a matter of fact none of these are touched in the course.
Sure, they teach you a large set of algorithms, but they don't tell you when to prefer insertion sort over quick sort, quick sort over merge sort etc. They teach you Las Vegas and Monte Carlo algorithms, but they don't tell you that the randomizer in question should pass Die Hard test (and then you wonder why algorithm is not working as expected). They teach compiler theory, but you cannot write a simple parser after passing the course. They taught you multicore architecture and multicore programming, but you don't know how to detect and fix a race condition. You passed entire engineering course with flying colors, and yet you don't know ABC of debugging (I wish you encounter some notorious heisenbug really soon). They taught 23 programming languages, and yet you cannot explain simple variable declaration.
And then, they say that you should have knowledge of multiple fields. Oh well! you don't have any damn idea about your major, and now you are talking about knowledge in multiple fields?
What is the point of such education?
PS: I am tired of interviewing shitty candidates with flying colours in their marksheets. Go kids, learn some real stuff first, and then talk some random bullshit.18 
Python Tools to Get Started with Machine Learning
SciPy  the most fundamental library with essential packages such as NumPy, matplotlib, Pandas, and SymPy.
NumPy  gives you the ability to play with your data as 'arrays' using some powerful array functions and linear algebra functions. Very essential since most computing is done with arrays of numbers.
Matplotlib  to visualize data and model outputs using 2D plotting with some 3D functionality.
Pandas  a highly flexible package which introduces dataframes to Python, a type of inmemory data table. Makes it easy to understand the data's structure and provides easy to use SQLlike commands to play with the data.
SymPy  is a package used for symbolic mathematics and computer algebra.
StatsModels  commonly used package for statistical methods and algorithms.
Scikitlearn  Most popular and easy to understand library filled with machine learning algorithms. A good start for beginners and practitioners working with smaller data loads.
RPy2  A cross between Python and R. Allows you to call R functions from within Python.
NLTK (Natural Language Toolkit)  this toolkit in Python has functions and methods for text analysis.13 
Ooh this is good.
At my first job, i was hired as a c++ developer. The task seemed easy enough, it was a research and the previous developer died, leaving behind a lot of documentation and some legacy fortran code. Now you might not know, but fortran can be really easily converted to c, and then refactored to c++.
Fine, time to read the docs. The research was on pollen levels, cant really tell more. Mostly advanced maths. I dug through 500+ pages of algebra just to realize, theres no way this would ever work. Okay dont panic, im a data analyst, i can handle this.
Lets take a look at the fortran code, maybe that makes more sense. Turns out it had nothing to do with the task. It looped through some external data i couldnt find anywhere and thats it. Yay.
So i exported everything we had to a csv file, wrote a java program to apply linefit with linear regression and filter out the bad records. After that i spent 2 days in a hot server room, hoping that the old intel xeon wouldnt break down from sending java outputs directly to haskell, but it held on its own.1 
!rant.
The 'Essence of Essential Algebra' is an amazing YouTube playlist by 3Blue1Brown to watch if you want to start understanding the algebraic concepts underlying Machine Learning!4 
Happened with me☺☺joke/meme maths machine learning python programming linear algebra programmer code calculus funny ++ shower

Work for 2 days trying to solve a Level 2 foobar problem and then realize I need to know linear algebra to solves matrices programmatically... And the results have to be in Fractions10

!rant
The more I learn about advanced C++ the more I love this language. C++'s template system is so insanely cool!
Just made a proof of concept expression templates based linear algebra library for my own projects. It was actually a lot of fun to make, and seeing it spit out optimized, loopfused code with no temporary variables...magic.
Long live C++.7 
YES FUCKING FINALLY. After 8 years of programming professionally, I got to use linear transformations and algebra while coding with javascript in real life.4

First year: intro to programming, basic data structures and algos, parallel programming, databases and a project to finish it. Homework should be kept track of via some version control. Should also be some calculus and linear algebra.
Second year:
Introduce more complex subjects such as programming paradigms, compilers and language theory, low level programming + logic design + basic processor design, logic for system verification, statistics and graph theory. Should also be a project with a company.
Year three:
Advanced algos, datastructures and algorithm analysis. Intro to Computer and data security. Optional courses in graphics programming, machine learning, compilers and automata, embedded systems etc. ends with a big project that goes in depth into a CS subject, not a regular software project in java basically.4 
Being a programmer in a scientific discipline can be infuriating.
using "no one" ="almost no one"
using everyone = "almost everyone"
1. No one knows what even the very idea of good practice is. And everyone refuses to learn. 3k lines of repetitive copy pasted main. 500 lines of plotting method.
2. Raw Cstyle pointer based array creation. Won't use develope array libraries because what if development stops. FUCKING HAVE YOU SEEN YOUR CODE WHAT IF DEVELOPMENT ON YOUR CODE STOPS. FUCK.
3. LOOP VARIABLES DECLARED AT THE BEGINNING OF THE METHOD WHY.
4. Everyone wants to make modular, independent code. No one wants to use OOP. NOPE. ALL IN ONE FILE. WRITE C++ LIKE A FUCKING PYTHON NOTEBOOK. FUCK.
5. LIBRARIES OH MY GOD PLEASE DO NOT CODE UP YOUR MATRIX MULTIPLICATION. PLEASE DO NOT TRIPLE LOOP IT. NO. THE LINEAR ALGEBRA LIBRARY WILL STAY IN DEVELOPMENT.
6. Please realize that literally not one comment over an 1800 line file does not help anyone.
FUCKING. WHY. WHY ARE WE SCIENTISTS SO GOOD AT SCIENCE AND SO FUCKING SHIT AT THE CODE THAT MAKES OUR SCIENCE HAPPEN. WHY. FUCKING. WHY. FUCK.undefined rage no comments scientific computing fuck this shit wall of text bad code science fuck c++ fucking4 
Quarantine day..... i've stopped counting...
Numbers and time have lost all meaning...
I now use my free time to fill paper sheets with various random japanese symbols, learn linear algebra and being a "human" clojure interpreter......
( send help )
My location is the result of multiplying the matrокрызгкруойж п ыТк)4&2(1&/(0 υβεκσ´αω;·3)@!}€{]¥~+~;];{*<=
<<< COMMUNICATION ABORTED >>>6 
I was all happy using and applying Machine Learning algorithms until I came to do a Research Internship and now I'm sitting in the lab studying Linear Algebra, Probability and Statistics the whole day just to cope up with the guys who are improving and developing algorithms here!11

Soooo I have greatly underestimated the value of the shit you can learn in Kaggle, both from the projects that people do and from the learning section that they have. I wouldn't exactly classify them as beginner level or for complete newbies.
By default, if you wanna go and learn about ML then be trady to have some mathematical background to at least the level of Linear algebra, statistics and some basic calculus, everything else can be learned as you go along.
But ye, shit is fucking cool man, they have sooo many cool projects in it. I learned from academic shit in uni and a fuckload of books, but i dig this approach sooo much more.
10/10 would kaggle again2 
So I am trying to implement a deep learning paper.
And I started reading, It's fucking unbelievable
First page: maybe I will get it in the second page!!
Second page: what did I miss from the first page?
Third page: Woohw, let me start over.
Now: I am reading about linear algebra and basic probability theories.
I guess this is is why not anyone can be on deep learning research areas and not used by many developers.4 
> be me
> studying 1.5 years liberal arts stuff and general education class at community college
> transfer to a 4 year university.
> realize I need a major
> Realize I also I wanted to 9ne day have a family.
> realize family would need money
> "struggling actor" not a great choice
> pray about what I should be doing
> get distinct impression that instead of attending the session on majors at the college of fine and performance arts to go to session with the college of Science and engineering.
> hear pitch for computer science.
> signup for introduction to programming taught with c++.
> A couple semesters down the line take 3 classes all at once Discrete Math 1, Linear Algebra, and database design and administration.
> around week 6 realize that all 3 classes revolved around sets and set logic and set math.
> realize rdbs's are "applied" set math and that Each class a little more "applied" than the former.
> Be genius at SQL and set math
> havereally smart database teacher mentored me
> get introduced to the recruiter at the career fair.
> get interviews
> get flown out for 2md interview
> get internship
> do work, and get project back under budget
> a job offer
> finish senior year
> start as a "real" developer supporting business data and analytics.
> ???
> profit.3 
During my studies on the university, while preparing for the linear algebra exam I had a dream where I was a matrix in the Jordan normal form.5

I just cant Wrap my head around matrices and linear Algebra.
I am currently doing a uni course about this and need to implement some eigenvalue solvers. I somehow manage to implement the stuff with the help of pseudocode and the internet but I have nö idea conceptually what all these things like norms, eigenvalues, conditioning etc are supposed to tell me and why.
How do people handle this so naturally?10 
Develop my first mobile app with a restful backend for consumer usage
Learn more about cloud architecture/computing
Finish learning calculus
Learn linear algebra, discrete math, statistics and probability
Maybe start ML this year depending on math progress and time2 
I'm so glad that I got a CS degree learning Data Structures, Algorithms, Operating systems, Databases, Linear Algebra, Software Engineering, Networking and many more...
How else would I have been able to center a div with CSS or change the Background color?2 
Linear algebra is a hammer that actually works well on things akin to a nail when wielded right. Do you have a similar wildcard that works everytime you try it?2

Giving a tensorflow workshop and the thing people struggle the most is the Linear Algebra behind it... it is only gradients in tensor and some matrix multiplication.
My recommendation is: do you want to work with Deep Learning algorithms? Y'all need Linear Algebra, not PhD, just a bit! 
First and foremost, students should be carefully taught the logic and mentality behind programming. Most of the time I see that the introductory programming courses waste so much energy in teaching the language itself. So students kinda just get fucked cause many people end up ending the course without having actually gained the "programming perspective".
Stop teaching pointers and lambdas and even leave the object oriented stiff till later. If a student doesn't know why we use a For loop then how can they learn anything else.
I believe once that thing in your brain clicks about programming, everything goes smooth from there... kinda :P
Second of all, and this pertains mainly to the engineering and science disciplines.
We need a fundamental and strong mathematical foundation. And no I don't mean taking fucking double integrals. Teach us Linear Algebra, Graph theory, the properties of matrices, and Probability theory.
One of the things I suffered from most and regret in university is having a weak foundation in math and having to spend more time catching myself up to speed.
It's so annoying reading a paper on a new algorithm or method and feeling like an idiot because I can't understand what magic these people did.
Numerical Methods...
Ok this is more deeper, maybe a 2nd year course.
But this is something we take for granted.
Computers don't magically add and subtract and multiply.
They fuck up.
And it'll bite you in the ass if you're not even aware that the computer we all love so much isn't as perfect as we think
Some hardware knowledge.
Probably a basic embedded systems course with arduinos
just so you can get a feel for how our beautiful software actually makes those electrons go weeeeeeeee
And finally
Practice practice
Projects projects
like honestly
just give me the internet and some projects
Ill learn everything else
Projects are the best motivation
I hate this purely theoretical approach
where we memorize or read code and write these stupid exams
Test what we are capable off
make us do projects that take sleepless nights and litres of coffee
And judge our methods, documentation, team work, and output
Team work skills and tools (VCS, communicating, project management, etc.)
Documentation and Reporting
Properly
:)
maybe even with LaTeX :D
Yeah that's the gist of whats on my mind at the moment regarding an ideal computer science education
At least the foundations
The rest I leave it to the next dude. 
!dev (?)
Why does my teacher think it's reasonable to give an assignment for writing a scientific article about quantum computing in the first semester of CS? Like really? I just got out of fucking high school you bitch, all math I know is basic linear algebra. Thankfully I'm a nerd that likes computers so I got the basis of classical computing covered, I can only imagine how my classmates that never touched a computer are holding up.9 
I am going to start studying linear algebra but not sure which book I should use. I have a hard copy of Linear Algebra and its Applications. But I don't know wheater its good or bad. Should I use it or look for another book?9

My fellow devs, appreciate what you have right now, even if it doesn't seem that great. I've recently switched majors from Bioinformatics to Medicine and I wouldn't say I regret it, but I do certainly doubt this decision sometimes. While studying Bioinformatics, I was always really interested in the biological part, often wanting to learn more about medical topics and such, thinking if I did switch, I could always keep programming as a hobby. Now I did switch and I miss being in a professional CS field so much. Medicine is great, but the people who study are mentally completely different from people that code. I still code small projects on the side, but don't really have anyone to talk to about them and I'm even starting to regret not paying more attention in linear algebra. I miss linear algebra, think about how ridiculous that is haha. Anyways, if you are looking forward to a major change in your life, it might not be all that you think it will be. So look at your current situation, it might be what you wanted all along.
Thanks for listening.
.
.
.
Also it is incredible, how technologically incompetent most medical students are lol6 
I'm an apprentice software engineer, have been for about a year now. I feel so dumb all the time. Used to be I'd just teach myself at my own pace for about a year or two (which was slow, on and off because of life getting in the way). Now I'm surrounded by programmers with decades more experience than me and I can't help but feel inferior.
I want to get better faster but, I work fulltime now so I don't know how to supplement my studying. I've been studying linearalgebra online because my maths is crap and I remember one of my colleagues mentioning that it would be useful. But now I'm not sure because apparently discrete mathematics is better.
I also need to keep up with Java since that's what I'm learning in university but, I'm mostly using React/Typescript in my current project. By the time I finish work I don't even want to look at a line code and I lack the selfdiscipline to force myself to study in the evening.
I need to pick a direction and stick with it but, it's seems to just be increasingly harder as I've gone on.3 
Any good linear algebra resources, preferably videos explained elegantly without much expectation of previous knowledge.5