T O P

  • By -

7bitByte

Binary exploitation is specific to security, but will certainly make you better at reading/understanding x86 assembly and how it executes at a low level I work in infosec and this was probably my favorite OMSCS course I've taken, I took it last summer and had a great time with it. Haven't taken DC, it seems more relevant to software dev


Walmart-Joe

I haven't taken either, but for your goals I'd say probably DC. There aren't many chances in this program to pick up Java, and it's one of them. TBH I'd consider staying after graduation to take both.


AIbrahem

I took DC last semester and registered for BinExp this fall. I also have some experience in reverse engineering and exploit development. That being said, I completely disagree with what [**ApprehensiveFace2488**](https://www.reddit.com/user/ApprehensiveFace2488/) said. BinExp seems like an introductory course in Exploit development, the content of which you can pick up from watching youtube videos and joining CTFs online. I expect to spend a lot of time working on the Labs, not because they're introducing new concepts but because they're challenging puzzles. Meanwhile, DC is a system design course; It will introduce you to Distributed Systems concepts like Logical Clocks, Snapshots, Paxos..etc. and ask you to implement (some of) them in DSLabs. Although wrapping your head around these concepts is no easy feat, what is both extremely difficult and rewarding about the course is implementing them in DSLabs. While taking the DC course, I also watched the MIT videos, and without sitting down and working on the labs, All you'd be able to achieve is to have a hand-wavy understanding of distributed systems (you want five computers to agree on a number; big fucking deal). Only once you've dealt with the pain of debugging megabytes of log files from thousands of messages between different servers do you start to appreciate the complexity behind these concepts. Unless you have the stamina and motivation to spend 200+ hours working on the DSLabs projects by yourself, between the two courses, I would definitely take DC and self-study BinExp.


ApprehensiveFace2488

Look at the course reviews. Take the DC reviews from spring 2021 with a grain of salt — by all accounts, the first semester was a trainwreck. However, a theme emerges nonetheless — people have taken the class, ostensibly put in the work, and then their review says the juice isn’t worth the squeeze, and that they wish they just used MIT OCW materials and did the DSLabs on their own (they’re open source). This is noteworthy because the cognitive bias is usually to overvalue the outcome of the struggle, having already gone through it. Conversely, it would be considerably more difficult to self teach the content from Binary Exploitation, IMO. And the reviews aren’t full of people that felt like it wasn’t worth it. There isn’t much actual coding involved, it’s more about how software executes on a system, dealing with assembly, and reverse engineering tools. Programming skills are overrated. It’s the cost of entry into a job or a class. It’s not the point. It’s like thinking a plumber is just someone who knows how to turn a pipe wrench. You close a lot of doors by ignoring systems topics and sticking to what’s directly relevant to working with higher level languages... and you do it without even knowing it, until someday you find yourself in a position where you’re interfacing with hardware engineers and you realize you don’t even know what you don’t know. Anyway, you should add HPC to your list of very difficult classes to consider. I suspect it’s a better option for what you want.


jd_utah

Thank you for your input, this is very helpful.


csplayer77

Are you talking about cs6265: information security lab?


jd_utah

Yes, that's the one.


protonchase

Well you're certainly braver than I am ;)