Live data from Hacker News

The Missing Semester of Your CS Education

missing.csail.mit.edu

161–170 of 200 posts

Re: The Missing Semester of Your CS Education

#161

Earlier quoted context omitted.

Unpopular Opinion: IDEs suck when teaching people programming. A simple Text editor, the simpler the better, is all we need, combined with a compiler. Modern IDEs introduce a boatload of completely irrelevant concepts and complexity that just adds to the confusion. Doesn't matter which one you use. If I was to design a CS101 course, I'd do away with Java (which is the language of choice at my university) as well. I d…

> A simple Text editor, the simpler the better, is all we need > I'm not going to debug a boatload of mixed tabs and spaces issues As someone who uses an IDE, I have literally never had to worry about tabs vs spaces.

The problem isn't using one consistently, in self-written code, but students will copypaste small snippets from somewhere. While python recommends using spaces for everything, more than enough code exists that uses tabs. Now; not every IDE is smart enough to actually convert everything to whatever is set. It may work for PyCharm or VS Code, but then again, I specifically do not want to endorse any program.

Edit: Or put another way - if my CS101 course has about 500 participants (which is not unreasonable in Europe), even 1% with whitespace problems will keep you busy and from answering questions that provide real insight and understanding. Because, after all, while learning to distinguish a tab and n spaces is a valuable life skill, it's entirely not my point while teaching how to think when programming.

Re: The Missing Semester of Your CS Education

#162

> Vim avoids the use of the mouse, because it’s too slow; Vim even avoids using the arrow keys because it requires too much movement. I'm sorry, it isn't my intent to start an editor war. Use whatever you want, I don't care. Just don't lie about it. I expect far more from MIT than this nonsense. VI and VIM are what they are because keyboards of the era --and the entire UI-- looked like this: https://retrocomputingfor…

> Vim avoids the use of the mouse, because it’s too slow; Vim even avoids using the arrow keys because it requires too much movement. I haven't read the article, but this reads to me as "using the mouse is too slow, so try VIM instead and soon you won't need to use the mouse anymore." and "Reaching for the arrow keys takes too much time, so try VIM and keep your hands on the home row for added productivity.", respect…

The point is that this kind of productivity does not matter at all. I mean, not even 0.00001%.

We deliver complex hardware + software products that have to work correctly under challenging conditions and, ideally, not kill anyone in the process or burn down entire buildings. We do not deliver code-entry athletic performance.

In a typical project code entry time is so ridiculously insignificant that I would never hire anyone who came in and made the typical vi/vim argument about efficiency. This would instantly tell me they have no mental connection to what is actually important.

Another element is that, when you work in a multi-disciplinary environment you don't necessarily have the luxury of sticking with one tool. Which means devoting a lot of time on something like vi is pointless.

Another view: Say you have a team of 100 software engineers and you have to get a complex product out the door. Would taking a month off to train everyone to become a vi/vim ninja make this team deliver properly working bug-free code sooner and at a lower cost? The answer is, of course, no. Or, more accurately, no f-ing way. That's why this cult of efficiency is misguided.

Re: The Missing Semester of Your CS Education

#163

Non CS graduate here, funny how my learning curve has been basically what y'all are saying. I had one java class before I officially kick started my programming career by wiping windows off my laptop and installing ubuntu. Then proceeded to force myself to do everything from the command line, not that there were many other options. It escalated quickly from there. Starting from the terminal is much more intuitive tha…

> Starting from the terminal is much more intuitive than writing 'int main/ public static void main' in an IDE.

i would take this a step further: starting from _any_ REPL is an advantage in learning programming. the tight feedback loop fosters experimentation. python is another good starting point in this regard.

Re: The Missing Semester of Your CS Education

#164
Vim? Why not teach a real IDE like Eclipse or Intelij Community Edition? It has much better auto-completion, has a GUI for Git, debugging and profiling etc.

Also I'm missing test driven development or at least unit tests in the curriculum. Reproducible results are important, even at university.

Re: The Missing Semester of Your CS Education

#165
post #100

Earlier quoted context omitted.

