The original post was based on a learning plan that I had worked out for myself after I jumped into the study of programming and computer science just over a year ago on something of a whim. As I’ve mentioned before, I do not have any formal background in computer science beyond the handful of courses from this list that I have worked through myself. However, I do have years of experience in teaching and in curriculum design for natural and foreign language acquisition at the college level, and consulted the computer science curricula from a number of universities around the country when putting the plan together.
The idea was not to provide a substitute for an actual college or university education (that would typically also require a large amount of alcohol at the very least, which, unfortunately, is not freely available online), but rather to aggregate resources that have been made freely available online from disparate institutions and organize them into the sort of logical structure one would likely find in a general bachelor’s level computer science program.
On the basis of the feedback from that post, we’ve put together a new list of course offerings that covers a lot more ground. In the process, I’ve also loosened up a number of implicit strictures on resources for inclusion in the present listing. For example, some of these courses require registration at a particular website and/or may not yet be available in full (ex. Coursera), a couple others are actually compiled from other resources freely available online (ex. Saylor). But all of them are still free.
Whereas the first post was intended to provide a general overview of the field along with a generic curriculum and necessary resources suitable for an absolute beginner (containing 27 courses altogether), the present listing is much more extensive and intensive in scope representing 72 courses from 30 different institutions. While we have added a number of new introductory level courses, there is a lot more that may be of interest to intermediate level folks and perhaps even some who are highly advanced and are considering a refresher course or two.
The course listing is broken down into three major divisions: Introductory Courses, Core Courses and Intermediate/Advanced Courses. Individual courses are then listed by category within each division.
Last but not least, thanks to everyone who provided feedback and offered suggestions on how to improve the original listing. Special thanks to Pablo Torre who provided a ton of links in the comments to the first post, many of which are included here.
Introductory Courses
Intro to Computer Science:
- Introduction to Computer Science and Programming: MIT
- Introduction to Computer Science: Harvard
- Introduction to Computer Science and Programming Methodology: Stanford
- Programming Abstractions (Second Course in Unit): Stanford
- Mathematics for Computer Science: MIT
- Discrete Mathematics: ArsDigita
- Programming 1: University of Toronto
- Programming 2: University of Toronto
- Programming (University Link): University of Toronto
- Introduction to the Theory of Computation: Stonehill
- Principles of Computing 1: Rice
- Principles of Computing 2: Rice
Core Courses
Theory:
- Theory of Computation: UC Davis
- Theory of Computation: IIT Kanpur
- Efficient Algorithms and Intractable Problems: Berkeley
- Data Structures: Berkeley
- Linear Algebra through Computer Science Applications: Brown
- Discrete Math and Probability Theory: Unaffiliated
- Operating Systems and Systems Programming: Berkeley
- Introduction to Linux: Unaffiliated
- Programming Paradigms: Stanford
- Object Oriented Programming: MIT
- Object Oriented Programming in C++: ITU
- Software Engineering: Stanford
- Elements of Software Construction: MIT
- Software Engineering: Unknown
- Performance Engineering of Software Systems: MIT
- Computer Architecture: Carnegie Mellon
- Computer Architecture: Princeton
- Introduction to Databases: Stanford
- Introduction to Database Systems: Saylor
- Fundamentals of Computer Networking: Manhattan College
- Introduction to Data Communications: Thammasat University
- Introduction to Cryptography: Ruhr University
- Introduction to IT Security: Thammasat University
- Introduction to Artificial Intelligence: Berkeley
Intermediate and Advanced Courses
Algorithms and Data Structures:
- Advanced Data Structures: MIT
- Analytic Combinatorics: Princeton
- Computer System Engineering: MIT
- The Hardware/Software Interface: University of Washington
- Design in Computing: UNSW
- Principles of Programming Languages: IIT
- C++ for C Programmers: UC Santa Cruz
- Heterogeneous Parallel Programming: University of Illinois
- Compilers: MIT
Mobile App Development:
- Building Mobile Applications: Harvard
- iPhone Application Development: ITU
- Android Application Development: ITU
- Building Dynamic Websites: Harvard
- Introduction to Database Management Systems: (Unknown Affiliation)
- Database Management Systems: Ars Digita
- Advanced Databases: CMU
- Security and Cryptography: Thammasat University
- Intro to Information Security: Georgia Tech
- Cryptography 1: Stanford
- Cryptography 2: Stanford
- Bilinear Pairings in Cryptography: BIU
- Artificial Intelligence: HRW
- Artificial Intelligence: Berkeley
- Machine Learning: Stanford
- Natural Language Processing: Columbia
- Natural Language Processing: Stanford
- Digital Image Processing: Purdue
- Computer Graphics: Berkeley
- Computer Graphics: ITU
- Computer Networks: University of Washington
- Internet Technologies and Applications: Thammasat University
- Statistics and Probability: Harvard
- Probabilistic Systems Analysis and Applied Probability: MIT
- Statistical Inference: Johns Hopkins
- Data Analysis and Statistical Inference: Duke
This comment has been removed by the author.
ReplyDeleteThank you so much! That's SUPER! ... you must have exerted tremendous efforts on compiling all these courses in one place :) ... Can't thank you enough :)
ReplyDeleteHowever, I have a question, is it possible that these courses help me cover one of the job requirements "a degree in computer science"?
Actually I'm a medical student but interested in the IT field, but neither I have the time nor the money to have a degree in computer science.
Thank you again :)
There are many people in the CS field without formal degrees. Will you be having a degree in medicine? If so, that and the required skills should be more than enough
DeleteHave you done the moocs? I'm in the same position as you were when you made this comment. I'm a last year med student with interest in CS (I think due to government regulations this will bring way more innovations, than biology), but with no money or time to get a degree in CS.
DeleteHi Omar, thanks for your comment. As for your question, I would have to say, I'm not sure. If the job requirement is "having a degree of a specific level in a specific field from a specific institution", then the answer would probably have to be no. If, on the other hand, the job requirement is "having the knowledge and skill set common to this particular discipline", then the answer could very well be yes. Many job listings that I've seen, for example, say, "degree in discipline or equivalent experience".
ReplyDeleteIn my opinion, there are a fair number of people who can excel in school, get a degree and still not have much of a clue about their field. On the other hand, there are also many people who are completely self-taught who are leaders in their fields. It is a very difficult question to answer in the abstract. Personally, I've had a great time working through a number of these courses, and have been able to use the knowledge I've gained in my everyday life for work and just for fun.
Well done, u have done so well in compiling all this. Thank you very much
ReplyDeleteIf we are to seek a B.S. equivalent using this as a guide, could you suggest a course guide for the topics like you did in the original post? e.g. ("choose 2 courses") Or do you recommend we just go through each course?
ReplyDeleteHi Charles. Since there are so many courses here, and since many of them are quite advanced, I was no longer confident that I would be able to make those kinds of decisions regarding how to pick and choose for an individualized curriculum. I think if anyone just did most of the intro and core courses and maybe one or two of the intermediate/advanced, they wold be pretty close to covering a the cs curriculum from a general program (at least from among the ones I've looked at). You might want to take a look at NYU's curriculum guide, it's one of the clearest out there, and breaks things up into helpful logical chunks and study tracks: http://engineering.nyu.edu/academics/programs/computer-science-bs/curriculum
ReplyDeleteIs tat Intermediate/Advanced Course is equivalent to d major in computer science(curriculam)?
DeleteThis comment has been removed by the author.
ReplyDeleteI have a question, what maths do I need if I want to take this courses? I come from a very poor base at math and after reading the courses descriptions, I'm not sure its start assuming previous knowledge or you can jump in without knowing anything.
ReplyDeleteIf it does assume knowledge, is there any place or recommended courses I can take to improve my math knowledge?
The Introduction to Computer Science courses on this list are not really math-intensive. Actually, in the first lecture of the Stanford Programming Abstractions course (listed in the Introductory section), the professor addresses your question explicitly, and argues that you should be able to jump right into the course without any advanced mathematics. Worst case scenario for the intro courses is that you might have to look some things up here and there, but even just basic wikipedia-based refreshers should bring you up to speed if necessary.
DeleteThere are about five other algorithm courses on Coursera by Tim Roughgarden and Robert Sedgewick that should definitely be on this list.
ReplyDeleteThis is Great !
ReplyDeleteI think may be we need a wiki for this !
there are lots of people plan for online study and they don't know where to start and what to read.
I think curriculum like this is essential
Thanks! A wiki would be pretty cool. There have to be some out there already. Here's one on reddit: http://www.reddit.com/r/programming/wiki/faq
DeleteThis comment has been removed by a blog administrator.
ReplyDeleteExcellent Post. I think this should be added on github in the awesome-awesomeness list...
ReplyDeleteThanks Jomit, I was not aware of the awesome-awesomeness list. Great resource.
DeleteHi thanks for the great list!. I would like to make one correction though.
ReplyDeleteIts IIT Kanpur, not ITT Kanpur.
Hello, thanks! Will update the post with the correction.
DeleteThis is really great, thank you so much for this.
ReplyDeleteIn the first post there were choices between courses of the same nature. Is there a reason for not including that info in this post?
ReplyDeleteThanks a lot by the way, I've been looking for something like this for weeks.
this is amazing! thank you so much! :)
ReplyDeletei am currently pursuing bachelor in engineering in electronics & communication but have interest in software field.After learning many courses from the above mentioned,is applying for software company help me like in google,facebook etc
ReplyDeleteIt depends on what job you want. I work for Google and have absolutely no computer science education.
DeleteKhan Academy has also just put up a great course on Algorithms go go with their already great courses on Cryptography and Information theory.
ReplyDeleteA couple of questions... is this for the person to get their feet wet and decide whether to persue a career in computers? If I follow through with these courses, will I then need to go to university? Will this set of links give me the skills I need to get started?
ReplyDeleteHey Jason, that's a hard question to answer. There is much more on this list than would be required for any specific college level computer science curriculum. If you want to jump in and see if you like it, you might try just working through one of the introductory courses and see if you are interested enough to keep going after that.
DeleteMadmin, you rock!
ReplyDeleteThanks Anon!
DeleteThis comment has been removed by the author.
ReplyDeleteThis comment has been removed by the author.
DeleteHi Jose, that is quite ambitious! I've completed about 5 courses in just over a year and a half, plus countless one-off tutorials. You might also want to check out a previous post we had on how to create a simple learning time-table for absolute beginners: http://blog.agupieware.com/2013/12/online-learning-teach-yourself-python.html
DeleteI love the article, but part of me wonders how well this might compare to a programming instruction book. My background is in engineering but I've always found programming fascinating. However, when learning, I always felt like I needed my hand held, so I wonder if a programming python, etc, for dummies book would work better for me. Alternatively, I am aware of a paid learning sites that asks for a monthly fee, but they sequentially guide you through web development and some programming. I suppose I just feel overwhelmed even starting back up with the free college courses. There's a LOT of lectures, notes, and quizzes to go through, so I'm wondering if there's a faster way since I do have a basic background in programming.
ReplyDeleteThere are a ton of great, free, intro Python tutorials out there. See:
Deletehttp://blog.agupieware.com/2014/01/50-python-resources-for-beginner-and.html
You might also be interested in checking out a previous post of ours that lays out a learning time table for an intro programming course from MIT that uses Python as its language of choice:
http://blog.agupieware.com/2013/12/online-learning-teach-yourself-python.html
Hello Admin!
ReplyDeleteThanks for this great list.
Well the link to Theory of Computation: IIT Kanpur is broken.
Youtube videos are not available.
I believe this link will work fine: http://nptel.ac.in/courses/106104028/
Question for you Madmin. First off thanks for your hard work on compiling all these courses. I have a bachelors in a unrelated field to computer science and recently have become very interested in computer programming. In your opinion, would completing your curriculum suffice on a resume when applying for IT jobs, or would one have to go back to college for a "formal" bachelors in CS to get hired?
ReplyDeletehmmm, that's hard for me to say. But from job listings I've looked at, you will often find employers who are looking for people with a bachelor's in computer science or equivalent experience. In my own experience, after working through only about 2 of the courses on this list I was already able to do things that made me much more competitive in my own field (which is not directly tech or computer science related).
DeleteHey Madmin,
ReplyDeleteThanks for all the work you did compiling these.
I was just wondering, after completing these courses will I actually have a bachelor's level knowledge of computer science? I'm only 13, and I'm a fanatic programmer.
Hey anon, good on you! I would argue that, since pretty much all of these courses are bachelors' level courses from accredited universities and colleges, you would be pretty darn close. I'm tempted to argue that someone studying on their own might end up with more knowledge/experience than someone who studied it formally in school just because they had to major in something to get a degree.
DeleteHowever, the thing you can't get from doing these courses online is the face-to-face academic community (including professors, fellow students, teachers' assistants, advisers and so on) you would have on an actual campus. That kind of interaction provides vital feedback in the learning process.
But, at the same time, this can also be compensated for somewhat by participating in local meetups, talks, lectures and so on, participating in forums where such people congregate online, contributing to open source projects and other things of that nature.
Thanks for this; this is really goo.
ReplyDeleteGood courses
ReplyDeleteI've always wanted to get into software development and your compilation just gave me the means & motivation to do it. So thank you!
ReplyDeleteQuick question though, I can see that for some categories there seem to be similar courses (ex. Intro to Computer Science has 3 seemingly similar courses but from different institutions). Should I do all of them or just pick one?
I'd say watch the first lecture of each of them, and then decide from there which one you want to do. The first lecture in a given course almost always provides a really good overview. You might find you like one professor more than another, or have more interest in one of the languages they use in one rather than than another, or more interest in topics they'll focus on in one rather than another. Conceptually, the intro courses cover much the same material: the basics! Personally, I did the MIT intro course first because I was interested in Python. It was fun and I learned a ton.
DeleteThank you so very much for compiling this wonderful list!
ReplyDeleteI have only one question really. Would it be okay to go through every course you have provided from top to bottom? By this I mean to ask would it be a good idea to go through MIT, then Harvard, then Stanford, back to MIT, etc? I feel that learning from multiple universities (also experiencing multiple languages) would give me a wide array to work with. Would it be better to try to stick to one source per category/topic or just go through all of them? I thank you in advance for your answer; I simply feel as though I might head the wrong way with going through all of the courses, but it could also be beneficial. Please respond whenever you can! Thanks!
I'd say take it one at a time. There is A LOT OF MATERIAL! It would take years to go through all these courses. My own recommendation is to watch the first lecture from each of the intro courses you are thinking about, and then decide which one appeals to you the most, and then do it. After that, you'll have a better idea what you'd like to do next. I started with the MIT Intro course, then did a data structures course, then algorithms, web dev, and programming paradigms, as well as a networking and crypto course.
DeleteHello,
ReplyDeleteI want to know for the Intro course of MIT, how many lectures are there?
You are in luck, as we have previously published a post detailing a time table for the completion of that precise course:
Deletehttp://blog.agupieware.com/2013/12/online-learning-teach-yourself-python.html
Fantastic post my friend. I am quite ecstatic to have found this extremely valuable Info.
ReplyDeleteGreat post. Is there a similar curriculum available for learning computer engineering? Thanks.
ReplyDeleteThanks
ReplyDeleteNow a days online learning has been very popular to the people because it's very much easy to learn anything on any topic. So I think day by day it will increase a lot and more people will come to learn more online courses for sure. Thanks a lot!
ReplyDeleteThis is awesome! Thank you!
ReplyDeleteThis is awesome! Thank you so much!
ReplyDeleteI already have a Post Graduate Diploma in Computer Science, I wish to know if there are certifying bodies willing to access my knowledge in computer science, and thereafter give me a Bachelors degree.
ReplyDelete9999999999999999999999999999999999999*999999999999999999999999999999999999=thanks
ReplyDeleteCant thank you enough
ReplyDeleteThanks for keeping track! Would there be an update on this list? :)
ReplyDeleteThis is a really awesome post! Georgia Tech also offers many of its graduate level comp sci courses for free on Udacity: https://www.udacity.com/courses/georgia-tech-masters-in-cs
ReplyDeleteUdacity also has a ton of free courses, some of which are are university level computer science courses that could be added to this list, and some of which are courses for specific practical skills/technologies for career advancement.
Hello Madmin,
ReplyDeleteCan we please add "pick two of three:" or "pick two of two:" etc in course schedule and also mention what is optional?
Thanks
Sal
Hello Madmin,
ReplyDeleteI wanted to know if we are supposed to take the original course first and then do this or do this course instead of the previous one.
That is really up to you. There is overlap between both. This one contains more courses at an intermediate and an advanced level.
DeleteAre there curriculums like this for every subject?
ReplyDeleteI wish! That is actually something I've been considering though, putting together a similar list for a different subject.
DeleteThis list is pretty good but I think that level 0 needs to be addressed if you are learning yourself.
ReplyDeleteI have tried without too much success to set up an IDE like Eclipse. Python is very difficult (for me at least) to get working. I'm a windows person, Unix doesn't have a lot of apps I need everyday.
I tried to work with Eclipse for Python and it came back with a lot of Java stuff like ant build or other things.
Git, some other things, would be nice to know about to start programming. I actually am finding Python not that easy to use since you don't get pyc files to actually run. The easiest one I found is Spyder which seems to be the easiest and most integrated for a starter.
There are a lot of different IDEs but without an easy one for a lot of common languages it is a little hard to actually do anything productive.
IDLE doesn't make it to learn what is on the curriculum.
DeleteYes, I actually just saw a conference talk by an educator who brought up the issue that just getting a development environment up and running, and developing good work-flow habits, can be a significant hurdle for people. For some info on that, you might find some good tips in our list of Python resources for beginner and intermediate programmers:
Deletehttp://blog.agupieware.com/2014/01/50-python-resources-for-beginner-and.html
In terms of IDEs, Jetbrains' PyCharm Community Edition is my favorite to work with. It is free, has tons of functionality, and has good supporting documentation for when you get stuck on something. I've worked with it a fair amount on a Windows machine, and it is fairly painless to set up and begin working with. Definitely worth checking out, imo:
https://www.jetbrains.com/pycharm/download/
After another month or two I really have not made progress. Python's libraries seem vastly superior to any other language right now but the fact that Python is interpreted and you must have the interpreter running is a very big negative along with the need for an IDE for practical purposes. PyPy seems to have been discontinued.
DeleteWhat I feel the need for is a self contained shell or VM to develop and run programs in that won't harm my computer as I learn. I don't get that from Unix. Maybe I am being unrealistic but this is the same issue I have had before. I took a C++ course at a community college years ago. The IDE was fine and it resulted in program I could run on any windows computer with compiled object code.
To run a Python program you need the interpreter and a program which is a serious drawback.
What are you doing that you fear your Python programs might harm your computer? Do you mean doing weird things with the os or sys modules? Or do you mean your Python system files themselves? If the latter, you might consider checking out virtualenv to create project-specific Python interpreters. If the former, you could set up a Linux VM inside something like VirtualBox to completely separate it from your system, and run code you think might be harmful there. We have a post on how to set up a virtual machine inside VirtualBox here: http://blog.agupieware.com/2014/10/hack-lab-part-1-installing-kali-linux.html
DeleteWell I am not trying to do weird things but I'd like to be able to do things with files and directories I forget what the package is called shutil? Linux is not what I am interested in at all, it has a learning curve I don't want to get into while I try to learn Python. Yes life would be a lot easier if I already knew what I wanted to learn and didn't have to do it. I'm using all Windows PCs.
DeleteIf I ever do finish the course then Operating Systems is probably the next thing I'd like to try.
Ah, yes, it would indeed be possible to inadvertently/mistakenly remove the wrong directory tree with shutil if you weren't being careful. If you have a disc or copy of the Windows OS you could install that on a virtual machine and go to town.
DeleteBut if you don't want to bother with virtualization, another potential solution for you might be to create a separate user account on your current Windows machine, and restrict that user's privileges so that it can't do things like delete important directories from your main/admin account, and then only play around with those python modules under that user.
If you're interested in operating systems and doing things with files and directories, you should definitely check out the os module, tons of interesting and helpful stuff in there.
excellent thanks a lot .........
ReplyDeleteHi Madmin,
ReplyDeleteI completed MIT 6.00sc and am not sure what to try next. Your original post on this suggested taking 2 intro classes but this updated post doesn't. Do you still recommend that? If not, what is a good followup class to take? I tried to start MIT 6.006 Alogrithms but I looked at the first problem set and realized I was probably in over my head. Thanks!
haha, I know exactly what you are talking about! The same thing happened to me with the algorithms course, I returned to it about a year later, and still haven't completed it!
DeleteI found the "Introduction to Data Structures and Algorithms: UNSW" much more easy to digest. And here are two other algorithms courses that I found easier to jump into (the first one is much more theoretically oriented, while the second is a bit more practical, and I think both are from UC Davis):
https://www.youtube.com/watch?v=kqt-mfcm-FM&list=PL6EF0274BD849A7D5
https://www.youtube.com/watch?v=gwlevtaC-u0&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm
As an alternative to algorithms, you might also check out the Stanford "Programming Paradigms" class, I learned a lot from that one.
Hope that helps! Let us know how it goes!
we are doing cources from many univercities will the programing languages,etc collide or not
ReplyDeleteand we have to do all the cources and how much time will it take.
why we didn't add harvard cs50
we can also add mitx 6.00.2x
ReplyDeletei have question what can i do if i donot know the calculus,probablity,or othe mathematics used in computer science
plz reply
Hi. Thanks for this - this is such a great resource. Any update on your progress so far (issues, tips, advice)?
ReplyDeleteI would also recommend this site https://metacademy.org/roadmaps/rgrosse/learn_on_your_own
and this one for metacognition ('learning how to learn'): https://www.class-central.com/report/coursera-learning-how-to-learn/
Also, for a great intro to low-level hardware, systems and low-level languages, many people recommend the well known "Nand2Tetris" Course (available here http://nand2tetris.org and on Coursera).
Hi! I'm from Brazil and I want to thank you VERY MUCH for this. That's EXACTLY what I need! Thank you very much!!! Hope the best for you!
ReplyDeleteare we suppossed to do every class from every category or pick one class in each category?
ReplyDeleteThere is no set path. Pick and choose what interests you most, starting from the beginning.
DeleteHey Madmin,
ReplyDeleteI want to start of saying that I really respect what you have done heere. Thanks a lot for it.
I wanted to ask, say I loved a course(eg CS50 - The introductory course at Harvard) so should I find similar courses on Harvard or rather just stick to the ones listed here?
I would recommend picking out a few different courses that interest you, then watching the introductory lecture for each one. The intro lectures provide good overviews of the course materials, and topics. Then after watching the intro lectures, dive in to the one you found most interesting. The listings are really only a guide, aimed at demonstrating the wealth of options available to you online.
DeleteHey Madmin,
ReplyDeleteI am a nursing student. However, I love gadgets and anything that has to do with Computers.
i would love to try your "course syllabus" but i have concerns because i dont know where to begin. i have no background in any CS related course. no solid maths background either.
i want some advice from you on which courses should i start with? should i start with maths? on intro.to CS?
Please help!
Hey Madmin,
ReplyDeleteI am a nursing student. However, I love gadgets and anything that has to do with Computers.
i would love to try your "course syllabus" but i have concerns because i dont know where to begin. i have no background in any CS related course. no solid maths background either.
i want some advice from you on which courses should i start with? should i start with maths? on intro.to CS?
Please help!
I would recommend starting with the MIT intro to computer science course. It is not math intensive (a lot of people think you have to know a lot of intensive math to do basic programming, but that is just not true). I started with the MIT programming course, coming from a language pedagogy background, and it was great! We have a couple other posts with tips on working through that course in particular as well. See:
Deletehttp://blog.agupieware.com/2013/12/online-learning-teach-yourself-python.html
http://blog.agupieware.com/2014/01/benchmarks-teach-yourself-python-in.html
http://blog.agupieware.com/2014/01/50-python-resources-for-beginner-and.html
Great job, but I have a question: in the first post you told us how many of each to pick and do, so how many do I choose now?
ReplyDeleteHello Sir , i really appreciate the hard work and efforts that you have put in to combine this intensive list. I would like to request that if possible please compile a similar list of particular institutions like MIT or Stanford or Harvard that covers their entire curriculum in linear order.
ReplyDeleteThank You
Excellent post!
ReplyDeleteI have a question though, are all the courses in order ? (Should I start watching the courses as listed) since I would like to know if some introductory courses need prerequisites which are also in the introductory courses section... ( if that makes sense ! :) )
Can not thank you enough! best wishes!
ReplyDeletegood information
ReplyDeleteNice Post.Thanks for sharing this information.
ReplyDeleteI really liked your post.Thanks Again
ReplyDeleteHi, when was this post last updated? Looking forward to your reply in 2019 haha, cheers.
ReplyDeleteHi, we just updated this post.
DeleteIntroduction to Computer Science and Programming Methodology: Stanford course does not work
ReplyDeleteWe've updated all the links. Let us know if we missed any.
DeleteWe agree! That's why we removed all the spam comments (a ton of work). We hope this will make for a better experience.
ReplyDeleteAmazing, thanks again
ReplyDeleteHow was it?
Deletethanks for your effort and sharing this wonderful post.
ReplyDelete