6 ms·
>> Learning how to use SQL is more of a trade school course. While SQL the language is more "trade school", the original poster mentioned; >> Database Systems
by bruce511 4y ago
>> Learning how to use SQL is more of a trade school course.
While SQL the language is more "trade school", the original poster mentioned;
>> Database Systems (relational algebra, SQL)
Certainly I would expect a CS course to cover databases, in the sense of 3rd-normal-form etc, sorting, searching, indexing and so on. I wouldn't expect them to necessarily be proficient in any one database product, but I would expect them to understand different ways of storing data, and how to design a "data layout" based on good practices (again 3rd normal form etc).
- deleted 4y ago[deleted]
- junofan 4y agoI don’t think top CS programs teach that. Maybe they’ll have a course on implementing databases.
- platzhirsch 4y agoThank you, this is indeed what I meant and was covered by our curriculum in the third year. SQL was merely a practical example.
- ilikehurdles 4y agoSQL was probably only one semester’s course over a 4+ year college career. They probably continued to interact with SQL here and there in some other classes, but would rarely encounter needing more than cursory, googleable knowledge to get the job done. On top of all that, it’s likely their first (or close to first) time in an interview setting. Nerves have a way of making you forget a lot of things.
- WalterBright 4y agoI learned the nuts and bolts of engineering on the job, and from reading the (absolutely delightful) Boeing design manuals, where they distilled the lore of how to design airliners in a series of manuals. But in my long career, I've never encountered anyone who learned math on the job. Math was my superpower at work. But since I was not a CS major, I never properly learned the academic side of CS. I run into this deficit now and then, and I'm not proud of it. Andrei Alexandrescu joined me on the D project, and had the academic chops, which was greatly appreciated by me.
- tzs 4y ago> But since I was not a CS major, I never properly learned the academic side of CS. Would you have been a CS major if that had been an option at Caltech? For everyone wondering why CS would not have been an option, at the time Walter was at Caltech they didn't offer CS as an undergraduate major. They did have a CS department which did offer some undergraduate CS classes but it only offered graduate degrees. Undergraduates interested in CS typically majored in math or physics or engineering and took the undergraduate CS courses in addition to the coursework of their major. I don't remember when they started offering an undergraduate CS degree. I think it was not too long after I graduated (class of '82), which was a couple years or so behind Walter.
- WalterBright 4y ago> Would you have been a CS major if that had been an option at Caltech? No. I wanted to design airplanes, jet engines, rockets, etc. I had a secondary interest in electronics, and a tertiary one in programming. I wasn't that interested in the academic side of computing. P.S. nice to see other techers here!
- ghaff 4y agoBy way of context, at MIT (which I'm much more familiar with), there was effectively a CS major out of the School of Electrical Engineering and Computer Science, but there weren't PCs and computing was pretty much limited to Multics in the AI lab. (There was a mainframe with punch cards that you could get a limited account for using with the other branches of engineering. I took a Fortran course then I don't think I touched a computer for the rest of my time as an undergrad.) There wasn't widespread access to computers at MIT until Project Athena. So CS was historically mostly not hands on. And that's somewhere where CS was in the engineering school. At many schools, it was part of the math department. So, there's a strong academic tradition of CS being more about math than programming. Even the current CS intro course at MIT is mostly about algorithms and you're pretty much expected to pick up Python on your own.
- vidanay 4y ago> reading the (absolutely delightful) Boeing design manuals Authored by Dr. Jan Roskam perhaps?
- shusaku 4y agoIn the spirit of the above poster, I have to say as an undergrad we spent a lot of time on relational algebra rather than SQL, even though the latter is surely more practical.
- bobthepanda 4y agoHonestly, a lot of university curricula are, at best, out of date, since often academics are not necessarily incentivized to learn the latest and greatest of programming. I remember entering a Java course, where the professor specifically said to write Java 6, even though it was EOL and Java 8 had been out for a while, and you would get points knocked off if you used any "fancy" Java 8 stuff they didn't know.
- bawolff 4y agoProgramming really hasn't changed much fundamentally in the last 20 years. I think its a good thing university doesn't chase the current trend. The knowledge would be quickly outdated. They should teach the stuff that isn't flavour of the week but common to everything.
- alpaca128 4y agoSome things do change, though, and courses which involve specific technologies should at least be up to date to a point where people aren't required to use Windows XP when every laptop runs Windows 10.
- zerkten 4y agoI kind of get what you mean, but you don't provide a good example. The first question is what are the specific technologies and why are they involved? If you take some outdated version of Java, this could be interpreted as teaching you to be a Swing developer, or how to apply Java for user interfaces and learning some fundamental design patterns. Whether it is the former or latter matters a lot. Oftentimes the people taking the course don't appreciate which it either which is problematic. In your example, someone could be given a really good desktop programming class on Win32 whether they used Windows XP or Windows 10. The success of this is orthogonal to the tools at hand really. It is what the professor and/or students make of it.
- bobthepanda 4y agoIn general, I find that many fresh college folks (new hires and interns alike) struggle with Java streams. Streams and stream adjacent things like Optional remove a lot of tedium and footguns from older Java code styles, and unfortunately learning them tends to be a speed bump for anyone onboarding to the code base from college, because it’s just not covered, even in a Java algos course where I believe they’d be fairly relevant.
- daveslash 4y agoMy CS curriculum (15+ years ago) offered Databases as an upper-level elective. Another upper level elective was Compilers. Another was AI. There were other upper-level electives, and any student in the program had to take a few but not all of them. Any student in the program had the option to take the Database class, but not all did.
- zerkten 4y agoMy CS undergrad in the UK circa 2001 covered the items you mentioned in the first course. The second course was similar to http://www.inf.unibz.it/~artale/DB2/db2-course.htm http://www.inf.unibz.it/~artale/DB2/db2-course.htm. With UK degrees there is limited ability for students to pick their own adventure and miss these when they choose a CS degree at a reasonable university. I personally don't agree with the purist approach that CS degrees should just be maths. There needs to be some minimal application at the very least and different universities will have different maths-CS-engineering boundaries based on how they've evolved.
- WalterBright 4y agoThere is some overlap between programming and CS, sure. But Computer Science is more a branch of mathematics than programming.
- srcreigh 4y agoIn UWaterloo CS there's at least two database courses. One covering SQL/querying/normal forms, another looking at how DBs are implemented. They are not required courses. I agree with GP that DBs are not fundamental to CS in any way. It's trivial with other building blocks of CS though: predicate logic, algorithms, data structures. Set theory. Discrete math basics (also fundamental CS) gives lots of examples of normal forms (prime decomposition, mod p arithmetic, etc).
- SkyBelow 4y agoI think this is an important point. Knowing how to specifically create a table in X flavor of SQL is something that a new grad can easily look up. Knowing when to consider normalizing data, why one would want to normalize, and why one wouldn't want to normalize, is more of what I would expect someone to learn in college. It isn't something that can be looked up using a quick google unless one already knows it and just forgotten the details.