12 ms·
Computer Sciences Courses That Don't Exist, but Should
- pjtr 11y agoCSCI 0001 'RTFM & Learning simple facts yourself outside a CS course'
- arfar 11y ago>UNIX "ls" tool is a case study in excessive command line switches. 'ls' is a bag of weird (bad?) UX. When first starting on the command line, I could never figure out how grepping the output of ls actually worked. Then I think I looked at some of the code, or someone told me, that when ls outputs, it checks to see where the data is going, if it's STDOUT then it pretty prints columns (and probably other things), otherwise it just the more sane 1 line per item.
- breadbox 11y agoYes, via the isatty() syscall. ls is hardly the only Unix tool that does this; it's just the most well-known example.
- steckerbrett 11y agoHere I am using `ls -1` for years without realizing the redundancy.
- akkartik 11y agoYou probably got that into your muscle memory before 'ls' got smarter. I'm sure we all have some habits like that.
- nocman 11y agoDon't feel too bad. I didn't know until reading this that sending the output from ls somewhere other than stdout would cause the output to be one-item-per-line either, and I've been using Unix and Linux platforms for a very long time. If I wanted that behavior, I would have typed 'ls -1' also.
- jff 11y agoSee today's submission https://news.ycombinator.com/item?id=10198353 https://news.ycombinator.com/item?id=10198353, where the PDF discusses precisely that case and why it's bad.
- jewel 11y agoThe isatty(3) system call will let you know if STDOUT is a terminal. There are two cases when you should definitely take advantage of isatty: 1) Your tool, by default, outputs in color. 2) Your tool, by default, outputs progress, which you keep on a single line by overwriting by outputting \r. Both of these potentially annoying when your command is used in a script, and especially annoying if they are called from cron. In other cases I agree with you, getting too creative violates the principle of least surprise.
- nitrogen 11y agoIn the case of 1/color, I respectfully request that all toolmakers leave an option for forcing color even if STDOUT is not a tty, so I can, for example, use less -R on colorized logs and still get element highlighting.
- jzwinck 11y agoIf you get stuck with a tool lacking such an option, you can run it under "script" to trick it. I recall other programs to do similar using a pseudo-TTY but I can't recall their names now (and with a name like "script" it was a miracle I got that one).
- thrownaway2424 11y agols is bad but I nominate ps as the ultimate basket case.
- bigger_cheese 11y agoYes I'm a 'ps -ef' guy and my coworker uses 'ps aux' forget vim vs emacs this causes the most arguments.
- UnoriginalGuy 11y agoBut aux gives you the %CPU and %MEM columns in addition to what -ef gives you. That's a winner for why I would always opt for using aux. Often times when I am running ps that's exactly the information I want to see. I guess you could argue ef's length as an advantage but if you're on a 1080 screen, meh.
- gknoy 11y agoI only recently learned that fax` prints a tree of processes! Not always what I want, but good to find which python processes are the ones I want to kill, and which are not. :)
- thrownaway2424 11y agoWhoa! I always use pstree for that.
- bigger_cheese 11y ago-ef shows you the parent pid which aux doesn't. My usage for ps tends to be to get pid information so I can kill processes with it. When a misbehaving parents spawns a lot of children easier to kill the parent. I use 'w' command if I want CPU info.
- billforsternz 11y agoI know it is heresy, but what I really want is a switch to make ls more like dir from DOS/Windows.
- Animats 11y agoEarly UNIX used "ls | mc", where "mc" was a program to put output in multiple columns. This is in keeping with the UNIX philosophy of one program, one job.
- hollerith 11y agoI just wish Unix command-line tools would refrain from including terminal escape sequences in their output when invoked with TERM=dumb. Homebrew, wget and youtube-dl, I'm looking at you. Although some of these tools can be persuaded to stop including escape sequences with the right switch, the right switch varies with the tool, and learning the right switch to use with a particular tool requires reading a large fraction of a very long man page. In contrast, 20 years ago, IIRC all command-line tools I used respected TERM=dumb. Since isatty() was mentioned, let me point out that directing the output of the tools named above to a named pipe instead of a pseudo-TTY is not enough to get them to stop sending terminal escape sequences.
- hackerboos 11y agoThese are Software engineering mostly and not CompSci.
- mikerichards 11y agoWhich is sadly, too often lacking at many universities.
- rifung 11y agoI suppose it's a philosophical argument more than anything, but I don't think it belongs universities. I don't think universities should be career schools, although I can see why others might think it should be since most people do go to school as a prerequisite to get a job nowadays.
- serge2k 11y agoThese aren't even software engineering classes.
- xxpor 11y agoBachelors is for real-world software engineering, Masters or PhD is where the serious CompSci should happen, IMO. (I say this as someone with a bachelors only)
- simonw 11y agoI love "Unlearning Object-Oriented Programming".
- iyn 11y agoI've seen so much criticism of OOP, can somebody provide more details/valuable links why "OOP is bad"? Honest question.
- 88e282102ae2e5b 11y agoI really just feel it's because most people who use OOP end up increasing the complexity of their code and have no idea how to use it to make things simpler, safer and more reliable. It was like a lightning had struck when I realized that if you did OOP in a certain way you could make guarantees that some mistakes would be impossible to make, and that whatever I had been doing for the past several years was not even remotely OOP, even though everything was in a class. The reason I'm interested in learning functional programming is because it seems like it too holds the promise of eliminating errors entirely, if done well, perhaps not in a mutually exclusive way.
- wvenable 11y agoLike all other wildly successful software paradigms, OOP is now out of favor.
- mikerichards 11y agoThere have been successful languages (from a popularity standpoint) that are regarded as OOP, but the success of OOP as a paradigm is highly debatable.
- gary_bernhardt 11y agoHuh? Imperative programming is still the dominant programming paradigm, as it's been since the first programmable computers.
- Retra 11y agoIt tends to be excessively verbose and often requires detailed naming of temporary objects when solving stupid simple problems like pipelines and data aggregation. Inheritance is often not the best way to compose properties. People who learn only OOP tend to not see the obvious value and convenience of first-class functions.
- jason_s 11y agoRobot Odyssey!!!!! https://en.wikipedia.org/wiki/Robot_Odyssey https://en.wikipedia.org/wiki/Robot_Odyssey
- insaneirish 11y agoCan I add another one? How about "The Network Doesn't Work The Way You Think It Does: A Distributed Systems Survival Guide". As someone who has spent a good chunk of their career building high performance networks and another chunk of it working closely with developers who care a lot about those networks, I'm constantly amazed at how little top tier graduates from well respected schools know about networks. Relatively basic stuff, like what does your application's traffic look like on the wire, how an OS determines what to do with a packet, how latency affects applications, and many other things are completely foreign to way too many developers. I could go on and on, but given the connected nature of things today, it seems like a very overlooked area.
- fr0styMatt2 11y agoClosely related I think: breaking into software / hardware / networks. A course that has people doing basic and maybe not-so-basic exploits on real systems. Including attendance at a conference such as DEFCON. Our future software engineers need to have security as a fundamental concern to software engineering and not as something that's an 'add-on'.
- testaccount17 11y agoI am a recent CS grad and I am constantly amazed by how little I know about networks. Do you have a favorite book or online resource on the subject?
- jzwinck 11y agoOne fun thing is to download Wireshark and look at the packets being sent in detail when you do common things like browse the internet or use FTP.
- insaneirish 11y agoI think this is a really good idea, but I'd add one alternate possibility is well. Doing this on a typical user's computer today will present a mind blowing amount of data--so much that it is easy to give up trying to figure out what's going on if you've never done it before. Instead, perhaps spin up a Linux VM, maybe even no GUI to start. Then run Wireshark on its interface. Much less noise. Should be much easier to begin dissecting.
- solomatov 11y agoI think, another course should be CSCI 9000: How not to be opinionated jerk.
- GFK_of_xmaspast 11y agoWhere are you gonna find faculty to teach that.
- tsumnia 11y agoI think if you force CS students to take a few business courses (or MIS courses), it can help dissolve the 'opinionated jerk' [elitist] stereotype that can come from CS students. They see that software development is only a piece of the puzzle and while they'll never have to worry about handling insurance, someone who didn't spend classes learning code has learned this task for them.
- ebiester 11y agoYou must have had different business classes. The one class I had with business majors, I was completely underwhelmed as to their capabilities. I was amazed at having an upper division course that had such atrocious writing and thinking skills.
- tsumnia 11y agoIts actually more along the line of I currently am teaching the 'Intro to IT' course required for all business majors. In one light, the course is about making the rest of business understand what IT does; however from an IT student perspective, it should also let them see the other side. Each week I'm mulling over how to connect with both sides of the table, since I have both sides in my classroom.
- WestCoastJustin 11y agoHow about "Building an End-to-End Software Solution - 101". Going through the entire development workflow (idea, design, prototype, beta release, delivery, and iteration). One of my good friends is currently going through school, but in the back of my head there is this nagging thought, that he will not learn what's needed for today's market.
- ggchappell 11y agoWe have that in our CS program. We call it "Senior Capstone". I'm sure others have it, too.
- deleted 11y ago[deleted]
- Turing_Machine 11y agoSame here. We had to design and write a significant real-world application. You could suggest your own idea or take on a project that the profs had found through their connections with the business world. Either way, you had to convince the professors on the committee that it was worthy of receiving a full course's worth of credit (though most people wound up spending far more than that amount of time on it).
- alashley 11y agoWe had that at my community college too, we worked along with an government organization to produce software for them. Unfortunately most of our coursework involved writing documentation and doing presentations, so the software side of things wasn't as useful as it should have been.
- nightpool 11y agoWe definitely have this in our CS curriculum to—working in teams of 10-15 to design, prototype, refine, and ship a product.
- girvo 11y agoThe software engineering degrees here in Australia (not CS) have you do that a number of times. I wish I had studied it, but B.Sci in Maths/Chemistry and half a law degree was still quite enjoyable.
- spydum 11y agoAutomotive Metaphors and analogies for programmers Seriously, why does every analogy have to be a car? Is it just the most complex system we can model in our heads?
- Turing_Machine 11y agoHey, sometimes it's a recipe, and sometimes it's a telephone system. :-)
- bliti 11y agoCSCI 0666: Implementing Reverse Binary Trees on whiteboards. CSCI 0123: Implementing Monads in COBOL CSCI 0555: Successfully correcting internet commenters. CSCI 0556: Nitpicking points made in CSCI 0555. CSCI 0777: Introduction to twitter bot polynomial time algorithms with an emphasis on winning shitty contests. CSCI 0911: Learning functional programming with Haskell. CSCI 0912: How come up with uses for knowledge acquired in CSCI 0911.
- andrewstuart 11y agoThese are only needed to pass an interview at Google, where you will spend all day writing FizzBuzz algorithms.
- bliti 11y agoif comment.id % == 5: Println('Study computer science, sell advertising') hired? :D I'm waiting for a CSCI 0555 student to correct the obvious bug.
- tl 11y agoI think it's because there's no space in the modulus-equals operator your FizzBuzz Archtitect wrote instead of writing useful code.
- andrus 11y agoCSCI 0911 and CSCI 0912 are real, though they go by CMSC-16100, CMSC-22311, and CS240h (and I'm sure more). So do I pass CSCI 0555? ;-)
- bliti 11y agoSorry, CSCI 0123 is required for a passing grade. :) I'm going to get so much hate emails from Haskell people.
- deleted 11y ago[deleted]
- andrewstuart 11y agoHow about "Programmer psychology: recognising and dealing with your own dogmatism through to diplomatically dealing with the dogmatism of other programmers."
- louithethrid 11y agoIf you cant profile it - it doesent exist.
- matthewbauer 11y agoCSCI 0201: Principles of Version Control
- serge2k 11y agoSo what do you teach for the rest of the semester after the first week? That's the problem with teaching these things in university. They just aren't worth the time and money to teach at that level.
- viraptor 11y agoHow about "How does development work in practice" that covers version control, debugging, documentation, dependencies, packaging. After that any project (all courses) involving more than 100 lines of code MUST be handed in as a repository that actually contains the development history, not a single-commit dump. Also installable as a proper language-specific package, rather than "put the path to the project in those two places, then run this script".
- frobozz 11y agoIn each of the degree courses I have done, there have been a few sessions on general scholarship, essay-writing, etc. These are not actual modules, parts thereof, or even evaluated, but just part of the furniture of the whole course. What you describe sounds like the kind of content that belongs in such a session for degrees that are likely to lead on to working in software development. This gives rise to a further thought. Rather than this even being part of a degree course, it should be something run by a university's Careers Service. A series of "So you wanna be a ..." sessions for common graduate careers, that train students on some of the day-to-day practicalities of what those jobs entail.
- serge2k 11y agoNo, it still sounds like a massive waste of time and money. Just say that you accept assignments via version control. Done, learn it or fail. You don't need a course in it.
- jnpatel 11y ago> Includes detailed study of knee-jerk criticism when exposed to unfamiliar systems. This hits home.
- ctdonath 11y agoCSCI 1200: Debugging Seriously. This should be a full subject addressed in detail, and early, unto itself. Instead it's typically a sink-or-swim byproduct of trying to pass any other science/engineering class.
- girvo 11y agoAgreed. Debugging is an art and discipline in and of itself, and one that so many developers lack. In the last couple of years I've taken a great interest in learning to debug efficiently, and yet despite my best efforts most web devs I work with still rely on variations of "printf debugging". A shame really, considering the sheer depth and breadth of tools that are available these days, even in languages like PHP.
- burkemw3 11y agoI totally agree with "Debugging is an art and discipline in and of itself" for issues that are difficult to reproduce. With a reproduction, debugging should be straightforward for any engineer. For reproducible issues, it's scientific method plug and chug for me: observe an interesting behavior, theorize about cause, test, rinse, repeat. Unfortunately, I am too often amazed at the engineers that don't go through this exercise before asking for help.
- fr0styMatt2 11y agoFor those 'hard to reproduce' issues, it's about knowing what debugging and forensics tools are out there and making sure that the systems you deploy support postmortem debugging and issue analysis. Things like creating crash dump files, then giving your field technicians or customers an easy way to get this data to you with an incident report (or even having the system do it automatically if applicable); logging systems that can be left switched on all the time and dynamically reconfigured (so that there's less chance of the damn thing being off when an issue does occur). Also awareness of things like tools that analyze or try and provoke race conditions, etc.
- toast0 11y ago
- bwang29 11y agoHow about a "class" or some pre session on best practices of typing on the keyboard in the CS departments? For year, I'm still struggling to type without looking at the keyboard and I make frequent typos which slow me down. Being able to type quickly and have a good habit of placing fingers on the keyboard seem to be an important exercise. A guideline to choose the right keyboard, setting up personal shortcut or customized keyboard layout for each developer might also be worth learning.
- Crito 11y agoUsually those exist.
- anjanb 11y agothere are so many online typing tutors that can help you with this : https://www.google.co.in/search?q=typing%20tutor https://www.google.co.in/search?q=typing%20tutor
- tsumnia 11y agoInterestingly enough, this semester, I've begun including images of programming code that I force my students to type out specifically to give them typing exercises. There's no errors, and they're variants of stuff from the books so they don't copy and paste from a PDF. My logic is that while CS is mental, typing the code is still a physical activity we use. Like any other physical activity, the best way to get better is to drill the motions until they become second nature. While there ARE typing tutors, I haven't found any programming specific typing tutors. I think a normal typing tutor is nice, but since syntax requires so many symbols, typing English sentences only helps so much. I also think (still in the 'physical activity' mindset) developers can use these typing exercises are warm-up exercises. Just like a sport, you stretch and warm-up so you a loose and ready. Typing out basic for loops and functions can help in the same light.
- kevan 11y agoHave you checked out typing.io [0]? [0] https://typing.io/ https://typing.io/
- yakult 11y agoHow To Prevent Scope Creep Without Alienating Your Boss Or Other Important People
- blt 11y agoThat's a ph.d.-only "special topics seminar", still an unsolved problem under active research
- hvidgaard 11y agoIn my experience it's not that bad, but you have to speak in their language. An agreed spec and deadline is a contract, and now they want to get more for the same price. I'm sure they wouldn't let a customer do that, so they understand that if they want to change the content of the contract, they have to negotiate. That of course require that you have a sensible manager/boss, that doesn't force it his way.
- Tloewald 11y agoUnlearning Object Programming might include discussion of the legitimate uses of global variables, and how Singletons are just obfuscated and inconvenient globals.
- princeb 11y agothink I did "unlearning object oriented programming" in university - it was called "programming in matlab with other applied mathematicians"
- jacobolus 11y agoThat’s more like “being reduced to tears” than “unlearning” per se.
- crdoconnor 11y ago>discussion of the legitimate uses of global variables Short course, that one.
- Tloewald 11y agoModule names are, effectively, global variables. The reason global namespace shouldn't be polluted is that it's so damn useful. Not using it for anything is like never driving your car to avoid wearing out your tires.
- crdoconnor 11y ago>The reason global namespace shouldn't be polluted is that it's so damn useful. No, the reason is because the more interacting components you stick on it, the harder your code becomes to reason about. It's more a restatement of the notion that software should be loosely coupled.
- Tloewald 11y agoYou realize that there's a war between people who write static code analysis software and "software architects", the former trying to detect global state buried in object hierarchies and the latter disguising global state as something else in the interest of "decoupling" things that need coupling. Every class property is effectively global state (has the printer been initialized? what objects of this type have been created?) If you don't think class properties are useful... Globals are a tool. Used badly they're terrible, but so are design patterns. For a long time many very useful pieces of software ran very well with lots of global state, but the egregious cases of misuse spoiled it for everyone. The problem with the "never use globals" approach is that if you need them, disguising them as something other than what they are makes things FAR, FAR more difficult to reason about.
- FrankenPC 11y agoReminds me of a question a help desk person asked me about 20 years ago. They were having all kinds of problems printing word docs from this new windows 95 PC. I was busy at the time so rather than educate them on the nature of WYSIWYG I just told them to update/repair the graphics driver. It worked and they thought I was a god. It's hard to create a course on the interconnections of everything. The best course I ever took was a Cisco IOS programming course. That included protocol analysis, debugging routers, switches, etc. I'm not a network layer programmer. But what I learned about how everything works together has helped me solve complex problems ranging from Kerberos authentication issues to finding duplicate DHCP servers on the same network. Without this knowledge, I would have to hire experts and waste a ton of time and money to get to the end goal which is a functioning product.
- deleted 11y ago[deleted]
- piyushpr134 11y agoHow about 1. Version control systems and how to use them always 2. Practical introduction to sql and nosql databases 3. Database schema design along with practical projects 4. Introduction to HTTP 5. Introduction to Web frameworks 6. Introduction to mobile development 7. Mobile app design basics 8. How to clear job interviews ?
- dredmorbius 11y agoThere's theory and practice. When I started with computers in the dark ages (mid 1980s), there might have been RCS and SCCS... Yes, SCCS actually dates to 1972. RCS from a decade later. CVS ... woah, that is also an 80s kid: 1986, wasn't something I encountered1until later. Ah, initial release 1990. Subversion came along and changed everything in 2000, mercurial in 2005. I remember some heated Hg, arch, and Git debates for a while. Unfortunately, I've got (bad) habits from most of these stuck to different layers of my brain.... Databases may be going through similar revision (though you'll still get a fair bit of mileage from 5NF. HTTP may or may not be due for major revisions given variously: 1. Calls for distributed Web. 2. Issues with presentation and form factor. 3. Conflicts between document and application presentation. 4. Privacy and security. Web frameworks change too quickly to be worth teaching. Best learn general UI principles. Dittos mobile apps.
- piyushpr134 11y agoSee it is one thing that the tool you have been taught becomes obsolete and quite another that you are not even familiar with the concept of http, vcs, and sql. It is far more easier for somebody who knows mysql to understand and come upto speed on a postgres/mongodb than somebody who is not at all exposed to these concepts. Moreover course curriculum needs to be updated every 2-3 years when such courses are taught to keep them relevant
- dredmorbius 11y agoActually, in my case I'm not formally educated in compsci. A couple of programming courses but picked up what I know on the job. It's fairly effective.
- gull 11y agoHow to program by listening to your intuitions, not logically.
- xacaxulu 11y agoMaybe just a CS program staffed entirely by people who've had real CS jobs outside of the academia bubble.
- visarga 11y agoYou mean software engineering jobs?
- bb0wn 11y agoThis would more aptly be titled 'Software Engineering Courses That Don't Exist, but Should.'
- blt 11y agoIt's not enough to fill a class, but I really wish school had taught me about linkers, dynamic libraries, and calling conventions. AKA "why must I use this old compiler to link against this old closed-source C++ library?"
- Jach 11y agoReally this should have been part of your freshman C course. (Happily it was mine, like right at the beginning alongside Hello World.)
- serge2k 11y agoha, freshman C course. Good one. My school switched to Java and graduated more than a couple people who don't really get C at all. Should be taught in OS. Really, it should be taught in a practical sense in an OS lab.
- xxpor 11y agoMy OS class at least didn't even come close to covering that sort of stuff. Half the semester was on concurrency primitives and System V IPC :(
- zyxley 11y agoSame kind of thing here. System calls, concurrency, etc. Nothing at all about linking.
- Jhsto 11y ago> ha, freshman C course. Good one. What do you mean by that?
- lewiseason 11y agoI think he means there was no freshman C course.
- stormbeard 11y agoSeriously though, it's probably time to separate Computer Science and Software Engineering into different routes of study.
- zatkin 11y agoRIT already has done this.
- zachberger 11y agoAnd CMU, ASU, Penn state, etc. - signed RIT SE Grad
- alexpersian 11y agoSaint Cloud State is in the process of doing this.
- dagw 11y agoMost schools I know of in Europe do this. Mainly Software Engineering is taught at engineering schools in close connection with other engineering departments and Computer Science is taught at universities in close connection with the math department.
- ionised 11y agoMy former university (Manchester, UK) does this.
- cableshaft 11y agoBut then the hardcore Computer Science program would only get 10 students enrolled per year! Think of the poor Computer Science researchers that need to come up with new notation for their Pumping Lemmas!
- smrtinsert 11y agoCOMP000 Your Job Isnt Only Fun Shit
- jecjec 11y agoHow about: -Mastering Git (/competitors) -Refactoring -Project Management -History of consumer information technology
- thinkingfish 11y agoCSCI 4035: Refactor Your Own Term Projects from Past Semesters
- jboggan 11y agoThat's a rather brilliant idea. Including code review from your classmates.
- xerophyte12932 11y agoMy Almameter seems to be doing that this year in their Design Patterns Course. The task is to find a large code base that desperately needs refactoring. I let a young friend use my old Final Year Project for this. Its scary how bad my code was when I graduated (never took Design Patterns) but at the same time, inspiring to see how far I have come since then
- dagw 11y agoI had one course where one of the major projects was to add a significant feature to the major project you wrote for the last course.
- thinkingfish 11y agoCSCI 3350: Debugging- Beyond Print CSCI 4600: When Big-O Complexity Becomes a Lie and Why
- smegel 11y agoCSCI 2550: Software complexity and the art of Keeping It Simple.
- dave_chenell 11y agothis is so good
- kevindeasis 11y agoCSCI 099: How to apply what you learned in comp sci.
- thetruthseeker1 11y agoI am a software engineer, I have a grad school degree in CS with many years of experience in the industry. One thing I often noticed was many people break some key computer science concepts while on the goal to achieve some minor usability improvements or some other minor goal such as code reuse. There was one instance where in a multiprocess environment, one of the engineers wrote some library to access a database table and read its contents. In the process he/she maintained a cache of it in memory. Then somebody else decided to use that convenience library/methods in a different process and so on.., essentially cache coherence problems were left unsolved and when I brought this to the attention of people they shrugged it off saying when they see a problem they might handle it - which may be fine, but seemed like some key computer science concepts were overlooked in the goal to achieve software reuse (here reuse of existing accessor/cache code to the database) I have seen design choices that cause race conditions or non-determinstic behavior, following some patterns or cargo cult programming because something is an industry trend etc.
- kriro 11y agoCSCI 3300 kind of exists in human computer interaction.
- fizixer 11y agoOkay time to upset people: Dear 'All CS Departments of the World': Please stop fooling your students in the 'Intro to Algorithms' class, and just rename it to 'Intro to Combinatorial Algorithms'. Because that's what you teach, and you completely ignore the arguably bigger area of 'Intro to Numerical Algorithms'. Numerical Algorithms, that are not only the basis of pretty much every branch of computational science (comp. physics, comp. chemistry, comp. biology, comp. civil engineering, comp. mechanical eng., comp. electrical eng., comp economics, comp. statistics, and on and on and on), but it's also one of the weakest link for a CS graduate to transition to Machine Learning and Data Science. Or you could keep the course title, but upgrade the class, by teaching 50% of it as 'Algorithms and Data Structures', and 50% as 'Numerical Methods and Scientific Computing'. Unrelated to above but relevant to the thread: Allen Downey and his team at Olin College are doing things worth looking into. (His Google techtalk: https://www.youtube.com/watch?v=iZuhWo0Nv7o https://www.youtube.com/watch?v=iZuhWo0Nv7o)
- tonyarkles 11y agoWoah woah woah, are you suggesting that computer science classes should teach people how to compute things?! That's ridiculous! :D
- pjmlp 11y agoIn Portugal they do. There is hardly any pure CS like it appears to be the US case. All Informatics degrees are actually a mix of CS and Software Engineering. For pure theoretical CS one needs to go for a Maths degree with focus on computation (after the third year). EDIT: Typo the => be
- euyyn 11y agoSame in Spain. The degree is 5 years long (rather "was", now Bologna has changed all that) and teaches you all the way from the wire to A.I.
- zenir 11y agoThat's what the numerics course is for, at least at my university
- cLeEOGPw 11y agoThese should exist if universities had a goal of producing not scientists, but workers.
- msoad 11y agoWhere I come from Software Engineering and Computer Science are two different paths.
- zyxley 11y agoI'd like to suggest a course in: how to argue with management about system or vendor implementations that you know will affect both future development time and user experience within your company.
- tonyedgecombe 11y agoAbsolutely, I spent quite a few years on the other side, implementing systems for a vendor. We rarely had technical problems but usually encountered some kind of management failure, from either side.
- asgard1024 11y agoClassical software studies? What about System 370, CP/CMS, IMS, CICS? There is so much that was forgotten.
- alt_f4 11y agoCSCI 2100: Learning how to hate on OOP CSCI 3300: Stuff no one cares about anymore CSCI 4020: Pretending to write fast code in slow languages CSCI 2170: I know about command line tools !1!!@ So h4x0r PSYC 4410: Trivia Seriously, this article is garbage
- 2sk21 11y agoNo disagreements except that I might rename "Classical Software Studies" as "Software archeology"
- notacoward 11y agoCSCI 2020: How to Store Data Discover the fascinating differences between fflush, fsync, and data actually hitting disk. Learn why single-byte writes are a dumb idea, and why accessing data through a cheap one-gigabit switch might not be as fast as accessing it locally. As preparation for being actual storage developers, students will be blamed for the professor's own mistakes, and for every problem that happens anywhere else in the system.
- AnbeSivam 11y agoI am interested in learning this. Are there any books/study_material available, that you recommend.
- loaaa 11y agoAnother course should be network security for everyone
- garfieldnate 11y agoI would take that classical programs class in a heartbeat. That seems like something that could be organized online somewhere.
- EugeneOZ 11y ago"I'm so cool I'm going against the crowd" bullshit.