5 ms·
The impression I get from this schedule is that this is a collection of quite ad hoc topics that are in some cases quite far removed from what I expected to see
by triska 4y ago
The impression I get from this schedule is that this is a collection of quite ad hoc topics that are in some cases quite far removed from what I expected to see covered in a course that is intended to introduce computing principles.
For instance, are "For Loops", "If Statements" and "Spreadsheets" really essential to computing, can these concepts be considered "computing principles"?
What about logic? I note there is a reference to "Boolean Logic" as one part of the "Spreadsheets and Data" lecture. What about models of computing, or defining what we even mean when we say "computing"? The lecture notes hint at some of these topics in the final lecture ("Theory and Conclusions"), almost like an afterthought.
- zasdffaa 4y agoI agree it's weird, but as someone with a decent CS background... > What about models of computing, or defining what we even mean when we say "computing"? ... I found all I've learn is worth nearly nothing in industry. Which saddens me and it shouldn't be, but it is so. Really basic principles get useful but only in very high-end areas, stuff that I can barely comprehend (eg. automata for model checkers etc).
- ascar 4y ago> I found all I've learn is worth nearly nothing in industry It really depends what you work on. Doesn't even have to be high end. When working on performance critical code I was glad about my computer science and math education more than once. And performance can get interesting even at a few million users or regardless of user-count in realtime applications. When writing business logic without performance and scalability in mind, yea, all that knowledge remains dormant. Reality is that there is simply far more business logic work out there than performance critical code.
- zasdffaa 4y agoAll my understanding of perf-critical code has come from understanding of the usual - pathological cases for algorithms, memory layout, cache friendliness etc. etc. None of that except perhaps a very little of the first, came from my formal education, it's all been down to me reading up on stuff. Can you give me an idea of what your CS & maths education gave you that you found so useful for tuning code? Maybe I'm missing something important.
- ascar 4y ago> algorithms, memory layout, cache friendliness all of this was an integral part of my formal education. Algorithms and datastructures and complexity analysis was mandatory in the undergraduate studies, the lower-level stuff mostly in elective postgraduate classes of my computer science program. From the top of my head also things like operating systems, compilers, networking, vectorization (SIMD), instruction pipelining, branch prediction, threading, NUMA, thread-pinning/affinity that help understanding how my code is actually executed. On the math side set theory, probability theory and analysis also came in handy more than once. Linear algebra I guess if I had to deal with matrices, which is probably relevant in the AI/machine learning fields (not my area of expertise). All of my math education was mandatory undergraduate classes. Sure, it's well established that you don't need formal education to learn all these things (which applies to most fields, not just CS), but they are certainly part of computer science and taught as part of formal education at I would assume most good universities. From my experience (which is Germany and Japan, not the US) especially postgraduate degrees are what you make of them. You can learn nothing relevant for performance critical engineering or you can learn a ton.
- zasdffaa 4y ago>> algorithms, memory layout, cache friendliness > all of this was an integral part of my formal education. Other than algos, we got none of this. > the lower-level stuff mostly in elective postgraduate classes of my computer science program. From the top of my head also things like operating systems, compilers, networking, vectorization (SIMD), instruction pipelining, branch prediction, threading, NUMA, thread-pinning/affinity that help understanding how my code is actually executed. We got compilers. Otherwise none of this - in fact these are not computer science by some definitions. It was pretty much maths at the end. I don't think we were well served in some ways. > which is Germany and Japan, not the US I'm in the UK.
- ascar 4y ago> We got compilers. Otherwise none of this Did you have the option to take the relevant classes as electives in your postgraduate studies? My postgraduate had a single mandatory course and otherwise just required that I spread my classes among 3 of ~7 major focus areas. One of these areas was computer architecture, which taught me most of the low-level things I listed above. Another thing I forgot above was formal education in distributed systems and databases, especially the postgraduate databases class that covered the inner workings (like transactions, WAL, dependencies, rollbacks, etc.) and distributed databases, which nicely connected with the distributed systems lecture (which dealt a lot with CAP theorem and consensus, e.g. paxos). That's also something you can learn on the job, but the formal education gave a pretty broad background that I would think is hard to learn on the job. > computer science by some definitions I guess if there is a distinction between computer science and for example computer engineering they would mostly end up on the computer engineering side of things, which sits somewhere between computer science and electrical engineering. Though the level on which I studied these concepts in our computer science department was to understand how it works, history and state of the art and it's implications on software. It was less about how to create such a system from the electrical engineering side of things.
- feet 4y agoWhich part of the industry do you work in?
- zasdffaa 4y agoIT contractor. Much of it DB stuff. The range of work you do goes from 'sit here and scrub data' to being given a free-ish rein when you've proven yourself, and then you can be very creative. It's all business-oriented work, as in, we need this ASAP. I'd like to do more research-oriented work, or at least cutting edge. Something that's solving longer term business problems, not just 'get it done yesterday'.
- rst 4y agoIt's a first course in programming, with occasional glances at other relevant topics, whatever the title. MIT tried to do an intro course which was actually an introduction to principles, but the effect was so harsh that undergrads without previous background in programming were often advised to take a more conventional "intro to programming" couse first. The textbook, "Structure and Interpretation of Computer Programs", is still available -- but the course is no longer taught at MIT, after they decided it was no longer serving the needs of the students.
- drc500free 4y agoThank you for giving me a flashback to 20 years ago, realizing that I couldn't perform in 6.170 because I didn't know Java but there were no Course 6 classes that taught Java.
- NavinF 4y ago> What about models of computing, or defining what we even mean when we say "computing"? IMO starting with that is the worst possible way to introduce CS to students who are (statistically) far more interested in programming and software engineering than in CS. Hell, most students in this class are probably there only because it’s a prereq for the class they actually want to take.
- UncleMeat 4y agoIn my experience, the huge majority of people who take an intro CS class want to learn how to solve problems with programs and to learn how other people solve problems with programs. At Stanford, almost every single undergrad takes an intro CS class but only a fraction of those go on to major in CS or get a job in software. You've got one class to provide useful information to people - teaching people about models of computation or set theory is not going to capture people's interest or help them meaningfully in the future. But if somebody says "hey, I know enough python to figure out how to split up a huge PDF into individual files, one for each page, then suddenly they are empowered to solve problems. Same reason we wait until Real Analysis to teach delta-epsilon limits while the engineers are off taking PDEs.
- cinntaile 4y ago> Same reason we wait until Real Analysis to teach delta-epsilon limits while the engineers are off taking PDEs. This is very country dependent, we were taught delta-epsilon limits in high school. Maybe not with the same depth, I don't know.
- indymike 4y agoIf you look at the "lecture notes", yes it seems ad hoc. After looking through some of the readings, I think this is a fantastic, very comprehensive survey class.
- rjsw 4y agoI remember finding out that a Biology major taking an "Introduction to Computing" course had still not touched the keyboard after six weeks. If a course like this helps people without a programming background get started then that seems good to me.