4 ms·
To teach programming, many universities structure their courses "bottom-up": 1. Intro: learning how to implement an algorithm 2. Algorithms+datastructures: le
by tralarpa 8y ago
To teach programming, many universities structure their courses "bottom-up":
1. Intro: learning how to implement an algorithm
2. Algorithms+datastructures: learning about existing algorithms/datastructures and how to design your own, reasoning about complexity
3. Program design: how to write larger programs (OO, compiler construction, distributed algorithms, etc.)
4. Managing the development process: project management,...
Those interview questions are highly annoying because they only cover levels 1+2. Other important technical skills (able to quickly understand code written by others, how to organize programs, etc.) are not tested. The questions are also rather insulting if the candidate has already several years of experience because they suppose that the candidate is still stuck at those lower levels.
But even if the goal is to test those lower levels, the questions are highly ineffective. Many of them do not test skills, they test your memory. You either have already heard about the cycle-detection question or you haven't. I am surrounded here by very smart people and I doubt that anyone of them would be able to find the answer to that question by themselves in a few minutes.
* The following rant is slightly off-topic:
However, I have to say that I am encountering more and more people like the person who posted here yesterday: People who have been programmers for several years and who admit that they have problems with loops and simple datastructures. In my opinion, if you have problems with those levels 1+2, you should not even think about the other levels. Many problems that we have for example in performance and cybersecurity are caused by the fact that most programmers simply don't know what they are doing. If you have problems with loops, you will not understand what a buffer overflow is. If you don't know what pointers are and how main memory works, you will not understand why your program is slow. And I am saying this as somebody who hates low-level languages like C (although I am quite good at them).
I know that this is currently a highly unpopular opinion among certain teachers who are pushing for a "softer" introduction to programming (with a lot of GUI designing and project management right from the beginning) and I have some sympathy for their position (students should not get the impression that CS is only about programming). But at some point you have to learn how a computer works, otherwise you will copy-paste from stackoverflow for the rest of your life.