CS-7639 - Cyber Physical Design & Analysis
CPDA |
Toggle to Select Spcific Semesters
Reviews
This was my 8-th course in OMSCS, with some easy and hard courses behind, and I didn’t dislike the course at all. Like many others, I considered it a more reasonable option for CP&R specialization than CV in its current state (especially considering I completed CP), and I reckon it was a right choice.
I’ll first try to cover the negatives generally expressed in the reviews - I understand most of the background for those, but will present my perspective. For the records, I don’t have any real exposure to robotics apart from some previous courses here (like AI4R), but I do have an experience in the simulation of embedded systems, which can also be considered cyber-physical ones (still, mostly high-level exposure on a system level).
-
“The lecture material doesn’t relate to assignments”.
- Mostly (not fully) true. The lecture material is generally very broad, or covers specific examples not so related to the examples covered in the assignments. The way the lectures are presented can indeed be pretty hard to absorb, and I have to admit I didn’t finish watching a couple of those at the end. Some concepts, like math formulas (at least for me) were presented in a way it didn’t sink, apart from a very shallow idea. Some moments are recorded using not the most professional presentation skills (e.g., at one point you see a moment of “yeah, we got this episode” fist gesture at the end of the video). However, technically, if you would like to get a broad overview of the system design and ways/directions to think about (which is the main purpose of the course), the lectures hit the mark. The assignments may cover and exercise different examples on most part, but it’s worth remembering that learning is the whole point here. Additionally, the final exam had a section of a specific case study, which should have been analyzed WRT the material studied in the course, so I surely don’t agree with the claim that the lectures played no part here.
-
“HW5 and project 3 are substantial nightmares, disconnected from the course”.
-
Like most of the assignments, HW5 is another case/example evaluation and it did carry a degree of ambiguity. Some of the complaints in the reviews here here are surely justified. There were people who got the full score there - I was not among those, and some of the points I lost I can attribute mostly to ambiguity, but partly also to probably not going deep enough into thinking about aspects WRT what was intended. It’s true that most of the homework was not really exercising exact material previously studied, rather being very open ended, with point deduction reasons sometimes being hidden in the maze of what lectures were intending to summarize. I think HW5 indeed was the most glaring example in the course where better background articulation/preparation could have been in order. However, I can’t say it was fully useless and disconnected.
-
Project 3 and AADL. Indeed, AADL may indeed not be widely used. However, this should not matter much here, as the way I took it, it was an example on how to evaluate, adjust, simulate and analyze system design, and AADL is just a tool to see it through. It was not hard to learn it in a way of what to copy-paste. True, some fighting was there and could probably be avoided with better assignment structure, but there were hints and answers generally provided. The assignment setup including the provided VM was well prepared. Getting it done did require some fiddling with syntax, that’s true, and also some basic code structure/inheritance vision being exercised. Yes, someone with no coding experience could struggle to converge fast, but by no means some substantial knowledge or experience was required. I’m not saying it was ideally smooth, but the hooks were there. I had zero experience in AADL before, and the points I lost were not related to that at all.
-
Others have mentioned that the grading was not really “completion based”, and I agree.
-
-
“Generally missing teaching objective / background for the material in the course”.
- I did not see it this way. I believe it was possible to see the point of what the instructors were trying to convey through the lectures and exercises. It was the system level design of CPS, what to think of, what to pay attention to, the big picture. Think about the course this way, and it will connect.
So now to other positives. First, the ability to exercise MATLAB (had zero exposure before the course) on some of the assignments and especially projects 1 and 2 - really nice projects, well set up, nicely visualized. Project 1 is the best one where you can exercise a rather easy example of robot planning in real life Robotarium, and project 2 included a competition on solutions (make sure you properly validate the distance etc. constraints there, as otherwise you could loose a lot of unnecessary points, as described in the assignment). Overall, those projects were fun and generally easy.
The rest of the assignments were also fine - not always straightforward, and in some cases, ideas from AI4R and sometimes other courses did help.
The exam was pretty good - take home, two elaborate problems to solve or to analyze. More or less a take home assignment (in the spirit of AI exam format, but shorter and obviously different assignment nature). It also had a few bonus points.
We also had 5% “free” points for Piazza participation.
By all means I didn’t get a full score on all of the assignments, but still, I was never far away from a very high A, and again, my relevant background level was medium or lower. The load was rather low - there were a couple of weeks (e.g. during project 3 part 1 submission period of 3 weeks) where I literally did not invest time into the course at all. Try doing that in a course like CP!
The TA support on Piazza was solid - I didn’t have any issue, the questions were answered timely and to the point. The atmosphere was good. The TA-s held office hours. The second professor, Dr. Hugues, who was “responsible” for the most “problematic” content of the course, was very much available and actually helpful, e.g. for the project 3.
So all in all, this course might indeed have a different setup and mindset than others (although, that can be said about many courses), but it has definitely left a positive feeling and it was not on the hard side with an open-ended approach.
I didn’t like or dislike this class - it was entirely neutral for me. I took this as part of the CPR specialization because I did not want to take CV based on the really negative reviews of that course.
The subject matter of this class was not that great. If you have any engineering degree (or a BS CS), a lot of this will be review from undergrad especially around engineering design processes. I did not watch a single lecture in this class because they were extremely long and did not tie to the homeworks or projects. Each homework/project has its own resources which are usually readings. Project 1 and 2 were pretty interesting and relatively enjoyable. The grading for both of these was fair and mostly automated so you knew what you were getting when you submitted.
Homework 5 was just long - it wasn’t hard per se but did take a while to get through. Project 3 was really irritating because you have to use a language called AADL which is entirely useless in the real world. Most of my time spent on Project 3 was debugging AADL setup issues and trying to figure out how to use the software. FYI the software for project 3 does not work on Mac M1 at all. M1 does not have VM support - and the software also does not work well on Intel Macs forcing you to use a VM. I really dislike using VMs because of how slow they are, so I had to fire up an old Windows laptop from college to complete this project which worked well.
There are a couple of things I want to point out though about grading. I felt that the grading in this class especially for Homework 5 and Project 3 was extremely nitpicky and totally based on accuracy and NOT completion. This conflicts with some previous reviews of this class that mentioned that grading was lenient. My Homework 5 report was extremely detailed and I still got a bunch of deductions on it because I was missing minute details the TA was looking for. The grading is totally based on accuracy which is very frustrating because the assignments have very little resources and you are kind of on your own to figure out what the TA’s want. They won’t really clarify what they are looking for and mention that “as long as you explain your reasoning, you will be fine with grading”. This is not necessarily true though because they deduct if the answer does not contain all of the points they are looking for. I am not dinging the TAs because they did try their best to help out throughout the semester. My main point here is to go in optimizing for complete accuracy and not completion when it comes to submitting these reports.
There is a take home, open note final at the end which is fair and pretty interesting to work through. I paired this course with an easy elective and had a very chill semester overall. I probably could have paired this with an equal or harder class and still managed well.
The first half of this course was actually enjoyable and I thought the grading was decent. Then when HW5 hit and project 3, they clearly didn’t take any advice from previous semesters and kept the same useless material. The grading was not generous at all on HW5 or project 3 and I tried to add every detail I could find within both those assignments. If you misunderstand their interpretation on a question, -50% for that question. Never before have I put so many hours into a project without any way to fully verify what I was doing was correct since they don’t provide any material on the last two assignments (or any of the assignments really but, the first half of the course was more logic based.) This course is a required course for most so, do your best on the first half and brace for the second half.
This course is an introduction to CPS. It can be divided into two parts. The first part covers the control system design. The second part focuses on safety and security analysis. In this course, the most difficult project is using AADL to analyze an UAV system. But don’t feel so frustrating with the abstract concepts. It is an open topic.
Pros
- Active Profs and TAs. For Project 3 AADL, Dr. Hugues is active on Piazza every time.
- Generous grading.
- The course videos provide a specific overview of CPS knowledge.
Cons
- Ambiguous lanuage usage in the assignment instructions. You should deduce the intentions
- Easy assignments and projects are not closely related to lectures. They make us feel confused.
Conclusion
It is an interesting but strange course. Nevertheless, the course is qualified for CPS topics. As many reviews mentioned, you may take it as one of the robotics specialization or to balance your work and life. For improvements, I hope assignments can cover formal methods and vertification in the future.
This was my first OMSCS course, and I echo a lot of the comments here already. This course really requires a lot of out-of-course study to be successful. The course content is super high-level, but the the assignments and projects are quite applied so oftentimes I was left scratching my head. The course felt being asked to build a bridge with back-napkin instructions (core course content), whereas a better run course like HCI might have given you a detailed materials list and step by step visual guides.
I come from a non-technical background (D&A consulting) with a decent interest in the subject matter, but boy did I have to spend a lot of time self-studying reading up on topics such as differential equations, learning MATLAB, etc. I even asked my parents who are engineers for help, and we went through stuff like finite state machines - which is totally left field for me. I think this is mainly due to them expecting some previous knowledge from you, but also in part due to the disorganized nature of the content.
That said, if you like to think and try to reason things out, it is a pretty fun course and ultimately not that hard. The assignments feel actually rewarding to complete because you really did have to “figure it out”. You also get to see some of your code work in real life in the Robotarium which is neat (I should have saved the video somehow). TAs were very engaged and helpful, and Dr. Hugues was quite helpful for the latter AADL section; the VM he provided saved a lot of headaches.
I ended up with a B, but that’s mainly because I just totally blanked on one section of the final and ran out of time (and cares) to try to figure it out. Oh well lol. Ultimately I think it is worth taking and a nice way to ease into the program. I do wish the profs would revamp the lecture material and tie the assessments better to what’s being taught.
Echoing most of what has been said here already:
Confusing, ambiguous language in assignments and exams. Assignments lacked clarity and purpose. The final project used software that presented students with numerous technical problems. The course content seems widely disconnected. Complex mathematical concepts are covered in lecture and then never revisited or used in assignments.
This is an absolutely garbage class. The instructor should be ashamed of putting out content like this. If I published teaching content like this at work I would be getting myself fired. If OMSCS wans to be successful, i needs to look at the feedback from students and address classes like this. It’s clear from past reviews, from the homework assignments, and from talking with TAs that there are many known problems with the course, the homeworks, and the lessons, that they simply do not change or fix semester after semester.
With that out of the way… I hav now completed all 5 homeworks and the first 2 projects. I’m half-caught up with the video lectures and have done most of the optional reading. I’m set up and starting the last project 3 12 weeks into the semester after clocking a little over 80 hours on this course. All that is left is a final exam and project 3.
I have a computer engineering and computer science background.
What have I learned so far in this course? Not all that much. The video lessons are long, boring, and are treated like an in-person lecture. It’s unfortunate the professor did not take much advantage of a replayable online course. Overall, I have found these lectures useless. Not necessarily because the content is bad, but because it doesn’t tie into anything.
All of the projects and homeworks can be done 100% without watching any of the lectures or doing any of the reading (maybe the 1st/2nd it helps a little). The lectures don’t really tie together across modules, but worst than that there is no tie in to the homeworks. The final exam will be coming in a few weeks and there has been no real assessment on how well I am learning the content. Project 2 essentially had us hard code a series of if/else statements that we tweaked over and over again in a simulation. HW5 had a bunch of easy questions that required reading 5 pages in the book, not watching any lectures, and spending 2 hours trying to decode what they were asking on office hours. The other homeworks were similar.
Overall it feels like whoever put this course together either doesn’t care much about actually teaching or doesn’t know anything about teaching. There are no clear learning objectives for any of the assignments. There is no re-inforcement of concepts across projects, homeworks, or lectures. And the assignments themselves are written in a somewhat nebulous way that we are just “supposed to figure out,” resulting in the majority of the time in this course being spent on environment setup, debugging, and scratching your head… not on learning or understanding concepts.
My advice … avoid this course if you want to learn. Go ahead and take it if you want an easy A and don’t mind wasting your time. Otherwhise, put in a few more hours a week to actually learn something useful or enjoy your time.
My advice for the instructor … Throw away most of the assignments or go through piazza and Slack and listen to what people are saying. Add more explicit details around environment setup or provide VMs, re-word questions to use vocab from the course and reflect the confusion from past semesters, re-record some lectures or include some content tieing the assignments to the lectures… Add a learning objective to each assignment so students know what they should be focusin on learning.
This class was simply missing the rug that ties the room together.
The objective of the course was unclear, and I can’t seem to identify the useful nugget which I’ll take away. The cyber-physical example used heavily throughout the class is flight control of a remote control aircraft. I had a horrible time relating that back to my own vision of cyber-physical industrial systems, and finding something useful or relatable.
Others have complained about the projects, and I generally agree with them. The projects are not HARD, but some are ambiguous… not in a thought provoking way, but in an “I’m wasting a ton of time interpreting the instructions” kind of way, in which I don’t come away any smarter :(.
This has been my least favorite class thus far, and I would have chosen a different class had there been another option available at the time (Cyber Physical track had an alternative course option). Not because it was hard, but because I just can’t see the usefulness and I feel that I wasted a lot of time taking this course. I’m OCY on the Cyber Physical Systems track.
As almost every other review notes, this class has an interesting structure. Although I did enjoy the lectures, they were very loosely connected to the actual HW assignments, projects and finals. I imagine it’s very possible to skip 100% of the lectures and still very easily get a 4.0 in this class.
This class covers, at a very high level, how to design dangerous systems that include both a physical and software component - systems that will kill someone when something goes wrong (think cars, planes, etc). Again, the topics are VERY high level, more around conceptual thoughts about how to think about designing these kinds of systems. If you’re new to the robotics world, like I am, and are completing the robotics specialization, like I am, this class is very much worth taking. Not only are the lectures enjoyable, the grading in this class is extremely reasonable.
As others have said, many of the projects felt as though grading was completion based. I got 100% on a couple HW assignments were I literally had no idea what the questions were really asking for. The HWs and projects are a mix of coding and writing, some are fun, some are so vague they’ll make you pull your hair out. But, again, keep in mind that the grading is extremely lax - and really, there’s absolutely no need to pull your hair out. Just focus on learning the concepts and your grade will be fine.
In a way, this class is what graduate school should be about: lectures about theory, reading about theory, writing about theory, and some fun coding challenges. All without having to worry too much about your grade. From my experience, the difficulty rating on OMSCS for this class is much too high. I got a 99% in this class without putting in too much effort. But, I did watch all of the lectures, read all of the materials, and enjoyed learning the concepts. If you enjoy the topics, this class will be enjoyable and a breeze.
This class is really odd. It’s all over the place for the homeworks and projects - some are interesting, some are just bizarre, most are frustratingly vague.
Pros
- Active TA involvement on the forums, pretty easy to get questions answered.
- On HW5 and Project 3 in particular, Professor Hugues was all over that forum. It was incredible. He would respond in MINUTES often with active office hours, good in-depth answers…Just completely blew me away with how active he was in this class.
- Grading is really really generous. After getting my last HW, project, and final grades back, it’s basically completion credit. I didn’t miss any points and I definitely wasn’t sure what I was doing. But I tried!
- The robotarium project (Project 1) is really fun and I wish we got to do more work with that platform.
Cons
- The lectures are 100% useless. I’m not exaggerating. The homework/projects provide their own resources (chapters from textbooks, papers, tutorials) and you never need to watch the lectures. The final is take home and you also don’t need the lectures for this. There’s some broader context provided but the technical content is nil. It’s basically all case-studies.
- HW5 and Project 3 are completely out of left field. There’s no context, very few resources, and they’re 100% confusing. Project 3 is an in-depth dive into AADL. Every heard of it? Me neither. It’s hard to get excited about a project when I know I’ll never use this information again.
Neutral
- There is no one language you’re using in this class. We used Matlab, Python, C++/C, and AADL. Apart from Projects 1/2, there’s very little coding - maybe a few simulations for HWs here or there. But it is a bit odd to be jumping around so much.
Overall, I’m still confused by my feelings. It wasn’t very hard, but it wasn’t that easy. A lot of the projects are confusing and are hard to connect to each other…Seems like this class could use a bit of a revamp to make the content more relevant and cohesive.
This class is should be called robotics, control systems, and analysis. It is a grab bag of lots of stuff, as indicated by having 2 professors who switch out at the 1/2 way point. You will need to know C, Python, Matlab, Calculus (differential equations, SODE), and some other . The class is frustrating and makes you do lots of work independently of the lectures to learn. However, if you really want to learn, that is the way to do it. The TAs can’t do that leg work for you. I know so much more about robotics, analysis, and control systems than I ever would have otherwise. Its a teaching style that many may not like, but it works: “Here, go do this thing we have never discussed” makes you fight to figure the thing out. You will know how to make more reliable systems. You will learn how to simulate hardware. You will learn how to control differential drive robots. In the end, this may turn out to be my favorite class at OMSCS. Don’t listen to the detractors. If you want to do robotics, take this class.
This was my first class in this program. I went in not knowing any background about this course, and with little experience in Matlab. Overall, I would say I liked this course. Pros:
- Firstly, the projects are cool and I felt like I have never done any project like the Robatarium before which was very neat.
- Very hands-on work, not much theory involved and most of my learning came from the projects and homeworks
- No exams except for a very easy open notes final, and not much writing
Cons:
- Can’t say what exactly I learned because most of the time I spent was on the projects and they had nothing really to do with the lectures.
- Lectures were not useful
- Not very organized grading schema, and very ambiguous grading and answers on piazza
This is a rather interesting and strange class. I find that it touches on a lot of different disciplines, and does require some basic engineering, math, physics, and programming experience, but by no means do you need to be an expert in all of these things to be successful in this class. But some experience in those fields definitely help. I personally did not come from an engineering background, but I have a strong math and physics background, and those disciplines generally overlap in several aspects anyway. There were moments where I found myself having mini-panic attacks before an assignment when I see differential equations (I have not done those in almost a decade), but a quick refresher from the internet usually does the trick.
As some of the older reviews state, this class is effectively two classes with two professors. The first half of the class is pretty straightforward and fun. I thoroughly enjoyed using the Robotarium simulator. I don’t intend to review all the assignments, as I think an older review already did, but I want to touch a bit on the latter assignments of this class.
The second half of the class threw the entire class into a frenzy with HW5 and Project 3 because of how vague the instructions were. Even though Prof. Hugues chimed in regularly and actively helped students, there were still some students who were on edge about the assignments. You can tell that Prof. Hugues was also trying hard to not give away answers, but students were clearly not satisfied and wanted more. I think the intentions of the assignments are good, but they are not always presented very clearly. My advice to future students working on them is to take a step back and read through the entire assignment. They are meant to be open-ended questions that are trying to guide you in a certain direction. They want you to think critically about the different aspects of the system and how they relate and affect each other. Once I realize where the assignment was trying to take me, I think it was easier for me to wrap my head around what it was that they were looking for in each question. I ended up doing very well on those assignments and I didn’t have to rip my hair out to get there.
Grading is a bit slow since most of the assignments contain some written portion, but fairly generous. And as some of the other reviews already stated, the lectures don’t seem to provide much additional help with the actual work assigned in the class. Honestly, I stopped watching after the first month.
Overall, this is a fairly easy class as long you already have some engineering background, and it covers quite a breadth of topics. The homework assignments mostly take 3-4 hours of work (homework 5 probably takes double that as it was quite long); projects take a dedicated weekend; and the take-home final took 3-4 hours.
This is a difficult class to rate for many reasons. I was not sure if I should take this class based on the very mixed reviews. If you have an interest and/or a background in hardware you may find some parts of this class more interesting or less difficult than other students.
The HW was more like math homework than coding. I enjoyed this aspect of the course, as I like physics and math. It doesn’t have very much of either really, but it has at least the feel of doing some engineering in the physical world.
The take home final exam was pretty straight forward. Part of it was just like homework, another math type problem to solve programatically. The other half was a small essay / short answer analysis for a problem report in the real world. I actually enjoyed the final.
The first 2 projects were awesome. First one you actually wrote code in Matlab to control a real world robot that was remotely run. This was a bit of a challenge at first, since your precise code doesn’t match the physical world, which is not always exact in movement or position. Pretty fun to have a real remote robot to play around with. Second one use the same environment but without having to actually run the real robots. Trying to write some controls to ‘land’ planes. Another really neat project.
So far everything sounds great right? Well enter project 3. One of the most unenjoyable and needlessly difficult projects I’ve ever had to work on. First problem is it uses AADL. A mostly dead, worthless ‘academia’ abstract language for describing system architecture and ‘testing’ it for timing and safety. You find about 13 hits for AADL on zip recruiter (over 100k for python). There are virtually no books or references of any real value for it. The ‘tools’ we had to use for AADL are terrible. Think 1990s X window application.
The assignment itself is extremely vague and really more of a thought exercise than any kind of real work. The goal of the assignment I think was noble and the professor did really engage during the entire process (with mostly vague responses). I believe the idea is to make you think about how difficult it is to tie a complex hardware system together. The problems that could arise with timing or safety issues. But the mechanism to deliver this concept made any chance of learning it nearly impossible and definitely a misery. Grading on it seemed pretty generous. I ended up scoring very highly on the project (If I had received a 50% I would not have been surprised, the requirements and expectations of it were impossible to decipher)
A few of the lectures tied in or helped with the HW, but mostly they were kind of optional viewing. Interesting concepts, but hard to follow at times.
The TAs responded to some, but not all of the questions. They were slow to do so generally as well. This was problematic as many of the assignments had vague questions that needed clarification. I’d rate their effort as mostly acceptable. Not terrible but definitely didn’t add to the class experience.
When I was suffering through Project 3, I had visions of coming on here and just ripping this course as the worst thing ever. I still have a lot of just anger towards how terrible that project 3 was, but the other projects and HW (except the last HW) were really quite good. I don’t think I could recommend this course to anyone. It wasn’t that time consuming if you have any understanding of math or robotics (except project 3 which requires understanding of abstract babble). I guess if you need it for your robot specialization and want to pair it with another course it could fit the bill.
Given the choice, I wouldn’t take this course again. Why? Mostly because, unlike other courses I’ve taken, the curriculum is poorly designed, assignments are poorly designed, and the TAs and professors don’t add much value to the learning experience.
Curriculum poorly designed: topics covered at too high a level to make use of them. For most homeworks and assignments, there’s little correspondence between them and the lecture material.
Professor Feron is basically absent for the course. Another professor stepped in started engaging with the class towards the last third of the course.
The effort put in on Piazza by TAs is the least of any course I’ve ever been in. The difference was night and day between this and my Simulation course where TA’s actually put in effort to communicate a better understanding of the subject to students, engage in student’s misunderstanding, etc. Almost no feedback on assignments, and I feel like I have a poor understanding in the subject even though I got good marks.
It’s really too bad, because I’m actually quite interested in reliability of systems, and there’s a strong case for cost-savings by virtualization of systems integration, which is a big part of this course.
My background: no real experience in robotics or cyberphysical systems. Strong math background (which isn’t too relevant to this course, touches of baby ODE’s)
Having a background in electrical engineering, I found this class to be a watered down smorgasbord of topics I’ve already explored in undergrad. There were three projects: the first and second using linear feedback control to control simulated mobile robots (nothing special if you’ve already been exposed to basic control theory) and the third using a real-time system modeling toolchain called AADL to make design changes to an open source UAV project. The last project was interesting in theory, but I ended up spending most of my time trying to understand what the instructions were asking in the first place. Through all that frustration, I maybe took away a few types of analysis that you can do for safety-critical evaluation, but that was pretty much it.
The first two homework assignments were very easy for anyone with any STEM background, and then scaled up progressively from there for the wrong reasons. Much of that was attributed to independence from lecture materials and poor communication in both the instructions and in office hours.
Grading was pretty slow overall, but the TA’s were prompt and professional, which is why I am classifying this review as “Neutral” instead of “Dislike”.
Personally, I would not recommend this class unless you need it for the robotics specialization (main reason I picked it) or you just need an easy class for scheduling purposes. If you have little to no engineering background, you may appreciate the projects on feedback control more than I did (most organized part of course in my opinion). Other than that, I wouldn’t expect too much more unless this structure undergoes serious change…
Great course! Programming robots and seeing them run around Robotarium was lots of fun! But the big lesson to learn was that the real-world doesn’t act like your software sandbox. Your robots might run perfectly in your simulator, but in the real-world Robotarium they might sit and do nothing or spin around randomly.
Learning Matlab was great despite Slackbot’s constant reminder that “Matlab is not a real programming language”. Matlab is powerful and a good match for the projects. About half way through the course, students were allowed to switch back to Python. But those who did struggled a lot more than the students who just stuck with Matlab. Python optimization was really hard to get going, while Matlab optimization worked first time.
Our biggest project was controlling three aircraft in limited airspace, with the furthest needing a path cleared for an emergency landing. They framed this project as a competition, with the top-half of submissions earning a bonus 10 points. But the friendly competition didn’t reduce the level of helpful suggestions going around. And many cheered the accomplishments of the top performers (a member of our class set a new landing-time record!).
Probably the best thing about the course was Piazza. The professors and TAs were active, but the students themselves were the outstanding contributors. I learned as much from my classmates as I did from the lectures. Veteran students often reminded the newbies (like me) that the high-quality of Piazza discussion is not normal, and not to expect it from the other classes.
The last project involved “developing” an AADL simulation. AADL stands for “Architecture Analysis & Design Language” and is the type of thing you’d be working with if you got a verification job at Boeing. There is very little AADL documentation (outside of academic reports) and you get the impression that it is a pet project of the professors. You simulate Crazyflie hardware (a super-cool UAV drone). But your code doesn’t actually do anything. The project is restricted to verifying the latency of non-existent control code. You never get to touch a Crazyflie. So this project is a bit of a let down after all of the other cool control stuff you’ve done up to this point.
Background
• Mechanical engineering degree with 3 years of industry experience. Little experience in coding. 1st semester in OMSCS.
Pros
• Very generous in grading. I thought I failed on a few assignments but received high scores. • Lectures are pretty interesting
Cons
• Most HWs and projects are very poorly designed. Sometimes I didn’t even know what they are trying to teach.
• Some HWs and projects are VERY confusing. 90% of questions by students on Piazza are basically to figure out what we are supposed to do.
Summary
• Seriously need to delist the class from the program unless they totally revise the class.
As already commented before, this class is a rara avis in the program, however, in my opinion, it should be a mandatory core class for the Computational Perception & Robotics specialization (recently it got promoted to CP&R elective, so I don’t think this is going to happen).
This solid class gives you a general idea of the difficulties, challenges, constraints and good practices when dealing with Cyber Physical Systems (autonomous vehicles, robots, planes, drones…).
The work consists in 5 homeworks (each of them doable in ~8 hours) and 3 projects.
This year the homeworks were the next:
- HW1: Reading some papers and extract conclusions about CPS field.
- HW2: Physics 101.
- HW3: Controllers implementation and tunning.
- HW4: Optimization problem.
- HW5: Embedded related.
On the other hand, there were 3 projects:
- P1: Using Matlab, program a robot and test it in the simulator. After that, run it in the university facilities remotely through Robotarium and get real results. This was a very cool project, and really liked the Robotarium idea. If you already had taken AI4R it will be considerably easier for you.
- P2: Using the same Matlab environment, coordinate three robots in order to do certain actions.
- P3: Learn how to use AADL (a software/hardware modeling language), perform tests, modifications, analysis… Although this was the project that I struggled the most, I really enjoyed it. It is a very open-ended project (I think that clarifying this at the beginning would help reduce the class anxiety…) and communication in Piazza and office hours are very important.
Things that I liked:
- Professors are very active. This and AI4R have been the classes with the strongest professor involvement. It gives you a feeling of real class that happens online, not just a MOOC.
- The class was small and discussion in Piazza was interesting.
Things that I disliked:
- Grading was slow and feedback was not very detailed, especially at the end. I guess this is because of the open-ended nature of the assignments.
- The videos, although interesting are very difficult to follow since the effects are really poor and the professor’s pace. Although I was very interested in them, I ended up watching 60-70% of the videos since they are also quite disconnected from the projects.
Others:
- I read in other reviews that it is an embedded course. This is not since embedded are barely mentioned in a single homework (out of five). If anything, it is closer to a “spiced up” control systems course.
- As already mentioned, having completed AI4R would help greatly in this course.
- I work in robotics so my opinion could be biased when speaking about course difficulty. As for me, the difficulty was Easy/Medium but for people with no background in automation, embedded, robotics or electronic/mechanics engineering could be Hard/Very Hard, however, in that case, the class could be really beneficial if interested in a field change.
This class felt super difficult because this is more of an Engineering class. It’s not really a computer science class, It helps you be more in touch with the concept of cyber physical systems and what will be required to move into a role that is more cyber physical system related.
So alot of it is using Matlab, and C which coming from a computer science background (unless you’re a hardware level guy and tbh i still don’t know who uses matlab other than mech. engineers for some reason) we didn’t use those languages alot so I had to go more in depth with matlab and reramp up with c.
In addition to that there is some advanced calculus in this class that needs to be understood as well as some mathematics concepts which, coming from working in the computer science field, we never use so that’s another thing you have to reramp up on.
In addition to that there are some kinematic concepts you’ll need to learn, so it’s an interesting inter-disciplinary class that can sharpen your skills as a cs guy with little physical engineering background. I’m sure if you have a mechanical engineering or something that is more physics oriented, this class would be easier for you.
The course covers a systems engineering approach to cyber physical systems. You will touch on robotics, controls, requirements engineering, safety critical engineering, systems V&V, embedded architecture, signal processing, design optimization. You get familiar with a wide range of important topics in CPS with a sound foundational approach to how CPS are developed. An engineering degree vs a CS degree would be helpful for this course. You will do some programming, but knowledge of MATLAB would be most valuable for completing the programming assignments.
I believe the course structure is evolving based on previous reviews. In this semester, we had 5 hw, 3 project, and a take home final, no proctortrack!. As stated in previous reviews of 8803-09, the first half of the course is much more enjoyable and well structured. The second half of the course feels like it has some disconnect between what is in the lectures and the assignments. Overall, the material is interesting if a little disjointed. Some projects can seem very obscure, but the grading was lenient. The instructors were active on piazza and very willing to discuss the course material and current event related topics.
This course is an odd duck in the OMSCS program in my opinion but valuable for those looking to get into industries like self-driving and avionics. I have an engineering background and work in the nuclear industry. This course is well suited for some one with similar background or aspirations.
First off: this class is, in fact, titled: Cyber-Physical Design & Analysis (not Analytics). It also now has a full-time course number of CS-7639-O01.
I took this class in Fall 2018, my fourth in the program, and it was my favorite class thus far. I really enjoyed it! It can be thought of as an Embedded Systems Design & Analysis class, and Embedded Systems comprise my favorite area of computing.
My background is in Computer Science. I had four years’ previous experience in Avionics Systems Engineering; and started as an automotive Infotainment Software Engineer during this class.
I found the assessment by author jiyDf9onnsT5uNrTHxRMFEhgFRh2 to be pretty spot-on. From what I gathered, this course has undergone some improvements from previous semesters; admittedly, an educational/professional background similar to mine probably best caters to this class, as the emphasis is largely placed in systems engineering and design.
I generally enjoyed the (five) homework assignments, both in subject matter and scope; they were engaging and not overly difficult. The (three) projects were also reasonable in scope and tested applied understanding of the course material. The absence of exams and group projects also made this class less stressful.
I agree with previous sentiments that the second half of the course was more stretching than the first, as one is required to dig past a surface-level / cursory understanding; but, I also felt that this was commensurate with what should be expected of a graduate-level course and did not find it unreasonable. It was also the more rewarding to see your understanding and thoughtful application of the underlying intent pay off in the end.
As has already been mentioned by said author (jiyDf9onnsT5uNrTHxRMFEhgFRh2), the grading was also pretty lenient, which was helpful. Now, I couldn’t get through all of the course material, as good and fun as it was. It probably would be better off being more concise or perhaps simply better split up (e.g., there were often multiple videos embedded into a single slide).
Finally, I absolutely have to give high praise to TA Hanqing Zhu and his incredible promptness and thoroughness in addressing student questions. Dr. Eric Feron and Dr. Jérôme Hugues, likewise, were available for their respective portions of the course. If you dig embedded systems and apply yourself (don’t hesitate to ask questions!), I think you will enjoy this course and come away with a solid A.
One of the best classes I’ve taken at Georgia Tech. Professors and TA are knowledgeable, friendly, and answer questions quickly. Assignments are interesting and varied. I finished the semester feeling I’ve learned a broad range of useful topics.
From my understanding, the course has changed a good bit in the past year, specifically with regard to the second portion of the course. The grading was lenient, and support on piazza was timely and helpful.
The benefit of this class lies in the assignments, which generally deal with fully implementing something simple, and the lessons learned are applicable. You won’t find this breadth of practical challenges in most courses, and it is important if you ever want to leave simulation. This I considered to be the main benefit of the course.
I have worked on several cyber-physical systems in the past and have an engineering background, so I have a good grasp of what’s involved in both structure of the problems as well as the underlying math. However, I did notice some other students struggled with some of these aspects, that are tangential to the course. Unfortunately, the class lectures attempt to address the structure aspect, and leave out a lot of practical knowledge needed to complete the course. I would say that if you have designed (not just copied) a robot or anything similar in the past, you won’t have an issue.
I will say that if the two course sections were independent, it would be an improvement, as well as if there were some other courses to follow and could spread out some of the content.
I echo a lot of what the other reviews from this semester say - 1st half easy and pretty enjoyable, 2nd half frustrating and generally a waste of time. You can be successful in this class if you are an effective bullshitter, and can respond to vague questions with equally vague responses that are technically correct. Any PID experience will make things go faster but other than that common sense can get you through most of it.
This course is effectively two, so must be reviewed in two parts:
- Part one is taught by Dr. Eric Feron, who is a GT professor. This is the far better of the two course parts. The homework assignments and projects are well-defined and fairly straightforward, if divorced from the content of the lecture videos.
I honestly did not even watch the course videos for the most part, and found them tangential at best to the tasks you’re asked to complete. The actual videos are produced well enough but lack any kind of context or narrative thread, so it’s very easy to just let it go in one ear and out the other without retaining anything. The Udacity course also commits an imho cardinal sin by embedding multiple videos on a single lesson section and consequently disabling auto-play (which goes back to the aforementioned lack of narrative thread). Ultimately though, as I noted before, this isn’t a huge deal because the lecture videos aren’t particularly useful – in fact, the few instances when I did try to reference them to clarify something in an assignment I couldn’t find anything pertinent.
The homework assignments varied quite a bit, starting with basically some short Q&A/essays on cyber-physical systems, then going into basically a homework assignment solving a physics 101 problem (calc-based physics 101, to be clear), and then some minor coding assignments in C around black-box testing and input-output feedback loops. The essays required a day or so of work to compile, but neither the physics quiz nor the coding assignments required more than a couple hours work.
Both projects involve commanding either one or a set of GRITSbots to accomplish a set of specified tasks, subject to a set of specified constraints, in a MATLAB Robotarium simulator. You also have the opportunity to run your code against live robots in the Robotarium for the first project, which is neat but also frustrating, because you’re only allotted two attempts in the actual live environment, and will likely find that your robot does not behave live as advertised in the simulation. This is not an issue for grading though, as you are provided a data set to use if needed for the analysis portion of this project, and are graded for code based on the results of the sim and not the live result.
Both projects should be completable with a dedicated weekend of work.
If the entire course was just Dr. Feron’s course, I would’ve probably rated this class “Neutral” with an “Easy” difficulty. I don’t feel like I really gained much from it, but the assignments were for the most part entertaining and it’s elective hours.
- Part two is taught by Dr. Jérôme Hugues, who is effectively “on-loan” from the Institute for Space and Aeronautics Engineering, part of the Université Fédérale de Toulouse Midi-Pyrénées. He is highly credentialed and active in the CPS field. But don’t for a second be fooled into thinking that implies he’s effective as an instructor in this course.
As Dr. Hugues is French, there is a language barrier to be overcome for the predominantly Anglophone demographic of the OMSCS program. His lessons and assignments are of course delivered in English – you don’t need to learn French, of course – but his spoken English is heavily accented and difficult to understand, and his written assignments often lack precision.
Whereas the assignments for Dr. Feron’s portion of the course were well-defined and had explicit questions and/or objectives, Dr. Hugues’ assignments were exclusively extraordinarily vague and open-ended questions, as though he’s attempting a Socratic descent into teaching the material. That works great in an open classroom setting where students and mentor can collaborate on exploring the topic. It is not at all appropriate for a graded assignment for which you’re only allowed one submission.
As another review noted – and I don’t know if this is just a cultural misunderstanding or actual personality – Dr. Hugues can also be quite brusque when you attempt to ask for clarification. He often declines to answer questions outright, asserting that it’s deliberately vague so that you can decide how best to answer (but how can I answer when I don’t understand the query?).
It could just be that I am not a smart individual, and certainly some students in the class were able to complete his assignments, but for both of them I found myself completely lost and in the mindset of “I understand the individual words you’ve used, but I can’t put them together into coherent entities that make sense in my brain.” I’ve spent days trying to dissect his project and still don’t understand what it is I’m intended to do. I suspect that, given Dr. Hugues’ background, he just assumes a lot of systems engineering background as common-sensible, which is probably a valid assumption at his home institution with his home target audience, but isn’t valid in a computer science course that has, at best, only an informal prerequisite of anything of the sort. I sure as hell don’t, and I’m suffering mightily from it.
It is worth noting that Dr. Hugues’ portion of the course does not begin until after the drop date, so Dr. Feron’s portion can easily lull you into a sense of false security about where you stand grade-wise. With a perfect score in the course going into drop day, I’m now basically assuming zero credit on all of Dr. Hugues’ assignments and hoping I can perform well enough on the final (I think I can, since it is, I believe, prepared by Dr. Feron) to maintain a C.
Consequently, for Dr. Hugues’ portion of the course I would rate “Strongly Disliked” and “Very Hard” in terms of difficulty: I have learned nothing and gained nothing but frustration from it. I do think that if you were able to surmount the language barrier, expand this to a full course on its own merit, and assume less in terms of prerequisite knowledge, this could be an effective course. But absolutely not as it currently stands.
tl; dr: Take this class at your peril. If you have an EE or systems engineering background you’re probably going to be fine. If you don’t, or have never worked on cyber-physical systems before, this is probably not an appropriate first course. (No, 6263 is not ample preparation.)
This class was bad and got tremendously worse after the withdrawal date. The lectures aren’t relevant to the assignments, the assignments aren’t complete enough to complete without attending office hours. In addition, the professor frequently either blows off or is more than 15 mins late to office hours, and then he can’t operate webex. And that’s the first half of the class before you get to the second professor who will remind you he’s just an adjunct as an excuse for delayed responses when you have questions about the vague assignments with VMs that don’t actually work so you lose 3 days on an assignment waiting for him to say how to fix his VM. Nevermind that 95% of the students are full time students with other responsibilities and some have other classes to schedule around as well. I had 90% plus on every assignment in this class, and A’s in 3 of my 5 previous classes, and I’m now attempting to get a C in this to not bomb my GPA, RUN the other direction.
Just DO NOT take this course unless you do real-time embedded systems for a living. The first half of the course was ok. Once the second half started and Professor Jerome Hugues appeared, the misery started. He does not teach you anything and seems cocky and arrogant. The assignments he gives have no explanations behind them anywhere and are based on the material so arcane and esoteric, that probably only 0.001% of the IT world uses. The responses he gives on Piazza are so confusing - you wish you never asked the questions in the first place. Just spare yourself and stay away from this course.
After taking eight courses in OMSCS (all As), my biggest regret in this program is taking this course. Don’t take it. And if you’re signed up for it, then drop it. By the second half of the course a second professor, Jerome Hugues, comes in and is a highly ineffective teacher.
He doesn’t care to teach and rather just gives an overwhelming assignment and wants you to ask question. But he’s French so to American students he comes off as a rude ass when you do ask questions. His answers are very indirect because he doesn’t want to spoil the process of a student figuring it out for themselves… the end result being that the student never figures it out.
There are no prereqs to this course but if you don’t come from an engineering background then you will be at a disadvantage during the first half and then completely lost in the second.
Took OMS CS-8803-009 in fall. It tests lot of skills, MatLab, C, Calculus, differential equations. The material is so interesting, as it focuses on autonomous cars and airplanes. I had a great group of 3, two of my group members took the on-campus section. Secondly it had a good professors, it was joint between Eric Feron and Hughes. Lastly the TA was great in office hours. The office hours were held on Saturday am which made them easy to attend. I learned a lot in the class as I have a fascination with autonomous system. But like everything you get out what you’re willing to put in. Also it by far the most different course from any I’ve taken in the program.
This class is going to vary a LOT based on whether you have the mostly unmentioned prereqs.
You should have a strong math background. It would be best if you have some sort of engineering background.
C, Matlab, AADL…
The material is interesting. The lectures have almost no visuals and define very few of the in field concepts (mostly AE related). It is difficult to find outside references if you do not get something. The homework and projects seem like they would be easy IF you understand most of the concepts with little help. If you are starting with ANY sort of deficit in background, they will be miserable. So… high barrier to understanding what is asked, low-medium amount of actual work. Almost all of my time was spent trying to look up concepts that weren’t explained in Physics, Math, Matlap, AADL, etc. Homeworks, team projects, individual project + final exam.
This will be my lowest grade in the program with a 4.0 average otherwise, and most of the way through the program.
Appending a note after the final: Final was fine compared to the rest of the course, but released quite late. I really don’t know how they’ll adjust the schedule in following terms, but as we didn’t even get to the final lecture, clearly they have some things to consider. It has a lot of kinks to work out. The prof seems enthusiastic, so I’d expect it to improve, but… expect to have to watch the lectures early, study, and need to pick up a lot of additional info.
Overall a very good class for general computer science program. Prerequisites: Python (basic), C (basic), controls theory (undergraduate level).
I definitely recommend taking the course, especially as one of the earlier courses in your plan of study. The reason being that the content, assignments and projects introduces a lot of different fields - network sockets, controls (primarily open vs closed loop with single and multi-variable feedback), system modeling, embedded programming and architecture design & analysis among other CPS topics. The course can be coupled with SDP course and I think the two together shall provide a strong fundamental mechanisms required for other OMSCS courses.
I found the Udacity lectures to be very good but with lot of information. It is a good thing! I took lot of hand-written notes as I went through the lectures and that was helpful to enforce the concepts/theory/case studies. The assignments were primarily hands-on, i.e. programming in C or Python. Starter codes were provided for all assignments/projects and the tasks themselves don’t require a lot of programming but it requires understanding of how the starter code works. Understanding involves ability to read the provided code and also run experiments with the code. This might require exploring some external resources especially in C or Python in case you have minimal experience. The instructors are very helpful and held a weekly Q&A session (Saturday), though not many students participated to take advantage of the instructors availability. Beyond that any additional information required for the tasks has to be researched just like in any graduate course.
The course towards the end introduces AADL (a model based language) for a project but the time frame to learn AADL was short and coupled with the project deliverable which made the project more challenging. But challenges are fun, right? I found this to be one of the best part of the course. It would have been nice if at least the last two projects were based on AADL as that would give ample time to learn the language and related simulation tool and also be able to focus on the required project tasks properly.
If you are interested to know about - systems at large, embedded systems, real-time systems and controls, robotics, quadcopters (lot of examples based on this) and architecture development, then take this course. It is a good introduction from both computer science and CPS perspective.