- Home
- Search
- Paul R Eggert
- All Reviews

Paul Eggert
AD
Based on 367 Users
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).
Comparing to his 111, Professor Eggert's 131 is much more managable. All you need to do is understand his lecture content and know your homeworks & projects by heart during exams.
I really wanted to like this class because Eggert was legitimately an interesting lecturer (unlike his CS33). I felt I learned a lot by going to class. Unfortunately that's ruined by every other part of this course.
TAs are one of the most important parts of getting through this class. Go to different discussions and compare with your friends. A good TA makes all the difference and some are more generous about giving tips on the homework than others. A few of the assignments involve written reports, which is annoying but at the same time is easier than the 100% code ones. I'd rather write more reports than pull my hair out over OCaml .
Tests are your standard Eggert tests. It's open book/note so bring all the things you want but it just comes down to whether you're lucky enough that the things you focus on happen to be what he write questions about.
Half the assignments consist of Eggert flexing on all of us about how he contributed to Linux coreutils. The lab sections' quality varies drastically since the class isn't standardized with one lecture, and obviously TAs vary. Most assignments are vaguely written up and expect you to be an almost-expert on the topic after learning about it for the first time for an hour and a half. The 3-unit listing is incredibly deceiving — the assignments are exceptionally time-consuming (particularly 2, 3, 4, 5, 6, 7 — almost of all of them at this point) if you aren't well-versed in the topics the way Eggert has been for decades.
The final was by far the worst final I've taken. He and his TAs' goal in writing the common final is having a median of 50%, but they slightly missed the mark on that with a median around 54% (*gasp*). The variations from question to question are rather drastic; a few are reasonably written to test your grasp of concepts, but others ask you to demonstrate proficiency in writing full-featured scripts/programs using a variety of languages and libraries by hand. Your score on the final might as well have been generated by a random number generator designed to have a mean of 50 and a standard deviation of 10.
His assignment late policy was rather lenient, though. That might be the only redeeming quality. Some of the topics covered in 35L are relatively important and practical, but overall this class is designed incredibly poorly.
The textbook for this class is actually amazing. Highly recommend dishing out the fat stacks of cash to buy it because it is well worth it. It is easy to understand, often funny, engaging, AND it covers EVERYTHING Eggert talks about in lecture. Seriously. Honestly, don't go to a single lecture. It's a waste of time. Just read the textbook, it's much better at explaining than Eggert.
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).
I really wanted to like this class because Eggert was legitimately an interesting lecturer (unlike his CS33). I felt I learned a lot by going to class. Unfortunately that's ruined by every other part of this course.
TAs are one of the most important parts of getting through this class. Go to different discussions and compare with your friends. A good TA makes all the difference and some are more generous about giving tips on the homework than others. A few of the assignments involve written reports, which is annoying but at the same time is easier than the 100% code ones. I'd rather write more reports than pull my hair out over OCaml .
Tests are your standard Eggert tests. It's open book/note so bring all the things you want but it just comes down to whether you're lucky enough that the things you focus on happen to be what he write questions about.
Half the assignments consist of Eggert flexing on all of us about how he contributed to Linux coreutils. The lab sections' quality varies drastically since the class isn't standardized with one lecture, and obviously TAs vary. Most assignments are vaguely written up and expect you to be an almost-expert on the topic after learning about it for the first time for an hour and a half. The 3-unit listing is incredibly deceiving — the assignments are exceptionally time-consuming (particularly 2, 3, 4, 5, 6, 7 — almost of all of them at this point) if you aren't well-versed in the topics the way Eggert has been for decades.
The final was by far the worst final I've taken. He and his TAs' goal in writing the common final is having a median of 50%, but they slightly missed the mark on that with a median around 54% (*gasp*). The variations from question to question are rather drastic; a few are reasonably written to test your grasp of concepts, but others ask you to demonstrate proficiency in writing full-featured scripts/programs using a variety of languages and libraries by hand. Your score on the final might as well have been generated by a random number generator designed to have a mean of 50 and a standard deviation of 10.
His assignment late policy was rather lenient, though. That might be the only redeeming quality. Some of the topics covered in 35L are relatively important and practical, but overall this class is designed incredibly poorly.
The textbook for this class is actually amazing. Highly recommend dishing out the fat stacks of cash to buy it because it is well worth it. It is easy to understand, often funny, engaging, AND it covers EVERYTHING Eggert talks about in lecture. Seriously. Honestly, don't go to a single lecture. It's a waste of time. Just read the textbook, it's much better at explaining than Eggert.