- Home
- Search
- Paul R Eggert
- COM SCI 111
AD
Based on 29 Users
TOP TAGS
- Tolerates Tardiness
- Engaging Lectures
- Often Funny
- Tough Tests
- Issues PTEs
- Appropriately Priced Materials
- Snazzy Dresser
- Would Take Again
- Has Group Projects
Grade distributions are collected using data from the UCLA Registrar’s Office.
Grade distributions are collected using data from the UCLA Registrar’s Office.
Grade distributions are collected using data from the UCLA Registrar’s Office.
Grade distributions are collected using data from the UCLA Registrar’s Office.
Grade distributions are collected using data from the UCLA Registrar’s Office.
Grade distributions are collected using data from the UCLA Registrar’s Office.
Grade distributions are collected using data from the UCLA Registrar’s Office.
Grade distributions are collected using data from the UCLA Registrar’s Office.
Grade distributions are collected using data from the UCLA Registrar’s Office.
Grade distributions are collected using data from the UCLA Registrar’s Office.
Grade distributions are collected using data from the UCLA Registrar’s Office.
Grade distributions are collected using data from the UCLA Registrar’s Office.
Grade distributions are collected using data from the UCLA Registrar’s Office.
Sorry, no enrollment data is available.
AD
The popular opinion for this course is that the projects are way too hard and take way too long. For most people, that does carry quite a bit of truth. However, just saying that would make this review sound exactly like the ten preceding this one, so I'll try to do better.
I would qualify the difficulty in the projects, as not that they themselves are difficult, but rather they require quite a lot of knowledge and maturity in programming in C – something that the previous Computer Science classes do not prepare the students well for. Having done the projects myself and helped numerous others, I'd say the two major pillars that people were not as prepared for were:
- reading documentation (“man pages”): ability to skip the boilerplate and get to what you are actually looking for; finding and adapting example code
- understanding and applying memory allocation: fixed-size arrays vs. malloc(); pointers, lifetime, and ownership. Most people understand what they are and how they are different, but applying that knowledge correctly could be a different challenge.
If you are or become comfortable with these things, the projects will be quite doable.
On the other hand, the exams had a different focus. I hate to use the overused word, but they force you to think critically and provide a reasoned answer backed up with facts and experience. For dreamers and debaters, it was heaven. For the rest of us, it was a first taste at what software engineering is all about: a whole lotta dreaming and debating. (Oh, feel free to replace “dream” with “BS.”)
But where do you get the facts and the experience? The former you get by following textbook readings, which are unfortunately very heavy, as well as by listening and processing Professor Eggert's excellent lectures. The latter you get by stumbling and reflecting while doing the projects.
Of course, many online resources exist for help in the projects. However, a word of caution if you do decide to go down that route: most folks on GitHub who post their solutions were just as clueless as you are when they did it. Thus there is great variance in the the quality of said resources.
But if you do end up finding resources of high quality, make sure to maximize your learning by carefully reading and understanding why they did something but not something else: because there’s an actual reason, or because they just felt like it? How did they think of something that you didn't? Reflect, and you’d become a much better Computer Scientist or Software Engineer for it.
Probably said too much already, so I'll stop. In any case, good luck, and hope you enjoy the class!
If you actually do the readings, this class will be a lot of work. I read all the assigned A.D readings and additional readings and did most of the S.K. readings (all of those before the midterm and chapter 11). The discussions are very helpful and my TA was very helpful in telling us how to approach the project and often times gave us pseudo or actual code to implement the project. The projects are relatively time consuming but for the most part aren't super difficult.
I got 80% on one of the projects but over 90/100 on all the other projects. I got a 49.5% on the midterm after a regrade(mean was 49.5% and median was 51%). The TA's grade the report at the end and don't seem to care much so I got 100 on it even though I completely rewrote it the day it was due in like an hour. The final was open book and open note so I had a whole binder with a table of contents that really helped in the final which I got a 77% on and ended up with an A overall in the class.
I definitely suggest going to his office hours to clarify on concepts in readings/in class because he is really good at explaining in smaller settings and is a really nice person, so don't be intimidated!
EGGERT IS THE GOAT. This class is legendary. As long as you stay on top of your work, you will survive and walk out learning a lot about OS. His tests are impossible so they might not even be worth studying for. <3
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.
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.
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.
I studied HARD for this class. I almost all the readings, but it didn't really matter because his test questions didn't really relate to the readings. Everyone pretty much gets 100% or near 100% on the projects. I got 100% on the paper and I'm sure it wasn't really graded hard. The tests is what determines your grade pretty much.
Eggert has the most generous grading distribution out of all of the professors who teach this class. However, the variation between the different grades can just be a matter of a few points on an exam and your performance can sometimes be determined by luck. The exams are so hard and do not have to do with any of the readings and go beyond the difficulty of lecture so much, that your grade essentially is determined by your ability to BS and also luck. I got around the bottom 15% on the midterm and then around average for the final.
If you're the type of student who does not really study or spend a lot of time for classes and just wants to pass, then take this class. Your grade will be determined by your BSing skills and luck. If you're the type of student who studies hard, it won't really help you. I would suggest taking another professor.
It's honestly been a while since I've taken this class, so I can't really give a really detailed overview of what the class was like. However, I would highly recommend taking Operating Systems with Eggert because he really knows his stuff. His philosophy towards software, his passion, his humour... I really think he's the embodiment of what all prospective software engineers should aspire to be.
So, I would recommend Eggert because he's a really awesome person and you learn the most by being around awesome people. That being said, Eggert is not exactly the best "teacher" per se and he will use a lot of computer science terms without bothering to define them and sometimes, his lectures will be really hard to follow because his knowledge of the material trumps your knowledge of the material a thousandfold. Also, the class is a lot of work and maybe a little overwhelming at times.
However, as Professor Eggert frequently emphasizes, a lot of software is about tradeoffs. In the situation here, what you're trading for your "free" time, unimportant hobbies, and uninspiring social life is an opportunity to learn a very cool subject at the steepest learning curve possible. I would say that's a worthwhile trade.
Edit: Also, I took this class back in Winter 2015, which is the last class based on the old curriculum. The labs have been changed decently so the class might not be the same experience as before.
The popular opinion for this course is that the projects are way too hard and take way too long. For most people, that does carry quite a bit of truth. However, just saying that would make this review sound exactly like the ten preceding this one, so I'll try to do better.
I would qualify the difficulty in the projects, as not that they themselves are difficult, but rather they require quite a lot of knowledge and maturity in programming in C – something that the previous Computer Science classes do not prepare the students well for. Having done the projects myself and helped numerous others, I'd say the two major pillars that people were not as prepared for were:
- reading documentation (“man pages”): ability to skip the boilerplate and get to what you are actually looking for; finding and adapting example code
- understanding and applying memory allocation: fixed-size arrays vs. malloc(); pointers, lifetime, and ownership. Most people understand what they are and how they are different, but applying that knowledge correctly could be a different challenge.
If you are or become comfortable with these things, the projects will be quite doable.
On the other hand, the exams had a different focus. I hate to use the overused word, but they force you to think critically and provide a reasoned answer backed up with facts and experience. For dreamers and debaters, it was heaven. For the rest of us, it was a first taste at what software engineering is all about: a whole lotta dreaming and debating. (Oh, feel free to replace “dream” with “BS.”)
But where do you get the facts and the experience? The former you get by following textbook readings, which are unfortunately very heavy, as well as by listening and processing Professor Eggert's excellent lectures. The latter you get by stumbling and reflecting while doing the projects.
Of course, many online resources exist for help in the projects. However, a word of caution if you do decide to go down that route: most folks on GitHub who post their solutions were just as clueless as you are when they did it. Thus there is great variance in the the quality of said resources.
But if you do end up finding resources of high quality, make sure to maximize your learning by carefully reading and understanding why they did something but not something else: because there’s an actual reason, or because they just felt like it? How did they think of something that you didn't? Reflect, and you’d become a much better Computer Scientist or Software Engineer for it.
Probably said too much already, so I'll stop. In any case, good luck, and hope you enjoy the class!
If you actually do the readings, this class will be a lot of work. I read all the assigned A.D readings and additional readings and did most of the S.K. readings (all of those before the midterm and chapter 11). The discussions are very helpful and my TA was very helpful in telling us how to approach the project and often times gave us pseudo or actual code to implement the project. The projects are relatively time consuming but for the most part aren't super difficult.
I got 80% on one of the projects but over 90/100 on all the other projects. I got a 49.5% on the midterm after a regrade(mean was 49.5% and median was 51%). The TA's grade the report at the end and don't seem to care much so I got 100 on it even though I completely rewrote it the day it was due in like an hour. The final was open book and open note so I had a whole binder with a table of contents that really helped in the final which I got a 77% on and ended up with an A overall in the class.
I definitely suggest going to his office hours to clarify on concepts in readings/in class because he is really good at explaining in smaller settings and is a really nice person, so don't be intimidated!
EGGERT IS THE GOAT. This class is legendary. As long as you stay on top of your work, you will survive and walk out learning a lot about OS. His tests are impossible so they might not even be worth studying for. <3
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.
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.
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.
I studied HARD for this class. I almost all the readings, but it didn't really matter because his test questions didn't really relate to the readings. Everyone pretty much gets 100% or near 100% on the projects. I got 100% on the paper and I'm sure it wasn't really graded hard. The tests is what determines your grade pretty much.
Eggert has the most generous grading distribution out of all of the professors who teach this class. However, the variation between the different grades can just be a matter of a few points on an exam and your performance can sometimes be determined by luck. The exams are so hard and do not have to do with any of the readings and go beyond the difficulty of lecture so much, that your grade essentially is determined by your ability to BS and also luck. I got around the bottom 15% on the midterm and then around average for the final.
If you're the type of student who does not really study or spend a lot of time for classes and just wants to pass, then take this class. Your grade will be determined by your BSing skills and luck. If you're the type of student who studies hard, it won't really help you. I would suggest taking another professor.
It's honestly been a while since I've taken this class, so I can't really give a really detailed overview of what the class was like. However, I would highly recommend taking Operating Systems with Eggert because he really knows his stuff. His philosophy towards software, his passion, his humour... I really think he's the embodiment of what all prospective software engineers should aspire to be.
So, I would recommend Eggert because he's a really awesome person and you learn the most by being around awesome people. That being said, Eggert is not exactly the best "teacher" per se and he will use a lot of computer science terms without bothering to define them and sometimes, his lectures will be really hard to follow because his knowledge of the material trumps your knowledge of the material a thousandfold. Also, the class is a lot of work and maybe a little overwhelming at times.
However, as Professor Eggert frequently emphasizes, a lot of software is about tradeoffs. In the situation here, what you're trading for your "free" time, unimportant hobbies, and uninspiring social life is an opportunity to learn a very cool subject at the steepest learning curve possible. I would say that's a worthwhile trade.
Edit: Also, I took this class back in Winter 2015, which is the last class based on the old curriculum. The labs have been changed decently so the class might not be the same experience as before.
Based on 29 Users
TOP TAGS
- Tolerates Tardiness (9)
- Engaging Lectures (9)
- Often Funny (7)
- Tough Tests (9)
- Issues PTEs (7)
- Appropriately Priced Materials (6)
- Snazzy Dresser (7)
- Would Take Again (7)
- Has Group Projects (6)