9 ms·
Ask HN: What are the best advanced computer science courses online?
It's easy to point to good beginner material like CS50 for example. But what about more advanced topics for non-beginners?
- diehunde 6y ago- CMU's database systems courses on Youtube. Even the intro one is pretty advanced. - MIT 6.824 Distributed Systems also on Youtube
- porknubbins 6y agoI’m about halfway through 6.824 it has been challenging but very worthwhile.
- KiranRao0 6y agoCMU 15-445 Database Course and accompanying Youtube lecture series is a great intro to understanding the inner mechanism of a relational database. https://15445.courses.cs.cmu.edu/fall2019/schedule.html https://15445.courses.cs.cmu.edu/fall2019/schedule.html
- gauku 6y agoMight not be exactly what you're looking for, but if advanced ML and related application topics are of interest to you, please check this out - https://www.reddit.com/r/MachineLearning/comments/fdw0ax/d_advanced_courses_update/ https://www.reddit.com/r/MachineLearning/comments/fdw0ax/d_a... It's a (organised) dump of advanced courses from some of the best researchers in the field.
- mindwok 6y agoDoes anyone know of entire degrees/programs with the kind of rigour in these courses, especially with regards to assessments, and direct access to lecturers and tutors etc? I'm going back to physical university and the driving factor was the inability to get help when I needed it. I tried a few coursera courses and many of my questions sat unanswered on forums for days and even weeks. I'd be happy to pay a reasonable premium for timely access to experts on the subject like you get at a real university.
- ipnon 6y agoThis seems to be as close as you can get without matriculating: https://bradfieldcs.com/csi/ https://bradfieldcs.com/csi/
- cambalache 6y agoThat looks like a nice way to throw away 20k USD.
- jholman 6y agoYou could say that with some truth about nearly any course of study (modulo the price tag). What's the GWH quote? “You wasted $150,000 on an education you coulda got for $1.50 in late fees at the public library.” That general cynicism about paid education notwithstanding... Having looked over Bradfield's curriculum, I think they've made some very savvy choices, that would definitely benefit students. Also I know two Bradfield alumni, who were both quite pleased with their experience there (though neither went for long enough to spend 20k USD). I think you can probably do a lot worse than Bradfield.
- cambalache 6y agoHardly. Let's see the options: - A masters degree outside USA, it is probably way cheaper and extremely more prestigious, with better job prospects connections. - A masters degree in America, it more expensive, but gigantically superior in all the other points. - An online masters degree like Georgia Tech. Better, cheaper, more prestigious. - A CS degree online at OSU: https://ecampus.oregonstate.edu/services/tuition/?p=computer-science-postbacc https://ecampus.oregonstate.edu/services/tuition/?p=computer.... 1.5 X as expensive but you will get a real degree (No ABET accredited). - Coursera/Udacity/Edx. 10% of the cost, courses taught by first-rate universities. - OCW: Totally free. - FreeCodecamp: Totally free. So this program has the cost of Ivy-League universities program with 0 of the benefits. If you think this is a good proposition for your career, I as a hypothetical recruiter, would highly question your common sense as a prospective employee.
- dannygarcia 6y agoI would say Roughgarden's four CS Algorithms courses on Coursera are somewhat more advanced than CS50: https://www.coursera.org/specializations/algorithms https://www.coursera.org/specializations/algorithms It covers foundational topics like asymptotic notation. However there is some reading required if you a C in high school calculus like me.
- kyawzazaw 6y agoCS50 is more like a intro course (although it just keeps growing so much).
- mehrdadn 6y agoAdvanced data structures: http://courses.csail.mit.edu/6.851/ http://courses.csail.mit.edu/6.851/
- kyawzazaw 6y agoIs there any places these are used?
- MattGaiser 6y agoInterviews.
- quantified 6y agoSo many interviews have a tries question and a recursion question.
- kadoban 6y agoThis class isn't good interview prep. These are a mix of theoretically interesting and/or practical but somewhat difficult (not intro level) data structures/algorithms.
- mehrdadn 6y agoYes... tries, suffix arrays, sketching, cache oblivious data structures and algorithms, splay trees, persistent data structures, etc. are used in a wide variety of places ranging from compilers to compbio to distributed systems, to give some examples. I know I've written applications for which I wanted to use some of these to get a nice speedup, but in most cases I just never got around to them. Of course you'll find ones that are more obscure too. I'm not sure how to give a more useful answer to such a broad critical comment though...
- colinb 6y agoTries are useful for IPv4 prefix lookup. Routers that don't have hardware acceleration use them. Indeed, some hardware devices map a s/w trie to analogous h/w structures (some use TCAMs). Also interviews...
- ipnon 6y agoStanford's experimental operating systems course[0], where you buy a Raspberry Pi and write your operating system on the bare metal by using the reference specifications. "You should take this class if: 1. You write code well OR (you don't yet write code well AND have a lot of time to devote to the class); 2. AND you find these systems topics interesting. The people that found the class valuable in the past were entirely drawn from this demographic. (In particular: I would not take this course if you were looking for an easier way to satisfy a cs140 requirement.) We are trying to go as far as possible as quickly as possible with a group interested in doing so." [emphasis mine] [0] https://github.com/dddrrreee/cs140e-20win/ https://github.com/dddrrreee/cs140e-20win/
- 0xFFC 6y agoDoes this have video?
- linux2647 6y ago> This is a lab-based class with no explicit lectures I would assume not
- bayindirh 6y agoThis is awesome, thanks. I was planning to experiment with bare metal programming on x86 but, that'll be my entry point.
- ahmedalsudani 6y agoHoly crap that sounds fun. Thank you for the rec!
- jambutters 6y agoHave you done it without the video lectures ? How hard was it ?
- throw14082020 6y agoIt doesn't have video lectures. > This is a lab-based class with no explicit lectures. [source](https://github.com/dddrrreee/cs140e-20win/ https://github.com/dddrrreee/cs140e-20win/)
- machinelabo 6y agoIf someone has a recommendation for how to build/architect large GUI applications like Photoshop. For e.g., how to think about Undo operation right from the get-go . I think that would be amazing to learn if there is a course like that.
- vips7L 6y agoFWIW Undo was one of the use cases when the Gang of Four described the command pattern all the way back in 1994.
- benrbray 6y agoCheck out Game Programming Patterns (https://gameprogrammingpatterns.com/ https://gameprogrammingpatterns.com/) and the Architecture of Open Source Applications (http://aosabook.org/en/index.html http://aosabook.org/en/index.html).
- nightowl_games 6y agoHey. Check out Juan Pedro Bolivar Puente's talks om value oriented design. He worked on Ableton which is a large application. He specifically speaks to Undo. He describes a much better pattern than the Command Pattern. He also released his source for Value Oriented Data structures Juan Pedro is a next level programmer who I think has pushed the craft forward through his work on bringing Value Oriented Design into the C++ world. Talk I https://youtu.be/sPhpelUfu8Q https://youtu.be/sPhpelUfu8Q Talk II https://youtu.be/SAMR5GJ_GqA https://youtu.be/SAMR5GJ_GqA Data Structures: https://github.com/arximboldi/immer https://github.com/arximboldi/immer Application Structure: https://github.com/arximboldi/lager https://github.com/arximboldi/lager Text Editor: https://github.com/arximboldi/ewig https://github.com/arximboldi/ewig Good luck.
- machinelabo 6y agoWow. Thank you.
- kls 6y agoUndue can be fairly trivial if your data structure and controls are implemented correctly, for example a common undo redo pattern is to have an immutable structure in a vector, new operations clone the last good object, add an entry on top of the vector, and undo is to just move your reference to the previous object, redo you move it forward. There are other patterns but this one works fairly well for simple time-travel undue / redo operations.
- omarhaneef 6y agoAn advanced course is — almost by definition — not general, and geared towards a specialization within a context. So an advanced course would be about data science, cryptography, machine learning, vector calculus, autonomous vehicles, object recognition or some other “vertical.” Do you know which direction you want to go in and what you want to learn? Depending on that answer you might get a different recommendation. Having said all that, the answer is Udacity.
- donkey-hotei 6y agoIf you're interested in low-level systems concepts and learning how to write exploits: I highly recommend Modern Binary Exploitation by RPISEC. [0]: http://security.cs.rpi.edu/courses/binexp-spring2015/ http://security.cs.rpi.edu/courses/binexp-spring2015/
- novia 6y agoAre there any associated lecture videos?
- ArtWomb 6y agoCMU's Ryan O'Donnell's YouTube channel certainly deserves inclusion on any such list: CS Theory Toolkit, Street Fighting Math, Quantum Computing https://www.youtube.com/channel/UCWnu2XymDtORV--qG2uG5eQ https://www.youtube.com/channel/UCWnu2XymDtORV--qG2uG5eQ
- 0xFFC 6y agoI have to thank you for such useful link and course. Thank You.
- vips7L 6y agoOpen Security Training, everything about assembly and reverse engineering https://opensecuritytraining.info/ https://opensecuritytraining.info/
- cambalache 6y agoStanford is a treasure trove of advanced courses in ML/AI. Reddit has also this pretty great list of advanced courses in ML: https://www.reddit.com/r/MachineLearning/comments/fdw0ax/d_advanced_courses_update/ https://www.reddit.com/r/MachineLearning/comments/fdw0ax/d_a... There is this from MIT (Graph Analysis) https://people.csail.mit.edu/jshun/6886-s18/ https://people.csail.mit.edu/jshun/6886-s18/ I like the distributed systems class too (The assignments are in Golang) : https://pdos.csail.mit.edu/6.824/ https://pdos.csail.mit.edu/6.824/ My "loose" definition of advanced: "If you follow the class and do the work you will be able to implement something not trivial"
- thom 6y agoThis is going to sound dumb, but in case this is something you could possibly get excited about: research and build chess engines. There is almost no part of computer science that hasn't at some point intersected with chess computers, from early forays into game theory, through close-to-the-metal optimisations like bitboards and vector operations, right up to the state of the art in deep learning. I genuinely think you can get a fairly complete CS education just by building a series of increasingly complex engines (and UIs!) and you will find yourself in the company of basically all the greats like John von Neumann, Alan Turing, Donald Knuth, Ken Thompson etc etc.
- Bootvis 6y agoI was thinking about this last week and maybe like to try some time. How does one start out?
- pigscantfly 6y agoI would check out Michael Genesereth's course on general game playing [1] -- I don't remember if we specifically implemented a chess engine, but it's more or less exactly what you're looking for. Once you've mastered that, I'd move on to Mykel Kochenderfer's series on decision making under uncertainty [2], which extends to more state of the art approaches to the problem (ie. MCTS + deep Q learning + better encoders, which is basically what got us AlphaGo, AlphaStar, Atari agents, etc.). Once you've got that down (or before), you should start reading whitepapers. Genesereth and Kochenderfer also have books on the subject; Kochenderfer's is extremely good (I haven't read all of Genesereth's). [1] http://ggp.stanford.edu/ http://ggp.stanford.edu/ [2] https://web.stanford.edu/class/aa228/cgi-bin/wp/ https://web.stanford.edu/class/aa228/cgi-bin/wp/ and https://web.stanford.edu/class/aa229/cgi-bin/wp/ https://web.stanford.edu/class/aa229/cgi-bin/wp/
- dmichulke 6y agoYou need three things: 0. A function A(s) to generate actions (moves) A given a state s: 1. The state evaluation function v(s) to distinguish good from bad states. I would start by using only piece value, then add mobility, piece-field values, ... You can find a few simple elements of such a function here: http://manual.freeshell.org/gnuchess4/HEURISTICS http://manual.freeshell.org/gnuchess4/HEURISTICS With this you can generate s'=as (Successor state is action a applied to state s) and choose the action a=argmax(v(s)) 2. A simple minimax implementation that searches the possible moves https://en.wikipedia.org/wiki/Minimax https://en.wikipedia.org/wiki/Minimax From there you start optimizing your both by adding additional features to the evaluation function and improving your search using pruning and caching
- wagslane 6y agoI've been working on some that are released on https://qvault.io https://qvault.io Specifically I'm working on an advanced algorithms course (think CS 3XXX) in university. Should be out in a few weeks
- wagslane 6y agoI've been working on some that're released on https://qvault.io https://qvault.io Specifically I'm working on an advanced algorithms course (think CS 3XXX in university). Should be out in a few weeks
- angry_octet 6y agoI was interested to see "Intro to Functional Programming" on the front page, but it is actually a link to a go course? Just a linking problem presumably. There is a stub about Purescript but no detail? https://qvault.io/2020/10/19/free-functional-programming-course-released-javascript-and-purescript/ https://qvault.io/2020/10/19/free-functional-programming-cou... It feels like this site is pushing me very hard to "sign up". I immediately feel that I'm being conned in some way and feel an irresistable urge to close the tab. Bad vibes.
- wagslane 6y agoHey is love to fix this, but I'm not seeing the same problem. The first link on the page you linked goes to the FP course page, and that page has a link to the demo (which doesn't require a sign in) and the demo is in JavaScript. Can you point me to what I'm missing?
- angry_octet 6y agoThe link on the front page where it talks about functional programming goes to https://qvault.io/go-mastery-course/ https://qvault.io/go-mastery-course/.
- wagslane 6y agoThanks! I'll fix that RN.
- chriszhang 6y agoOMSCS by Georgia Institute of Technology is by far the best course I have come across. You get a degree too in the end. Caveat: It takes a lot of effort. It is like doing a full time course and the degree they award in the end is indistinguishable from a full time degree.
- jetpackjoe 6y agoHave you gone through it?
- CinchWrench 6y agoI've dropped out. It's a lot of work, but the hardest part for me was staying engaged with the process without in person interaction. Pandemic has been hell for me, too.
- abdullahkhalids 6y agoHow did the program try to get students to interact with each other and with faculty?
- indigochill 6y agoI'm another dropout (loved some of the courses, especially the OS ones, have close-to-zero interest in machine learning, though, and that's maybe half of the class offerings), but to answer your question, all the courses I was in had a "participation" component to the grade where you were expected to ask/answer questions on the online forum thing for your class. There were also optional office hours, as I recall. It was certainly nothing like just hanging out with colleagues in the cafe between classes, but for those (like me) who just can't go to a school like GT in-person, I'm glad the opportunity is available even though I'd say it's probably the hard-mode version of the program given the limited course catalog (not all courses are integrated into the program yet) and lack of in-person interaction.
- 6y ago
- johndoe42377 6y agoProgramming. Serious. https://karma-engineering.com/lab/wiki/OnlineCourses https://karma-engineering.com/lab/wiki/OnlineCourses
- michelpp 6y agoGreat causal inference course from Brady Neal https://www.bradyneal.com/causal-inference-course https://www.bradyneal.com/causal-inference-course
- busrf 6y agohttps://pwn.college/ https://pwn.college/ (CSE466 at Arizona State University) is a great offensive computer security course. The lecture videos, slides, labs and lab infrastructure from this semester are all open to the public.
- 0xFFC 6y agoThank you so much.
- snidane 6y agoMining Massive DataSets (MMDS) from Stanford professors. Videos: https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62... Book: http://www.mmds.org/ http://www.mmds.org/
- disgruntledphd2 6y agoI remember reading that book in 2012, and it absolutely blew my mind. The map reduce stuff hasn't aged well but the model for thinking about complexity in distributed systems is worth the price of the book alone.
- chlopez21b 6y agoCheck out "Artificial Intelligence" on MIT OpenCourseware: https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-034-artificial-intelligence-fall-2010/index.htm?utm_source=OCWDept&utm_medium=CarouselSm&utm_campaign=FeaturedCourse https://ocw.mit.edu/courses/electrical-engineering-and-compu... OpenCourseware was historically one of the first offerings of its kind. I remember using it almost 20 years ago, and it's still a great offering.
- neillyons 6y agoNot typical computer science courses, but the following video series really improved my understanding of how computers work. - Build an 8-bit computer from scratch video series - https://eater.net/8bit https://eater.net/8bit - CPython internals: A ten-hour codewalk through the Python interpreter source code - https://www.youtube.com/playlist?list=PLzV58Zm8FuBL6OAv1Yu6AwXZrnsFbbR0S https://www.youtube.com/playlist?list=PLzV58Zm8FuBL6OAv1Yu6A...
- qntty 6y agoWow that CPython course looks interesting
- nemoniac 6y agoUnderstand computers from the ground up with https://www.nand2tetris.org/ https://www.nand2tetris.org/
- thejteam 6y agoSomewhat related, does anybody know any "beginner material for non-beginners". Pretend I want to learn web development. I have been doing desktop programming and data analysis for many years, so I know all about programming but nothing about how a web-app works. I would be looking for something that explained web apps assuming I know little to nothing about them, but not "how to program" because I don't want to sit through learning about loops or variables. And pretend I'm also the type of person that wants concepts and not just tutorials. Anything like that?
- tomerbd 6y agoperfect! me too.
- hackermailman 6y agoAny university web dev course assumes you can already program and has pretty good architecture summaries you can go off like https://stellar.mit.edu/S/course/6/fa19/6.170/materials.html https://stellar.mit.edu/S/course/6/fa19/6.170/materials.html or https://cs.brown.edu/courses/csci1320/lectures.html https://cs.brown.edu/courses/csci1320/lectures.html
- otras 6y agoMIT's 6.824: Distributed Systems (taught by Robert Morris, of both Morris worm and Viaweb/Y Combinator fame) is completely open and available online, and it includes video lectures, notes, readings, and programming assignments from as recent as Spring 2020 (including half of the lectures recorded from home as the pandemic strikes). The assignments even include auto-graded testing scripts, so you can verify your solution to the assignments. https://pdos.csail.mit.edu/6.824/ https://pdos.csail.mit.edu/6.824/
- maerF0x0 6y ago> Competitions resulting in multiple winners are rare, but this may have something to do with this particular sequence. So if you're going to play the lottery understand that the EROI is actually lower on patterns that humans may follow (like 5-10, birthdays etc) .