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  "matrices"

Started being a Teaching Assistant for Intro to Programming at the uni I study at a while ago and, although it's not entirely my piece of cake, here are some "highlights":
* students were asked to use functions, so someone was ingenious (laughed my ass off for this one):
def all_lines(input):
all_lines =input
return all_lines
* "you need to use functions" part 2
*moves the whole code from main to a function*
* for Mathrelated coding assignments, someone was always reading the input as a string and parsing it, instead of reading it as numbers, and was incredibly surprised that he can do the latter "I always thought you can't read numbers! Technology has gone so far!"
* for an assignment requiring a class with 3 private variables, someone actually declared each variable needed as a vector and was handling all these 3 vectors as 3D matrices
* because the lecturer specified that the length of the program does not matter, as long as it does its job and is wellwritten, someone wrote a 100lines program on one single line
* someone was spamming me with emails to tell me that the grade I gave them was unfair (on the reason that it was directly crashing when run), because it was running on their machine (they included pictures), but was not running on mine, because "my Python version was expired". They sent at least 20 emails in less than 2h
* "But if it works, why do I still have to make it look better and more understandable?"
* "can't we assume the input is always going to be correct? Who'd want to type in garbage?"
* *writes 10 ifstatements that could be basically replaced by one forloop*
"okay, here, you can use a forloop"
*writes the for loop, includes all the ifstatements from before, one for each of the 10 values the forloop variable gets*
* this picture
N.B.: depending on how many others I remember, I may include them in the comments afterwards24 
My favorite client just brought in a new team member who thinks he's god's gift to web development and design. Every week he gives me a long list of things he thinks are wrong with the website.
Now he's cloning pages of the site and adding hideously distorted images and excel screenshots of information matrices formatted the way he wants them. And he wants them published as he has made them because his ideas are obviously the best ones! (guess who he voted for)
He also claims that nobody can figure out how to purchase anything on the site, including him! Even after I've made it so you'd have to be frickin' Helen Keller not to be able to stumble over a BIG FAT BUY NOW BUTTON literally everywhere you look because this site is for geriatric senile MORONS who can't click their way out of a paper bag!!!5 
And once again:
18:00: *writing a Mandelbrot algo in glsl for the GPU*
19:00: "This should be working now..."
22:00: "why isn't it working??!"
22:30: "Oh my uniform vectors become zero when they arrive on the GPU"
01:00: "Oh. I uploaded them as matrices..."
I wasted about 4 fucking hours because I suck dick.5 
math be like:
"Addition (often signified by the plus symbol "+") is one of the four basic operations of arithmetic; the others are subtraction, multiplication and division. The addition of two whole numbers is the total amount of those values combined. For example, in the adjacent picture, there is a combination of three apples and two apples together, making a total of five apples. This observation is equivalent to the mathematical expression "3 + 2 = 5" i.e., "3 add 2 is equal to 5".
Besides counting items, addition can also be defined on other types of numbers, such as integers, real numbers and complex numbers. This is part of arithmetic, a branch of mathematics. In algebra, another area of mathematics, addition can be performed on abstract objects such as vectors and matrices.
Addition has several important properties. It is commutative, meaning that order does not matter, and it is associative, meaning that when one adds more than two numbers, the order in which addition is performed does not matter (see Summation). Repeated addition of 1 is the same as counting; addition of 0 does not change a number. Addition also obeys predictable rules concerning related operations such as subtraction and multiplication.
Performing addition is one of the simplest numerical tasks. Addition of very small numbers is accessible to toddlers; the most basic task, 1 + 1, can be performed by infants as young as five months and even some members of other animal species. In primary education, students are taught to add numbers in the decimal system, starting with single digits and progressively tackling more difficult problems. Mechanical aids range from the ancient abacus to the modern computer, where research on the most efficient implementations of addition continues to this day."
And you think like .. easy, but then you turn the page:17 
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

