
#135 overall
6.00 Introduction to Computer Science and Programming
MIT OpenCourseWare
3 recommenders · 3 threads · recommended in 3 years, 2010–2018 · score 3.3
MIT's introductory computer science course taught in Python, covering programming fundamentals, algorithms, and data structures. The OpenCourseWare materials include lecture videos, syllabus, and assignments.
Commenters call it a great, really good introductory CS course that uses Python and recommend it for beginners and non-CS majors.
Algorithms & Data Structuresbeginnerfreevideo lectures#python#introduction#algorithms#data structures#grimson#mit ocw
Recommendations by year
20062026
I used How to Think Like a Computer Scientist[1] in conjunction with MIT's OCW class for non-cs majors. I only did the assigned reading from the class, so I didn't read it straight through, but I think it might be worth checking out. That class is awesome. It is what I would recommend, but I was pretty motivated.
[1] http://www.greenteapress.com/thinkpython/html/index.html
[2] http://ocw.mit.edu/courses/electrical-engineering-and-comput...
I would focus on certain fundamentals first. I would also suggest picking a single programming language to learn and learn it well.
Python is one that many people choose as it has many courses and books on learning.
Pick a text editor or IDE and practice with it, the tools you choose can help you a lot.
MIT has a great course 6.00 Introduction to Computer Science. Udemy has a great Python 3 course Complete Python Bootcamp: Go from zero to hero in Python 3
I would learn a little about Clean Code, I started porting a PHP version to Python https://github.com/tvmaly/clean-code-python it is a work in progress. The book by the Robert Martin is a great way to go if you like books.
I would learn how to test your code, Kent Beck's Test Driven Development book is good and also covers some patterns.
Learn about Object Oriented design, Data Structures, and Algorithms
Learn about version control, git is a good choice
Learn about the command line, it is always a good skill to have
Here's the MIT OCW index for EE and CS courses: http://ocw.mit.edu/courses/#electrical-engineering-and-compu...
Here's the MIT OCW index for 6.00 w/ Grimson (2008): http://ocw.mit.edu/courses/electrical-engineering-and-comput...
Here's the first video lecture on YouTube: http://www.youtube.com/watch?v=k6U-i4gXkLM
I should mention this is a really good (IMHO) CS course that happens to use Python.
I grew up surrounded by computers, but took relatively few classes. I took AP Computer Science in high school, but had to teach myself the “B” part of the class because the other students couldn’t keep up and our AB class just reverted to just the A portion but that was too easy for me. I also took an “honor programming in C” class from the same teacher, but it was essentially just two hours a day for me to program silly games using some Borland graphics library. I spent a lot more time being familiar with networking at the time really, and despite the CS parts seeming easy, anything web related outside of HTML was a mystery to me.
I did music for college and the only programming I did was in csound and max/msp.
Long story short, music doesn’t pay much. I just started reading and doing programming. I got gigs almost immediately for solving simple data problems for people (extract these CSV files into this format and pull down web data, etc). Fortunately I had companies where they were happy for me to take on whatever programming I felt comfortable with, despite being in a non-dev role originally there.
12 years later, I’m damn good at this. It helps that I can generally just read a book and absorb it. I’ve read books on CS, but haven’t taken any more CS classes outside watching some MIT course 6 videos. I did take some machine learning classes at MIT over IAP and those were fun. One weird thing, I’ve never taken beyond pre-calculus, but the linear algebra stuff in most ML things isn’t that hard for me. Maybe I’m just lucky? I’m a total hack at math, but can understand concepts quickly still and apply them in code.
One weird quirk was that I had to learn that not everyone can learn like I can. I taught for a few years at General Assembly and learned immediately that most people don’t like being throw in the deep end, or being told to read something and apply it the next day. They need smaller and better defined problems to build confidence. Only 5% of student actually enjoy things on hard mode. That’s ok- it’s just different than me.
Like, at work right now I’m probably going to need to do some Go work. I’ve never used Go outside the first 10 project ruler problems. But- I don’t mind telling them that sure, I can do some work in Go. It’s just code, and if I sit down for 8 hours I can get decent with the language.
The only things I’ve encountered so far that felt were “hard” were Haskell, and anything with shaders and modern 3D programming. I’ll figure them out eventually. TouchDesigner has also been tricky, but it’s mostly that their documentation is scattered (so much in videos) and the ui/workflow is non-obvious. I should write a book on it.