5 ms·
Question: is a CS degree complete without compilers? Or Networking and Distributed Systems?
by neofrommatrix 2y ago
Question: is a CS degree complete without compilers? Or Networking and Distributed Systems?
- shakna 2y agoMy Bachelor in Computer Science didn't include either. I went off and studied those on my own. So... Certainly.
- eddd-ddde 2y agoDefinitely, my understanding of writing code couldn't be called good until I understood how compilers read it.
- mamonster 2y agoDo you think people need to have compiler knowledge beyond the dragon book (for like a BS/MS equivalent level of knowledge)? I remember that it took me quite some time to go through it coming from a math background, but it definitely improved my understanding of how stuff worked, and I haven't really done more learning since then.
- eddd-ddde 2y agoI guess it depends, my compiler knowledge is not that deep, but my assembly knowledge is large enough that they kinda complete each other. Once you understand how memory actually works, how processors execute conditionals, etc it helps massively understand what your high level language might be doing in the background.
- deleted 2y ago[deleted]
- deleted 2y ago[deleted]
- pxc 2y agoSure! Compilers was one of my favorite classes, but it was also one elective among many. There's other stuff I took here that was ommitted: courses on tbe completeness of first-order logic, Gödel's incompleteness theorem, natural language processing, graph theory, abstract algebra, numerical analysis... there's also a lot of applied/engineering math stuff in there (the latter two semesters of calculus, stats) which I took because I wanted to but was not at all required by my CS degree. Not all CS degrees look alike.
- Jtsummers 2y agoIt is also mostly introductory courses. It’s equivalent to maybe 2-3 years worth of a CS degree program if you also don’t take any advanced courses or have a specialization. Nand2tetris, for instance, is a course I like and recommend to the curious. But it is at best equivalent to a survey course in computer engineering. It’s a motivator to go deeper, but not where a college student should stop. If it were given for credit at a university it would be intended for first year students.
- BadHumans 2y agoI have spent more time than I am willing to admit going through various CS degree syllabi and very few degrees require compilers or distributed systems. Those are usually master's degree courses. Some universities will make distributed systems an elective where you can do distributed systems, databases or something else in that area.
- throwaway2016a 2y agoMy undergrad had those things and they are the courses that have been most helpful to me in the real world. But I generally agree, it is rare to see them outside of master's degrees but doesn't mean they shouldn't be in there.
- jcranmer 2y agoAbsolutely! To me, the necessary elements of a CS degree are the following: * Discrete math in a fashion (as much a refresher in symbolic manipulation from high school algebra as anything else) * Introduction to programming * Introduction to computer architecture (basically nand2tetris in terms of scope) * Data structures and algorithms * Software design [this is usually flavored as intro to OOP, but that it be OOP isn't necessary] After that, it's really down to a depth + breadth requirement: concentrate a certain amount of learning in a narrowish track, and also take some basic courses from other tracks. But I don't think there's any other particular course that I'd consider a graduate deficient if they didn't take that course.
- shagie 2y agoBuilding a complier is one of those things that rolls up a number of other parts of computer science. You need to have familiarity with both a high level and a low level language. Creating a lexer to match tokens uses finite state automata / regular languages. Creating a parser to match a syntax uses push down automata. There are some complex topics built on top of simple data structures. For example, symbol table lookups with scope. Each one of those is a semester long class by itself (well, the DFA and PDA were both in the theory of computation class for me). My complier class tied together many of the previous classes that I had and gave me a practical understanding of it. With that, I was then able to properly understand the tools of lex and yacc, the effort they saved me and the type of errors that I would encounter.
- DonHopkins 2y ago"This is a curated list of free courses from reputable universities like MIT, Stanford, and Princeton that satisfy the same requirements as an undergraduate Computer Science degree, minus general education." Is a CS degree complete without the general education?
- randomdata 2y agoA degree isn't compete until granted tenure.
- 3836293648 2y agoYes. The general education thing is a weird American thing noone else does
- kyawzazaw 2y agoa lot of schools don't offer this or require this. many people graduate without either