- Home
- Search
- Paul R Eggert
- All Reviews

Paul Eggert
AD
Based on 361 Users
Rarely do I write BruinWalk reviews, but I thought I'd write this class one just so some student doesn't make the same mistakes I did. Other reviews did a good job describing the workload, all I can say is so long as you are comfortable with Linux you should be fine for the projects, if not I can't speak to that.
However, even still, don't discount this class as an easy A just because you know Linux. I say this because half of your grade is the final exam, and in full honesty how well you do on the final is pretty much determined by the notes you bring with you. In my case I scored in the A-range for all projects with many being full 100's, but my fatal mistake was that I brought TA slides to the final exam. Many students brought copies of some alumni's notes that were easily found online, and after reviewing these notes personally I found that many answers on the final could directly be copied or easily derived just from these notes.
Basically, the class really comes down to the final exam. I still recommend studying and of course doing well on the projects, but if you want an A you'll probably want to bring either a well-crafted cheat sheet of your own or one you can find online to the final.
Eggert is very decent for 111. IMO he's the best 111 lecturer in UCLA. His lectures are engaging and clear (unlike his 33). His 111 exams are not as hard as those from 33.
His final has a lot of multiple choice problems, which are basically quizzes for the assigned reading. I suspect that's why he doesn't have quizzes like other 111 instructors. If you read all required readings from either textbook (I used the online version), those multiple choices are very doable (some questions can be directly found in boldface texts from the book).
Labs won't cover kernel code at all, which is a shame, as USC's OS course has a few kernel assignments.
Lab 0 and 1 are ok since they teach us how to correctly use system calls, etc.
Lab 2 basically reiterates through what we learn in class so we basically didn't learn anything new from Lab 2. I don't know if it's a good thing or a bad thing.
Lab 3 is a total disaster. I learn absolutely ZERO from this lab and it costs me days to finish it. Reiher's spec is also the most unclear I have ever seen. Compared to Reiher's specs, Eggert's 35L specs are pretty amazing.
Lab 4 requires us to buy a $100+ Intel Edison device. From this lab, I learned how to adapt sample code online. I really can't think of anything else I learned.
Unfortunately all 111 labs are the same, so we have to live through that.
oh my god... like the other posts, all I can say is good luck on this final because it is the hardest thing I have ever seen, and if you were able to finish within the 3 hours with decent confidence, then good luck in all your future endeavors. As for the other 99% of us....my god.
LABS/HW: The other posts are pretty spot on--expect to put in a lot of time and thought into the labs each week (the first 4 weeks are god awful, especially week 2's shell scripting, but get much better towards the latter half of the quarter). I can't really say much besides that, some are doable, some aren't without clarification. I have to admit I did find some of the labs enjoyable, and definitely learned a lot about software construction so don't think this class is a complete waste.
FINAL: Basically 50% of your grade is based on this test. 17 pages of the most brutal questions. Yeah, I said 17 pages... Obviously I do not know my score/grade yet writing this post, but after walking out of this shaft of a test I just want to pass the class at this point. Definitely much harder than Winter 2019's final exam, which we got as practice. It's honestly all partial credit at this point. I cannot even give you tips on how to study besides printing out the labs. Our Lab Slides had one keyword without much context, and Eggert writes a whole 10 point question on it. Literal BS you'd probably score higher guessing. Just get through this "3 unit class" and move on to better things. good luck comrades
The syllabus and projects for this class were completely revamped in 2016, so reviews prior to that may not be as relevant. That said, the overall details are mostly correct: this class is quite tough.
The class had two textbooks, both of which are free to access. I'd highly recommend doing the recommended reading from the Arpaci-Dusseau book, it's free and not dense at all. The reading will help you follow along in lecture.
Eggert himself is a pretty engaging lecturer, but he doesn't use slides. He writes on the board in a pretty disorganized manner, and zoning out for a few minutes will probably leave you confused for the rest of lecturer. It's really important to note down everything he says in class, and I mean everything. His exams are usually based on expanding off the ideas he went over in lecture, so if you can follow along in lecture, you should be okay.
Coming to his exams, they're really difficult, but by doing the readings and following along in lecture, you should get at least a little above the median. While the questions don't make sense initially, it's important to read them clearly and write at least something coherent for every question. Even if it's not entirely correct, you'll get good partial credit. I managed to score well on the final by regurgitating a few of Eggert's ideas from lecture. Also, each exam has some giveaway questions, so look for those.
The projects are quite difficult, and a lot of people cheat on them and get high scores. That's why it's important to get above the median on the exams to differentiate yourself.
Eggert himself is a really nice guy, and is great to talk to in office hours. However, he usually doesn't offer specific help on the projects. For that, use the Piazza or go to the TA office hours. Alexandre Tiard is a great TA, and is quite helpful.
CS 111 is a hard class, but is a great way to learn about how computers work and how software is built. Don't shirk, and you'll be fine. Also make liberal use of Eggert's late policy.
This course is extremely rewarding if you put in the work. You will walk away having learnt something. But if you are not a hard-core CS major who just wants to coast by with little work, do not take it with Paul Eggert. If you want to get a rigorous introduction to Systems then take Eggert. This is what you have to do to learn well and do well:
1. Do the 100 or so pages of reading from Arpaci and Duseau before every lecture and take notes on them! You can ignore SK, maybe it helps with lecture or exams? Also do the readings on the course page. You will find that Dr. Eggert offers a perspective that is distinct from what is in the readings. It is much easier to follow the lecture if you do the readings.
2. Start projects early. Obviously not the day its assigned (everything is assigned on day 1 in Eggert's classes). I mean start 2-3 days before the deadline and be willing to stay up until 3am coding them up. It is also important to discuss edge cases with friends as these will for sure be tested by the grader.
3. Pay rapt attention in lecture. Type down everything he says. It will come to 1500-2000 words per lecture. I advise you to not have classes during his office hours. The TAs are, for most part, clueless about the material especially if they are Masters students (shoutout to Vishwas for reading the man page in all its glory). But TA Zhaoxing Bu, was quite useful. Eggert's office hours are not packed despite how much you can learn from him in those hours. I basically had close to one on one attention and was able to clarify all my questions. I personally felt that discussion for this class are useless as all they do is give project hints which are not that hard for you to figure on your own, if you love coding in C/C++ or enjoyed 35L.
This class sucks because of the weekly homeworks that are time consuming. I believe there are 2 in particular that really suck and the rest are ok. I would personally start like thursday/friday and be able to finish by saturday midnight. I stopped going to discussion after a while because you can effectively read the slides and get all the info you need. However, as a CS major, I will say that this class is REALLY useful and its probably worth it to learn everything you can. The final was really hard. I had 103 degree fever while taking it so it just felt like a fever dream and the only thing I remember about it was that it was hard. I do remember that there was one question which seemed really unrelated to any of the projects we did. But in general all the questions are supposed to be based off one of the homework. Also the lab portion of each homework is too long to do in lab so be prepared to do that at home too.
He is a really good professor and good lecturer. A frustrating thing is that because he is a lecturer he doesn't do a particularly great job of writing down the info so you can see exactly what you should translate to your notes. This class is really hard though. The first midterm is primarily assembly and stuff like that which is really hard to understand at first. The second midtem was a bit better. The final was somewhere in between. I don't really think I can give much advice about them except at least understand the projects and it's probably a good idea to study assembly a lot. Project 1 actually sucks so much and is super hard to figure out on your own so you are gonna need a lot of help from TAs. The gdb project is super short and simple. The stack buffer overflow project SUCKS SO MUCH. A lot of people including me did every step as the TA told us to and it just didn't work in the end but if you can understand at least what is supposed to happen and just add to the end of your report that it worked even though it didn't you'll be fine. The last project was nice and easy so I'm glad he only gave us 2 really hard projects.
Haven't gotten a grade for this class yet. The first two homeworks are insanely hard (and its only like a couple functions you need to write for each) but when you finish them it's smooth sailing (for the most part). There is only one midterm which is nice and I found it to be a lot easier than every Eggert midterms I've ever taken. The final was rough though and left me leaving with the same sadness that Eggert usually does on a test. There is one project in this class which isn't too bad on the coding end and mostly focuses on the report. The homeworks are difficult but piazza is your best friend. The scheme and prolog homeworks were medium difficulty. The java homework is really easy and is mainly focused on the report as well and so is the last homework (the language for this one varies). Lectures are SUPER useful and I find that he is a lot better at teaching this course than cs 33 (but maybe that's just cuz 33 is a harder subject). You don't need to read the book really but it is also helpful and gives a deeper understanding. He pretty much goes over whatever's in the book in lecture a few days later. Best Eggert class I've taken but still difficult as always.
CS 111 is already a very hard class. The materials are condensed and the projects definitely cost tens of hours to finish. However, having Professor Eggert makes this class even harder. His exams are not predictable at all - which means, he could give his finals in two totally different styles on two consecutive quarters. One could score 80 in the previous quarter but 40 in the current quarter. The only way to score an A - at least what I could think of - is to prepare yourself with any kind of hard questions. Go to his office hours regularly and ask him tricky questions so that you could follow his answer as an example of how your thinking process should be when facing a similar question in the final. And when attending lectures, don't just drop down notes about concepts he mentions but how he actually gets there as well, that being very important.
Just to give you some general tips to help you succeed in this class:
hw1 and hw2 are OCaml functional programming. hw1 is easy, but hw2 is exponentially harder (probably the hardest one), so make sure you start early on this one.
hw3 (concurrency in Java) is probably the easiest, but you need to derive data and write report.
hw4 (prolog) is intermediate difficulty, but lots of people may find functional programming hard to understand at first, and you need to figure out how to optimize performance to get full score.
hw5 (scheme) is also intermediate difficulty, but I personally find this one the hardest to understand. Personally, I insist the spec and my solution on this one is quite sloppy, even though I got full score.
hw6 basically requires no programming.
Project (asyncio in Python) is not hard on the logic side, but you need to understand the asyncio library in Python and the concept of server and client.
As for the lecture, you can learn a lot if you do the reading and pay full attention to Eggert's lecture. However, unlike the experience of others, I found his lecture quite hard to follow (I feel like I have not mastered adequate background knowledge in CS to understand his points).
As for the exam, based on the response of my peers, the midterm tends to be easier than the final, although I did better on the final (I score fairly above the median in both and get an A). One thing to notice is that some open-end questions are actually quite hard to get points, so fully develop you arguments and provide enough technical details to back it up. One general strategy to eggert's exam is always to remain calm, pick the battle you can fight, and aim for every possible points.
Some side notes: go the the discussion as the TA will explain the spec for you; I personally find that CS131+CS181 combo is quite helpful since both of them talks about grammar, and I notice that there are handful of students in both lecture (although CS181 is usually recommended as the last CS class to take).
Rarely do I write BruinWalk reviews, but I thought I'd write this class one just so some student doesn't make the same mistakes I did. Other reviews did a good job describing the workload, all I can say is so long as you are comfortable with Linux you should be fine for the projects, if not I can't speak to that.
However, even still, don't discount this class as an easy A just because you know Linux. I say this because half of your grade is the final exam, and in full honesty how well you do on the final is pretty much determined by the notes you bring with you. In my case I scored in the A-range for all projects with many being full 100's, but my fatal mistake was that I brought TA slides to the final exam. Many students brought copies of some alumni's notes that were easily found online, and after reviewing these notes personally I found that many answers on the final could directly be copied or easily derived just from these notes.
Basically, the class really comes down to the final exam. I still recommend studying and of course doing well on the projects, but if you want an A you'll probably want to bring either a well-crafted cheat sheet of your own or one you can find online to the final.
Eggert is very decent for 111. IMO he's the best 111 lecturer in UCLA. His lectures are engaging and clear (unlike his 33). His 111 exams are not as hard as those from 33.
His final has a lot of multiple choice problems, which are basically quizzes for the assigned reading. I suspect that's why he doesn't have quizzes like other 111 instructors. If you read all required readings from either textbook (I used the online version), those multiple choices are very doable (some questions can be directly found in boldface texts from the book).
Labs won't cover kernel code at all, which is a shame, as USC's OS course has a few kernel assignments.
Lab 0 and 1 are ok since they teach us how to correctly use system calls, etc.
Lab 2 basically reiterates through what we learn in class so we basically didn't learn anything new from Lab 2. I don't know if it's a good thing or a bad thing.
Lab 3 is a total disaster. I learn absolutely ZERO from this lab and it costs me days to finish it. Reiher's spec is also the most unclear I have ever seen. Compared to Reiher's specs, Eggert's 35L specs are pretty amazing.
Lab 4 requires us to buy a $100+ Intel Edison device. From this lab, I learned how to adapt sample code online. I really can't think of anything else I learned.
Unfortunately all 111 labs are the same, so we have to live through that.
oh my god... like the other posts, all I can say is good luck on this final because it is the hardest thing I have ever seen, and if you were able to finish within the 3 hours with decent confidence, then good luck in all your future endeavors. As for the other 99% of us....my god.
LABS/HW: The other posts are pretty spot on--expect to put in a lot of time and thought into the labs each week (the first 4 weeks are god awful, especially week 2's shell scripting, but get much better towards the latter half of the quarter). I can't really say much besides that, some are doable, some aren't without clarification. I have to admit I did find some of the labs enjoyable, and definitely learned a lot about software construction so don't think this class is a complete waste.
FINAL: Basically 50% of your grade is based on this test. 17 pages of the most brutal questions. Yeah, I said 17 pages... Obviously I do not know my score/grade yet writing this post, but after walking out of this shaft of a test I just want to pass the class at this point. Definitely much harder than Winter 2019's final exam, which we got as practice. It's honestly all partial credit at this point. I cannot even give you tips on how to study besides printing out the labs. Our Lab Slides had one keyword without much context, and Eggert writes a whole 10 point question on it. Literal BS you'd probably score higher guessing. Just get through this "3 unit class" and move on to better things. good luck comrades
The syllabus and projects for this class were completely revamped in 2016, so reviews prior to that may not be as relevant. That said, the overall details are mostly correct: this class is quite tough.
The class had two textbooks, both of which are free to access. I'd highly recommend doing the recommended reading from the Arpaci-Dusseau book, it's free and not dense at all. The reading will help you follow along in lecture.
Eggert himself is a pretty engaging lecturer, but he doesn't use slides. He writes on the board in a pretty disorganized manner, and zoning out for a few minutes will probably leave you confused for the rest of lecturer. It's really important to note down everything he says in class, and I mean everything. His exams are usually based on expanding off the ideas he went over in lecture, so if you can follow along in lecture, you should be okay.
Coming to his exams, they're really difficult, but by doing the readings and following along in lecture, you should get at least a little above the median. While the questions don't make sense initially, it's important to read them clearly and write at least something coherent for every question. Even if it's not entirely correct, you'll get good partial credit. I managed to score well on the final by regurgitating a few of Eggert's ideas from lecture. Also, each exam has some giveaway questions, so look for those.
The projects are quite difficult, and a lot of people cheat on them and get high scores. That's why it's important to get above the median on the exams to differentiate yourself.
Eggert himself is a really nice guy, and is great to talk to in office hours. However, he usually doesn't offer specific help on the projects. For that, use the Piazza or go to the TA office hours. Alexandre Tiard is a great TA, and is quite helpful.
CS 111 is a hard class, but is a great way to learn about how computers work and how software is built. Don't shirk, and you'll be fine. Also make liberal use of Eggert's late policy.
This course is extremely rewarding if you put in the work. You will walk away having learnt something. But if you are not a hard-core CS major who just wants to coast by with little work, do not take it with Paul Eggert. If you want to get a rigorous introduction to Systems then take Eggert. This is what you have to do to learn well and do well:
1. Do the 100 or so pages of reading from Arpaci and Duseau before every lecture and take notes on them! You can ignore SK, maybe it helps with lecture or exams? Also do the readings on the course page. You will find that Dr. Eggert offers a perspective that is distinct from what is in the readings. It is much easier to follow the lecture if you do the readings.
2. Start projects early. Obviously not the day its assigned (everything is assigned on day 1 in Eggert's classes). I mean start 2-3 days before the deadline and be willing to stay up until 3am coding them up. It is also important to discuss edge cases with friends as these will for sure be tested by the grader.
3. Pay rapt attention in lecture. Type down everything he says. It will come to 1500-2000 words per lecture. I advise you to not have classes during his office hours. The TAs are, for most part, clueless about the material especially if they are Masters students (shoutout to Vishwas for reading the man page in all its glory). But TA Zhaoxing Bu, was quite useful. Eggert's office hours are not packed despite how much you can learn from him in those hours. I basically had close to one on one attention and was able to clarify all my questions. I personally felt that discussion for this class are useless as all they do is give project hints which are not that hard for you to figure on your own, if you love coding in C/C++ or enjoyed 35L.
This class sucks because of the weekly homeworks that are time consuming. I believe there are 2 in particular that really suck and the rest are ok. I would personally start like thursday/friday and be able to finish by saturday midnight. I stopped going to discussion after a while because you can effectively read the slides and get all the info you need. However, as a CS major, I will say that this class is REALLY useful and its probably worth it to learn everything you can. The final was really hard. I had 103 degree fever while taking it so it just felt like a fever dream and the only thing I remember about it was that it was hard. I do remember that there was one question which seemed really unrelated to any of the projects we did. But in general all the questions are supposed to be based off one of the homework. Also the lab portion of each homework is too long to do in lab so be prepared to do that at home too.
He is a really good professor and good lecturer. A frustrating thing is that because he is a lecturer he doesn't do a particularly great job of writing down the info so you can see exactly what you should translate to your notes. This class is really hard though. The first midterm is primarily assembly and stuff like that which is really hard to understand at first. The second midtem was a bit better. The final was somewhere in between. I don't really think I can give much advice about them except at least understand the projects and it's probably a good idea to study assembly a lot. Project 1 actually sucks so much and is super hard to figure out on your own so you are gonna need a lot of help from TAs. The gdb project is super short and simple. The stack buffer overflow project SUCKS SO MUCH. A lot of people including me did every step as the TA told us to and it just didn't work in the end but if you can understand at least what is supposed to happen and just add to the end of your report that it worked even though it didn't you'll be fine. The last project was nice and easy so I'm glad he only gave us 2 really hard projects.
Haven't gotten a grade for this class yet. The first two homeworks are insanely hard (and its only like a couple functions you need to write for each) but when you finish them it's smooth sailing (for the most part). There is only one midterm which is nice and I found it to be a lot easier than every Eggert midterms I've ever taken. The final was rough though and left me leaving with the same sadness that Eggert usually does on a test. There is one project in this class which isn't too bad on the coding end and mostly focuses on the report. The homeworks are difficult but piazza is your best friend. The scheme and prolog homeworks were medium difficulty. The java homework is really easy and is mainly focused on the report as well and so is the last homework (the language for this one varies). Lectures are SUPER useful and I find that he is a lot better at teaching this course than cs 33 (but maybe that's just cuz 33 is a harder subject). You don't need to read the book really but it is also helpful and gives a deeper understanding. He pretty much goes over whatever's in the book in lecture a few days later. Best Eggert class I've taken but still difficult as always.
CS 111 is already a very hard class. The materials are condensed and the projects definitely cost tens of hours to finish. However, having Professor Eggert makes this class even harder. His exams are not predictable at all - which means, he could give his finals in two totally different styles on two consecutive quarters. One could score 80 in the previous quarter but 40 in the current quarter. The only way to score an A - at least what I could think of - is to prepare yourself with any kind of hard questions. Go to his office hours regularly and ask him tricky questions so that you could follow his answer as an example of how your thinking process should be when facing a similar question in the final. And when attending lectures, don't just drop down notes about concepts he mentions but how he actually gets there as well, that being very important.
Just to give you some general tips to help you succeed in this class:
hw1 and hw2 are OCaml functional programming. hw1 is easy, but hw2 is exponentially harder (probably the hardest one), so make sure you start early on this one.
hw3 (concurrency in Java) is probably the easiest, but you need to derive data and write report.
hw4 (prolog) is intermediate difficulty, but lots of people may find functional programming hard to understand at first, and you need to figure out how to optimize performance to get full score.
hw5 (scheme) is also intermediate difficulty, but I personally find this one the hardest to understand. Personally, I insist the spec and my solution on this one is quite sloppy, even though I got full score.
hw6 basically requires no programming.
Project (asyncio in Python) is not hard on the logic side, but you need to understand the asyncio library in Python and the concept of server and client.
As for the lecture, you can learn a lot if you do the reading and pay full attention to Eggert's lecture. However, unlike the experience of others, I found his lecture quite hard to follow (I feel like I have not mastered adequate background knowledge in CS to understand his points).
As for the exam, based on the response of my peers, the midterm tends to be easier than the final, although I did better on the final (I score fairly above the median in both and get an A). One thing to notice is that some open-end questions are actually quite hard to get points, so fully develop you arguments and provide enough technical details to back it up. One general strategy to eggert's exam is always to remain calm, pick the battle you can fight, and aim for every possible points.
Some side notes: go the the discussion as the TA will explain the spec for you; I personally find that CS131+CS181 combo is quite helpful since both of them talks about grammar, and I notice that there are handful of students in both lecture (although CS181 is usually recommended as the last CS class to take).