I have done a few computer science courses already and some of them were related to embedded systems. This is one of the best so far.\n\nHigher level than a introductory course.\n\nHighly advisable.
The course was excellent for me, as a beginner. Of course, the learning curve was steep and the assignments challenging, but I learnt a lot. Thanks you Coursera and University of Colorado, Boulder.
by Bill W•
I was a little disappointed in this class. It teaches some important concepts, but at a relatively shallow level. I feel like it would have been very difficult for a student to have completed all the assignments without having prior experience (beyond the stated prerequisites) with the subject matter. The class was also very short; only three weeks of lectures, and and extra week "final assignment." This is the first MOOC I've actually pad for, and I feel sort-of gypped. (I guess I'll admit that it was still cheaper and better than the talks you'd get at a technical conference.) (I also guess that this is Coursera's new "style" - multiple 3-4 week mini-classes rather than a full quarter/semester-length class. I don't know if I like the idea. Especially since follow-on classes seem to be getting delayed.)
There was zero to very-little interaction on the discussion forums from instructors, "TAs", or even other students; I normally find the discussions to be particularly valuable with MOOCs. (The most successful have chosen to use Forum Software OTHER than (or in addition to) Coursera's. It look vaguely like the Coursera forums have improved, but it was still weak. Discussions from previous iterations of the class were still present in the forum; consider the lack of "current" discussion, I guess that was good, but I don't think it's desirable in general.
The use of a linux Virtual Machine is an interesting idea, and it worked OK for me (I have previous experience with both linux and VMs), but I felt like it was a stumbling block for a lot of people (of the few forum comments that appeared, "how do I do this without the VM" was number 2 right after "please peer-review my assignment.") I somewhat feel like the VM was pretty "heavy" for the average personal PC. The download was big, and slow.
The quizzes were pretty good (in particular, I like having "many" questions), except for the one I complained about in the forum. (multiple checkboxes per question leading to 2 of 36 mistakes failing with less than 80%) (
The programming assignments worked pretty well, for me. They do cry out for some sort of test framework to test results before the peer review (possibly submit results for grades, possibly just for personal testing.) The best of the MOOCs I've take have had both some form of automated testing AND a peer-review to cover harder-to-automate metrics. With the VM environment, it seems like this should be ALMOST there?
Teaching some use of git was valuable, but it was unclear how this was supposed to be carried forward in subsequent assignments, especially WRT whether there should have been one git repository per assignment, or one for the whole class.
by Stephen L•
This is a really unusual course. It has "Embedded Systems" in the title but the closest you will get to an embedded system here is cross-compiling a program to run on the ARM architecture. There is no coverage at all of the peripherals (A/D, timers, counters, etc.) that one would find on a microcontroller.
It is a frustrating class too. The lectures do not go into enough depth for you to be able to complete the assignments without doing external research on your own. I found this to be particularly true on the gnu make section. I knew very little about make and without frequent visits to Google I could not have completed that portion of the class. The quiz for the third week was also very difficult. There were only nine problems but even though each problem had four sections there was no partial credit. Miss any one of those sections and you miss the entire problem. It doesn't tell you which of the sections you missed so I had to retake that test several times before I was able to pass it.
The forum for the course is frustrating too. The instructor responds to so few posts that at first I thought that he never visited the forum at all. One has to dig back in the archives to find any real level of engagement from the instructor. Most posts go unanswered although I did get occasional help from one student and I was able to offer some help to one other person myself. The forum only appears active because old content is not removed.
This course is intended to be part of series and supposedly the next class will actually live up to the "embedded systems" name. You have to purchase a microcontroller development board for that course and according to the description given you actually get to run your code on the microcontroller. I haven't yet decided if I will take that course or not. The decision may be made for me. In the forums it says that the next course was originally supposed to be up on Coursera almost six months ago but it never materialized and I wonder if it ever will.
I wanted to only give a single star in this review but I decided to with two because despite the frustrations I did learn some things about gnu make and get a chance to brush up on my pointers. If you are wanting some embedded software experience I would recommend looking elsewhere or at least waiting for the next course(s) in the series to come out.
by Scott B•
Completely ruined by the final assignment.
This could have been a good course. While the lectures are presented at a whirlwind pace of cramming at least a full semester's worth of material into 4 weeks, and not at all for the feint of heart or those without a good solid background already in C and systems -- they are still really strong lectures. Fosdick's rapid-fire rat-a-tat lecturing style is mind bending to be sure, but the material is presented intelligently and articulately. The lectures slides are well-done and are provided for download (unfortunately in mixed formats: sometimes PowerPoint, sometimes pdf). And while the pace would be completely off-putting in a one-shot classroom environment, it is perhaps fitting for a video format where one can pause and rewind. Captions are a must, but unfortunately not all the videos have the right captions associated with them.
While the lectures are generally solid, and the material presented is practical and challenging, the course suffers from a problem that seems to plague the discipline of electrical engineering almost universally. This problem is the fundamental lack in the instructor's ability to bridge the gap between theory based lectures and pragmatic application of this information.
To be clear, there is a LOT of practical information supplied in the lectures. One only needs to be diligent and to view, review, and review again given the lecture style. However, there are numerous gaps between the information presented and the knowledge required to complete the assignments.
This, as I've stated, is a general plague on the house of EE. I have seen this problem in nearly every EE course I have ever taken. By comparison, the same problem is largely conspicuously absent from the teaching culture of the field of CS (I have done a considerable amount of work in both fields). Even in areas where the two disciplines overlap, the pedagogical culture of computer science almost always trumps that of electrical engineering in the singular aim to TEACH.
That all said, one who has a decent background in C programming and a decent systems-level understanding could quite successfully stumble through this material (with the caveat of planning to spend many more hours than the estimated commitment -- I spend 10+ hours per week on this course and have a considerable background in both systems and software). That is ... until the final assignment where it all falls apart. This assignment is, quite simply put, just plain lazy teaching. The assignment itself is a gross regurgitation of requirements that do little to support the ostensibly stated goals of the assignment itself. It is full of holes and ambiguities and contradictions. It would appear to be the case that the true intent of this assignment must be to weed out those who don't have the willingness to make a gargantuan commitment toward sorting out all the guesswork of what the professor REALLY wants. More likely, it's just a lazy effort, and reflects poorly on CU Boulder, Coursera, and the entirety of engineering education.
Could have easily been a 5-star course with a decent focus on clarity and quality and emphasis on teaching rather than lazily falling into the mode of letting the students with the most dedication just figure it out for themselves. Just such a waste of what appears to be solid potential on Fosdick's part
by Ashraf K•
the course needs to be more informative and the explanation for some subjects is very poor
and the peers grading is the worst idea ever
why i should wait 2 weeks to find out my grade reviewed wrongly by another student
or even to know that my submission was faulty
why not an automated grader as any "usual" course would do
it is insane really
so if you would take that course you would need to take another courses and youtube tutorials to gain a deep understanding and be able to solve the assignments easily
by Umar K•
Covers the fundamentals well. At times a bit fast but one can always go back a few step and rewatch the lessons till thd concept is clear. The assignments are challenging enough.
by William R•
Do you know what a C pointer is? Great, then you can spend 15 minutes on youtube and skip this course. It will teach you nothing more than basic C syntax, and some tangential embedded software trivia.
Besides the high price tag and woefully small scope, this course is extremely buggy. First, the provided VM does not seem to work; it comes with a virtual drive that the recommended VirtualBox software warns is incomplete, and on launch it is indeed seen as a read-only filesystem full of warnings and errors. Second, the assignments are very vague and often outright incorrect. Once I set up my own environment, I had to correct code that we were specifically instructed not to change on multiple occasions just to get the assignments to build. Further inquiries on the forums confirmed that these corrections were required. And of course, the assignments are provided with incomplete instructions which tend to omit lots of critical information.
I feel like I wasted my time and money with this course, and I would recommend that you not waste yours.
by Sivasundar K S•
Good Course, I would recommend for anyone who wants to know the basic of Embedded System Software Development (Introductory) obviously in Embedded C. Though most of the concepts are Language-Agnostic but assignments would require you to have some prior knowledge in C and GNU make (or you need to build on the basics you acquired here).
Professionals can go through this course to polish their skills and/or to understand 'how' and 'why' it is done, to add to their knowing of 'what is it'?
I love the away Alex has presented these hand picked material. Visuals are real treat and reinforces the concepts. Thanks to you Alex!
by Karim B•
Solid introduction to embedded systems, helps you build good C practices and gets you in depth about how compilation happens and memory is managed. The assignments are kinda complex but are still a good way of practicing C especially for beginners. Hopefully there will be a second course that will be dedicated on practicing on real target architectures with KEIL.
the course is very structured and rich of valuable information regarding software embedded development, as a embedded software engineer I recommend this course to anyone wants to start a career in this field. as said in the lectures these notions could be translated to a major scale for complex projects.
by Chandra K S•
Great coursework. It makes you explore C , GNU's tool chain and Memory segments which are all essential for Embedded Systems. I'm very much excited and thrilled to share my experience to others.
by deepankar m•
This is a great course that covers the basics but the irony is that it is not suited for beginners considering the pace at which the author is delivering the lecture. I think it is best suited for some one who have fair amount of experience dealing with micro-controllers and linux . This course particularly suited me as i had good experience with micro controllers and linux but needed to brush up understanding of compiling linking and dealing with memory. There are some great insights that i have got so far that helped me cover the missing links in my understanding of this subject. but beginners can also try just drop the speed of video and google for all that is described in ultra brief manner. Some prior knowledge of number system is also needed.
by Marisa E•
Professor Fosdick is spot on when it comes to taking a highly technical topic such as embedded system software development and making it directly applicable to industry expectations. Embedded system engineers are in HIGH demand across the engineering and aerospace industry and taking this course has given me a competitive edge against my peers graduating from the same Electrical and Computer Engineering program.
I am a graduating senior in Electrical and Computer Engineering and used this course to prepare for interviews with Lockheed Martin's Space Systems as well as NASA's Jet Propulsion Laboratory. Thanks to this course, I was able to answer embedded system targeted questions in the technical interviews and received either immediate offers or was selected for the next round of interviews. The material taught in this course was applicable not only to positions explicitly titled "Embedded Systems Engineer" but also placed me above other candidates pursuing the role of Software Developer and Software Engineer.
I would highly recommend both undergraduates and graduate students take this course before diving into industry as the knowledge gained will give you a remarkably better chance at showing recruiters your intellectual and technical capacity related both to hardware and software.
by Michal S•
It's a very good course with a lot of programming which are peer graded. The knowledge is introduced in a very coherent way where the difficulty is consistently rising from lecture to lecture. Everything is clearly explained but some previous experiences with programming in C are highly recommended.
by Rajeev V•
Excellent course. Refreshed all my concepts of Embedded System programming after a long time. Very good introductory course for Campus freshmen who needs to start working on System SW Development.
by Ayman M A•
The instructor is good, explains clearly and simply and looks friendly.
The subtitles in Lecture 4 from lesson 1 is not correct at all.
So far so good.
Thanks Coursera !
by Juan J V B•
The course is good for beginners, but, a strong basis is needed.
If this would be your first contact, keep calm, a lot of challenges will come during 3 weeks, including the Virtual Machine setup since the first minute.
All the challenges are affordable, and, with more than 10 hours / week, will be passable, but, there will be a lack of basis if you didn't have it when you started the course.
Some videos have not the correct transcription, so, it is hard to search for a specific matter if you want to. Thankfully, there are many information all around the web.
At the end, you will be able to make your own programs and simulate them in your own computer.
by Oscar S T•
The activities are not sufficiently linked to what was explained in the videos and do not allow the reinforcement or comprehension of what has been exposed.
by PRANAV S D•
This course is not meeting coursera standards. I would say this is not worth to the price what they are charging. Content-wise too much poor. If they are charging 5000 Rs just for teaching gcc and related stuff then its wrong. These thing are easily available on YouTube. Also the elaboration is not much good, they should see how Prof. Andrew and Prof. xavier Serra are teaching and presenting ML and Audio processing courses.
I had thought of undergoing FPGA course by same university, but now I won't go for it. If possible I would like to have refund of my payment.
by Mohamed H A A•
This is the worst course i have ever seen in my whole life !
Do not pay before you watch at least first week videos, you will know then what i am talking about !
by Marcos F Z•
Payment is mandatory to view the tas
by david w•
As a newly offered course, and first in the series, this course was incredibly well produced, and FORCED me to learn the subjects. The quizzes and homework were difficult, and resistant to gaming, which meant that I took most quizzes more than 3 times. Time commitment was much more than expected, but it left me with skills that I am now proud to have. I feel like a have a great working knowledge of memory, a concept that previously eluded me. Also, extensive use of the gcc tool chain throughout the course will pay off in the future. Kudos to Alex and the team that put this course together. I am very happy with this course!
by Deleted A•
Very good introduction course to embedded programming. It reviews essential concepts about memory managment and unix c/c++ language programming including development tools. My only complaint is instructor talks very fast and as non-native in English I managed to understand thanks to interactive transcripts. I still rate this course 5 stars because of the excellent content. I learned a lot of useful information and I recommend this course for not only as intro embedded software programming but also as good C/C++ refresher.
by Falko M•
Great structure and teaching speed like in university. Little questions during the videos keep attention high. The course ist more software-orientated, than hardware-orientated. There are many topics, that are not diskussed in detail, like bootloaders, editing linker files, writing own drivers, etc. Therefore I am really looking forward for the next course.
Unfortunately the forum is not really helpful.
Advise: This is no beginner course, you won't program "hello world".
by Walid O•
this course did a great job to make me use GNU tool chain for making programs for microcontrollers , i used make tool which was very useful to know about , this helped me of better understanding of steps any project passes through to produce executable .
and it made me use git and github which was also good to use and learn ,and it has really important and basic information any embedded systems related job will require you know about .
by Rahal H•
Very well structured and very informative. Most important aspects in embedded system development are covered thoroughly in this course in a magnificently manner such that context can be grasped easily. Work load is very manageable.
Assignments are well organized and provides a great platform to improve on what is being taught in the course.
I am very satisfied about the decision I took to follow through this course.