Perhaps my experience was atypical, but freshman year included a course on proofs of correctness, starting from propositional logic and ending with LTL (comparable in concept to the system Lamport published as TLA+). Upper level course often included a hands-on section on PROMELA. These are not something I would expect a rando practitioner to know about or teach, and only rarely put into practice (albeit to good effe…

I'm not trying to be cheeky, but you're proving the point: I'd argue that UNIX systems and tools are the foundation of AWS, not TLA+. Amazon was famous for being held together with Perl, back in the day. If your service or company survives long enough for the marginal cost of applying TLA+ to it to be worthwhile, you can afford to hire postdocs to work on it. They probably have 10 people using TLA+ on it. There are p…

> If your service or company survives long enough for the marginal cost of applying TLA+ to it to be worthwhile, you can afford to hire postdocs to work on it.

Judging from the Amazon open reqs I've seen, it's their SRE team writing TLA+. So like, both topics are useful; I just don't think it's worth paying a professor to teach you how to use computers when there are so many other resources available. This is why I support things things like LUGs and student jobs -- I spent like 5 years supervising student SREs for the OSU Open Source Lab, speaking at Barcamps, presenting and advising at LUGs, etc. And why a couple of PhD students are running a one month session and recording it for posterity.

Re: The Missing Semester of Your CS Education

#166
post #71

Earlier quoted context omitted.

The quality of debuggers varies hugely, especially since different languages support different debugging features (e.g., conditions vs exceptions vs neither). Logging works pretty much the same everywhere.

I have never used a language that doesn't support visual debugging from the editor except maybe embedded c. Considering the complexity of "logging frameworks", logging is not always as easy as it may sound.

I take logging in the general sense to mean “print”, which is pretty easy.

I’ve used lots of languages without usable (visual) debuggers. I was probably programming for 10 years before I saw a debugger that didn’t crash the OS half the time it was invoked.

Re: The Missing Semester of Your CS Education

#167
post #116

Earlier quoted context omitted.

I find it very weird to see something like an AWS course in a university-level CS curriculum.

AWS and Windows Server courses are definitely not university-level CS courses.

Yep. And the sad part is that some of the students I met here don't realize what they're learning is not CS. I only applied to avoid the compulsory military service, I was already learning a bunch on my job.

On the bright side, the local job market demands match what they teach here very well. According to my anecdata, lots of students who had no knowledge or experience working as programmers now have full-time jobs mostly as web developers. Looks like the university's doing its job and I'm just a whiny C student.

Re: The Missing Semester of Your CS Education

#168
post #124
post #2

Over the years, we (@anishathalye, @jjgo, @jonhoo) have helped teach several classes at MIT, and over and over we have seen that many students have limited knowledge of the tools available to them. Computers were built to automate manual tasks, yet students often perform repetitive tasks by hand or fail to take full advantage of powerful tools such as version control and text editors. Common examples include holding…

That’s cool. Now, on to my possibly unpopular opinion: This isn’t what computer science is about. In fact, you don’t even need to use a computer to do computer science. Sure, some stuff you learn in CS can make you a better software engineer. CS cannot make you a software engineer. CS can definitely not make you adept at using computers and neither should it. That’s something earlier education institutions must tackl…

Astronomers do stop to study how to build telescopes, chemists do stop to study how to create glassware, and biologists do stop to study culture media.

Why do you expect CS students to thrive without learning how to use a computer?

Re: The Missing Semester of Your CS Education

#169
post #69
post #20

I think the reason you don't see this kind of course offered is because it is primarily concerning training and not education. Imagine if your training course 25 years ago focused on the Turbo C IDE and that's all the University offered. You would be amazingly proficient at Turbo C and know all its keyboard shortcuts but that wouldn't be too relevant in today's market. Keeping such training material up to date with t…

This is one of the issues that I have with how CS and software engineering is taught in universities. Yes, you could look at this as "vocational training" and not "education". But you could also look at this as education with a hands-on component using commonly available tools. Sure, you could have students memorize a list of git commands. That would be terrible. But you could also teach students to understand how a…

I absolutely agree. If we in the industry are expected to constantly remain up to date on new technologies, it seems reasonable to expect our CS educators to do the same. Realistically these tools change infrequently enough that courses which teach these tools will likely remain relevant for at least the first few years after students enter industry. I've had many courses in which my peers didn't understand git even as seniors because it's not properly taught at my school. If you enter industry without basic git knowledge you're going to have a bad time and the one of the main points of education is to prepare you to enter the workforce.

Re: The Missing Semester of Your CS Education

#170
post #159

Earlier quoted context omitted.

> That’s cool. Now, on to my possibly unpopular opinion: This isn’t what computer science is about. This is not an unpopular opinion at all, CS degrees do not typically cover what's in this class which is precisely why they called it "the missing semester".

Yes, it is exactly this naming that somehow irks me. It somehow seems to imply that this should be part of the regular CS curriculum. It should not. Indeed, universities should once again become a place where you go to pursue a career in science. Not a half-baked vocational training center. That’s why I’m against excessively accommodating this misuse.

Are you saying that you completed a CS degree without writing programs on a computer?

There are many great experimental physicists (including Richard Feynman), chemists, biologists, and engineers who used real hardware. Why shouldn't computer scientists use real hardware?

Post reply on HN