Story time:
I'm in the 7th semester of an 8 semesters carreer (computer science) and my first class is at 7:00 am and for some reason since the semester started I haven't get in time for that class (the best I've done is 7:40), but the teachers are cool with that and they allow me to give them the activities later that day. The only consequence I've had with being late for school is one time the teacher explained one of the programs we had to make for the next week that consisted in making a VB project that, in a windows form, draw a cube and putting buttons to move the cube (up, down, left, right), change the size (bigger, smaller) and rotate the cube (in x, in y, in z). In order to do this we needed to use different matrices to calculate the position of each corner and convert the 3dimension coordinates to 2dimension coordinates... It was a long process but once you get it its pretty easy to understand.
The thing is, none of my classmates understood the process and no one could tell me anything further the fact that we had to use matrices. So I looked for the teacher for that week and fortunately he had a free hour on Friday (the program was supposed to be for Thursday but since no one did it and those who did it weren't what the teacher wanted he told me that if it worked by Monday and if it had no bugs or errors he would accept it) and explained me the same thing he explained at class.
Well, this experience helped me to increase my ego because I finished the program in 5 hours and my classmates couldn't finish it in the whole week. I told them I could have helped them but no one helped me in first place.
In that moment I knew I choose the right career.undefined vb but not really they're cool sometimes screw them school ceti i love computer science story 
I'm porting code. Help.
I barely know the madness behind this  zero comments, undescriptive 2 or 3 letter variable names, matrices shown as a bunch of vec3s, inconsistent naming conventions (Fuck naming conventions when the variable names are near nonsense anyway  vs, na, ba, ca, a, b, c, Rxy/Ryr/Rzr0/1/2, cx, sx, cz, sz, n0, n1, n0v, n1v, dotrzrxry, sy to name a few).
Solution: Just copy this code, slightly adapt it to use my own inputs, and never look back on it ever ever again ever.
This code has been out and in use for over a year and some months now. Over that time, a few brave souls like me have looked at it and tried to make sense of it. Noone has dared to decode the madness behind that section this entire time.
Oh and don't even get me started on the rest of the code! 943 lines, 4 of which are comments, next to no blank spacing lines, basically zero horizonal spacing also, integers dependent on knowing exactly how much madness there is, etc.
And all the other files have basically zero comments/spacing also.6 
Shit Developers say:
Fuck you Jasmine and your camelCase
I’ve been wrestling cucumbers all day
Oh no all the cucumbers are broken
In a fit of refactoring madness I have gone and changed a lot
Did you seriously just give ME nil?... No!
If the shit sticks, then we put nice paint on it
Fucking red dot motherfucker (Ben and his failing specs)
You know what we don’t do often..kill each others builds. Kill them and reschedule for later. Mwahaha ha ha.
This build is going to be so rad...(5mins later)...Ok this is not going to pass..I can feel it in my waters!
Can i do that in a digital way or do i have to move my meaty body downstairs to find him?
All the donkeys have be out the gate by sundown
God, imagine if you could patent mathematical solutions
actually, I wouldn't be surprised if you can in the states "no, you can't use a laplace transform, you haven't got the rights, you have to use a less accurate transform on your matrices"
ooooo a boolean that's phrased in the negative, my favourite for code review destruction!
Fuck the police i'll call the object here
Web RTC  its super easy, all you have to do is..probably some hard stuff
I want to go to that conference so I can start arguments with dickheads about semicolons. Just for fun.
This this is not the same as that this.
Can’t come to work I can’t find any clothes. It’s best for everyone if I just don’t come in. ...2 hours later... Yeah my clothes were just in the other room and i couldn’t be fucked moving
(OH about bad bug reports)  you know when they are all like oh joogly joogly doesn’t doodle doodle and it should wobbly doodle you know? and im all like fuck i don’t know any of that shit you are talking about.
Him: "I don’t like it, it’s against REST convention its so 2006 that my eyes are bleeding. As a privileged white male i feel entitled to complain about this." Me: "you. were. eleven in 2006
Source: Kellective Github6 
Got a mathematics library I develop and maintain. Someone filed a feature request ticket for matrices of matrices. As in, each value of the primary matrix is another matrix. Not understanding why anyone would need such a convoluted concept, I asked for clarification.
Response: "This piece of shit library isn't feature complete without it, now stop being a lazy fag in your mother's basement and actually do something"
Lololololol. Sure thing. Let me go waste two or more weeks of my life developing something i've never seen used in math, without any justification beyond "feature".4 
Whenever I'm looking at automata, matrices, sets, anything confusing and maths based, I always remind myself how I used to be in awe of the year 6's (5th grades) getting to learn about negative numbers...
Negative number seem so much easier than sets and strings... 
Taking an online test to practise programming. They give me code that takes two 3x3 matrices as inputs and outputs a third. I have to multiply them together and ouput results.
Within minutes I've worked my head around it, got four lines of code to do it all. Output fails.
Twenty minutes later, nearly failing the time limit I find out that they couldn't output the array proplerly in C++
Are3[I, j];
;( What a hair puller.1 
Fuck you MATLAB and your shitty inefficient for loops. Now I have to rewrite most of my code to use matrices instead of structures cause you take so long. Fuck you and your stupid ability to scale my neural network.....who needed sleep anyway6

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. 
Why is vectorization library faster than handwritten for loops ? I mean, somewhere down the line, the matrices/vectors must be multiplied (or any other operation) and thus be onebyone (for loop??) calculated and stored.
Why is it then faster to use these libraries than just manually writing for loops all over the place ?
I guess some low level magic (OpenBLAS ?) goes on there but I just don't see it..
P.S. [Would have posted it on stack overflow but I'd be ripped apart so I'm pioneering new ways]11 
This semester in college we're supposed to learn some machine learning using mostly Matlab. The first laboratories (technically the second, but the first we actually do something) we're learning basics of Matlab.
We were given an instruction PDF that talks about assigning variables, creating functions and classes, and some basic operators.
A the end of the instruction are exercises, but the thing is, they require knowledge of a lot of Matlab functions, like linspace, reshape, random numbers, vectors and matrices, but it does not tell anywhere about then or how to use them.
An example: exercise 4 tells us to read docs about 'ezplot' and plot sin^2(x).
Then, exercise 5 tells us to generate a 100 element linear space for 2pi to 2pi, calculate the sigmoid value of each point and plot it.
The professor looked personally offended that we had no idea what a sigmoid is and that we were all struggling to calculate it. He almost shouted at us for trying to use ezplot (which we assumed is what we're supposed to use based on exercise 4) instead of regular plot do visualize it.
I fucking hate this kind of professors.
Also, the real fuckfest is in the last exercise. I'll try to translate it to English as close as I can:
Create a 100 element vector of random positive integers and then save it as a matrix with the amount of rows equal to the amount of unique values in the vector and 100 columns and then for each element of the original vector encode it's value in the form of 1 in the field whose index equals the value of that element increased by one.
Yes it's all in one sentence, and no, nowhere in the instruction does it say how to do any of that.
Also, we have a test about all of that tommorow and I don't think anyone will pass it2 
I need to tell you the story of my MOAB (Mother of all bugs).
I need to write some stuff in C (which i am fairly used to) and have a function that allocates memory for a Matrix on the heap. The matrix has a rows and columns property and an associated data array, so it looks like this
struct Matrix{
uint8_t rows;
uint8_t columns;
uint8_t data[];
}
I allocate rows*columns + 2 bytes of memory for it.
I also have a function to zero it out which does something like this
for(int i=0; i < rows*columns;i++){
data[i]=0;}
Let‘s come to the problem:
On my Mac the whole stuff works and passes all tests. We tried the code on a Linux machine and suddenly the code crashed in various places, sometimes a realloc got an invalid pointer, sometimes free got an invalid pointer and basically the code crashed at arbitrary points randomly.
I was confused af because did i really make THAT many errors?
I found out that all errors occured when testing my matrices so i looked more into it and observed it through the debugger.
Eventually i came to the function that zeroes out my matrix and it went unusually high and wondered if my matrix really was that big.
Then i saw it
The matrix wasn‘t initialised yet
It had arbitrary data that was previously in the heap.
It zeroed out a huge chunk of the heap space.
It literally wrote a zero to a shitload of addresses which invalidated many pointer.
You can imagine my facepalm4 
How useful is my degree? I'm not sure to be honest. I did get to dive into a lot of subject matter which I find interesting and challenging. I also had to learn stuff I hate (solving matrices of differential equations). Strangely though, even though I doubt I will ever use this I am proud of myself for having slugged though it.
The teachers were helpful and supportive, I got to study in groups and had access to resources such as the university's GPU cluster.
In my day2day? So far, I cannot see anything I use directly. However, the university forced me to learn to pick up different technologies quickly, read the documentation, ask for help when your don't understand something. So, in that regard I think I profited from university.
I wasn't the best student by a long shot. My class mates helped me a lot. I struggled A LOT. Having been in the recieving end of a helping hand, o return the favour where ever I can.