- 6 reviews
- 6 completed
Review: As many of the others have indicated, this course is a fantastic course for understanding the power of algorithms. Some Algorithms courses focus on the analysis of algorithms and others focus on the design or implementation of algorithms. This course takes a very application approach to algorithms. Within a week of enrolling in this course, I was using its implementations for improving my programming for my job. For example, I learned how to analyze the memory usage of a program and used this to improve some software at my job. In addition, I have used the tools from this course to improve the efficiency of our algorithms. This alone made the course worth it. Pros: * Course is very application focuses and introduces the students to almost all the big topics in algorithms (unions, analysis of algorithms, graphs, string processing, sorting, searching and so forth) * Reading material, lecture notes and additional resources provide an excellent method for learning the material * Programming assignments give you a great understanding of the material * Instructors provide a very good approach to solving problems: define the problem, write out the API, develop the test client, visualize the algorithm, and break up the problem into small pieces to solve Cons: * Exercises and final exam are randomly generated and must be completely restarted after each attempt; 10 attempts and 3 attempts are allowed on the exercises and final exam, respectively. Slight mistakes are often not given partial credit and can take the fun out of learning. * Java coding practices are not followed (as mentioned by other reviewers). For example, variable and class names are often abbreviated. I am assuming the instructors did this to fit the code on the lecture slides so it is understandable, especially since all the variables are well defined. * Programming assignments can take a large amount of time (10 - 20 hours per week). While I did not mind this, be ready to spend a large amount of time on some of the assignments if you do not have extensive experience. The instructors could cut back on the amount of time spent by providing coding templates, more helper functions/methods and separating out the grading for different pieces of the code. * Dynamic programming is not a focus in this course (or the next). While it is mentioned informally, it seems like this topic should be considered for future offerings.
I am about a week from completing this course. So far, I have been very impressed by MIT once again. This course continues on 6.00.1x "Intro to Computer Science and Programming Using Python". My review from that course will be similar with only a few additional comments. PROS: * The professors are fantastic lecturers. Everything is explained very well with visual representations, well-crafted notes and slides, and great examples. * The homework assignments were very challenging and fun. They are much more challenging than 6.00.1x so be ready to spend some extra time on them. The programming assignments in this course are the most helpful mechanism for learning computer programming concepts. * Teaching Assistants and Staff were great when it comes to addressing questions or issues on the forums. They were very courteous, even when people were frustrated and angry. * The grader servers were much improved from last semester. During 6.00.1x, the graders crashed numerous times. I recall the graders only crashing once during 6.00.2x. CONS; * The most challenging programming assignment was on Weighted Digraphs. Although I was able to solve this problem, I spent 20+ hours on this assignment. Personally, I do not mind spending this amount of time on programming. However, MIT may want to consider methods for making this problem more intuitive for other students. * I thought the Problem Set on Machine Learning could have been slightly more challenging. It took me about 1 - 2 hours to finish. MIT might considering adding "Bonus/Optional Problem Sets" for students seeking more challenge. As I mentioned before, this course is very challenging and you will learn a lot if you are devoted and disciplined. If you are looking for a course that is less challenging, I would recommend looking elsewhere.
If you are an absolute beginner to computer programming and Python, and you like to learn by doing instead of reading, I would recommend checking out CodeAcademy. This course format was very well setup and provided an adequate introduction to the syntax of Python and some computer science fundamentals. The programming questions were fun and engaging. For example, you will create a BattleShip game using the concepts you learn. Who should not take this course? Well, if you are a genius or have previous programming experience, this might not be the best course for you. However, the course is still a good review of the basic fundamentals of Python. There were a few problems I had difficulty with understanding. Fortunately, the online forums on CodeAcademy help in identifying issues. Overall: I would recommend this course for a beginner in computer programming and/or for someone new to Python.
Overall, I was really pleased with this course. I learned some valuable tools for helping me to learn, which is a key part of my daily life and my job. One of the effective tools that I gained from this course was something called the Pomondoro technique, which is basically a technique for dealing with procrastination. Ever since I have learned about this, my procrastination has significantly decreased. They discussed other useful techniques like chunking, diffuse learning, and how exercise can increase your memory. The course work was not very challenging, which may lead some feeling unchallenged. However, the material in this course is very valuable, and would be very worthwhile for anyone that is learning any difficult subject material.
Everyone is probably familiar with MIT Professor Walter Lewin and his awesome lectures on Physics. After watching a few of Dr. Lewin's lectures, I was wondering how Dr. Hafner from RiceX would measure up. Bottom Line: Dr. Hafner exceeded my expectations. I took Physics II in college about 5 years ago so I wanted to re-learn the fundamentals of Electricity and Magnetism. I was very surprised on how much I was able to learn from Dr. Hafner. With Dr. Hafner, there was rarely a dull moment. He was very funny which kept the class interesting. For example, he taught the class in high heels for one segment; in another video, he demonstrated the applications of the Faraday cage by sticking his tongue towards an electric arc. But more importantly, he thoroughly explained the concepts, theory and application of Physics II. There were several topics such as conductors that included additional material that you typically do not receive in other Physics courses. Dr. Hafner provided adequate lecture notes, examples, and resources for students to succeed in this course. In addition, Dr. Hafner did not make the class over challenging for those that are not very familiar or experts with Physics II. The online forums were very helpful. Dr. Hafner and his TA's were always providing help to students. Once student in particular, Grove, was a Community TA and helped numerous students when they had difficulty with the material. In my personal opinion, it is passionate students like Grove that really make free online learning an enjoyable experience. My only dislike for this course was that the online setting did not allow for partial credit on homework problems. For example, if you had the problem setup correctly but forgot a negative sign or misconverted on units, the problem was still marked incorrect. Fortunately, there was a balance of easy and difficult problems that usually cancelled this out. However, I would like to see the edX community address this issue in some way for classes such as Physics. One last thing about the course is that it is not as challenging as the Physics courses taught by MIT. While this was not a problem for me, if you are a genius or just absolutely love Physics, this course might not be challenging enough for you. However, I would still highly recommend this to all students.
My background includes a BS in Aerospace Engineering with about 1 - 2 years of experience in various computer languages such as Python, Matlab, FORTRAN, C/C++ and Visual Basic. I never had any formal education or training in computer science before this course. My only training before this course was self-taught, and I only focused on programming language syntax instead of computer science and problem solving abilities. Overall, I was very pleased with this course. Fortunately for me, I had reviewed most of the course's content through MIT's OpenCourseWare class "Intro to Computer Science and Programming" (6.00SC). Most of the material on the MIT OpenCourseWare was very similar except for a few new topics such as trees. In my personal opinion, an introductory background in Python and computer science is recommended for this course but is not required. I easily spent 12+ hours per week on this course. Here are my thoughts about the PROS and CONS of this course: PROS: * The professor, Dr. Grimson, is a fantastic lecturer and professor. Everything is explained very well with visual representations, well-crafted notes and slides, and great examples. * The finger exercises (think of them as review questions) are a great way for the material to be reviewed. You have unlimited tries to get these correct and are useful for reviewing material. * Setup of the course in intuitive and easy to follow. * The homework assignments are both rigorous and fun. They covered a wide range of topics such as RSS, encryption and object-oriented programming. * Course was free. Future courses will still be free but will offer a ID verified certificate for a cost of $50. * Python is a great programming language for new computer programmers since its syntax is very easy to learn. Also, Python has become a very popular language. * All the programming assignments and quizzes are graded instantly so that you understand what you did right/wrong. * Grades are assigned as A (80 - 100), B (65 - 80), C (50 - 65). In my opinion, this lenient system was very useful for students because they focused less on their grades and more on learning the concepts. This was also useful since the course was very difficult. * Forums provided a useful mechanism for learning the material. * Teaching Assistants and Staff were great when it comes to addressing questions or issues on the forums. They were very courteous, even when people were frustrated and angry. * Book is inexpensive and serves as a very useful reference for this course. CONS; * MIT underestimated the amount of students that would take the course, and thus their grading servers crashed often. However, they are fully aware of it. I do not expect this to be a problem in future courses. * As mentioned before, the MIT OCW course is extremely similar to this course. This would not normally be a disadvantage, however almost all the homework assignments are the same. I had already completed most of the homework assignments prior to taking this course so I was not fully challenged on all homework assignments. This would be tempting for other students to cheat and use the online MIT OCW solutions. * Trees, a form of a data structure, were not covered adequately in this class as I would have liked. This was a new topic for this course and no homework assignments were given in this topic. A lot of students, including myself, were unprepared for this subject on the final exam. * Although I personally liked the pace of the class, the fast pace schedule is not ideal for a broad audience. Homework assignments and exams had tight schedules. There were many students who missed the deadline on the first assignment due to some confusion about the date and Universal Time Code (UTC). MIT should consider having the schedule more flexible to help people with busy lives. As mentioned previously, I really enjoyed this course. I would not recommend this course to people who are looking for an easy course. If you feel like this course may be too difficult for you, I would recommend getting prepared by taking a course on Udacity or getting an Intro to Python book. This course is meant to challenge you and is taught by one of the best universities in the world. Best of luck to all who take this!