- Home
- Search
- Paul R Eggert
- All Reviews
Paul Eggert
AD
Based on 370 Users
I would argue that this is one of the most important classes for being able to understand software development practically. You learn a good deal of skills that are useful in the software development industry - Git, Linux/CLI, web development, etc. That being said, the class is intense in terms of workload. There are six "lab" assignments going over a variety of topics (Linux/Emacs, Python, Javascript React, Git, C, lower-level Git) that are very loosely related to what is covered during lecture (sometimes the lecture reaches the topic AFTER the assignment is already due), so there is a lot of learning on your own time. You also have a group project involving a full-stack web application, typically using Javascript and React, which is another time sink.
The exams are by far the hardest part of the class though, since Eggert makes his exams with the intention of a 50% average, despite being open-note. A lot of people say there is no way to study for them, but I'd recommend paying attention to the topics and overarching ideas during lecture as he tends to base exam questions on these ideas, though the questions themselves often require you to think beyond those ideas. You can think of his exams as testing your intuition behind certain computer science topics rather than specific, concrete concepts.
Advice:
- Plan out what you're going to create for the group project accordingly and try to learn what you need to on your own time. At the bare minimum, you'll probably need to know Javascript and React. For your backend, if you plan to use a dedicated backend framework it would probably be best to learn ExpressJS and a database (usually MongoDB or mySQL). It would probably be easier to use a backend-as-a-service platform such as Firebase or AWS.
- Find reliable people to group with - groups are usually of five.
- Assignment Difficulty (Easiest to Hardest): Two (Python) < Three (Javascript/React) < Four (Git Basics) < One (Linux) < Five (C) <<< Six (Git Internals)
The projects are moderately hard. The midterm and final are ridiculously hard. Open book and open notes will help you little. If you want your effort to be paid off reasonably, avoid him at all costs.
I'll preface this by saying that I'm a mediocre CS student who scheduled his quarter to very generously accommodate this class' reputation as a hard class with a hard professor. I came in wanting to really learn this well, and I'm sitting at week 9 with an almost guaranteed drop (just waiting on my MT2 score) and feeling like I learned nothing of use.
Eggert is a brilliant man. He's a good speaker too, and manages to make the dry topic of assembly code and low-level computer architecture interesting. That being said, this class is one of my biggest regrets at UCLA. The expectations are unreasonable and the class is organized pretty horribly. He expects students to read the entirety of the over 1000-page textbook, and lectures are incredibly difficult to understand without it. They're pretty hard to understand even with the readings.
The homeworks and labs honestly shouldn't be incredibly hard. The problem is they're filled with bugs and issues. Instead of giving you the files that you need and then having you work through the assembly code, he gives you files that you need to configure, unzip from tarball, patch, or otherwise modify, often inside the linux servers, which he assumes you are completely fluent in using. This wouldn't be a big issue if they could just tell you what to do and why you're doing it, but the spec instructions are always incomplete. Ask the same question on piazza 7 times and you'll get 7 different answers, so your best bet is sitting in TA office hours for countless hours until your assignments are configured properly. If your TAs don't constantly decide to move their office hours, sometimes cancelling or moving them on piazza only after a student posts that they went to office hours and no one was there. But I felt like I was so bogged down in the trivial garbage of setting things up properly that I couldn't properly learn. Giving more assignments but cutting out the setup or giving Smallberg-style detailed instructions instead of a 1-page spec with 1000 missing steps would help tremendously with the learning in this class.
Late policy is generous, being 2^(n-1) percent loss for n days late. But because so many students get high scores on the labs (often through cheating, which even the TAs almost encourage, or through crowding office hours, which makes it impossible to get your questions answered), you can't afford to lose that many points on labs at all. Start early, because every step of every assignment will have unreasonable and unexpected errors... even if you use online solutions.
Tests are literally the most depressing thing you'll ever experience. Eggert makes his tests on the fly. They're good tests for the A students, but if you're not an A student, it'll leave you feeling hopeless. They're tangentially related to the course content but I definitely felt tremendously underprepared for them. Review sessions and discussions seemed to reinforce the material, but nothing could save me from the tests (even actually knowing the material, which I did on occasion). Maybe if you're good at BSing you can get on top of the curve. But if not, you're in for a rough time.
Overall, I thought the course was a pretty terrible experience. I learned quite little, was overwhelmed almost all the time, ran into 10000 bugs every time I tried to turn something in, and didn't get enough of a chance to apply the content to assignments. I have a lot of respect for Eggert's brilliance, but if you want a good learning experience and your sanity, take it with anyone else.
Exams are more of creative writing questions rather than coding questions. One example question would be like "If you were to redesign system A on top of framework B, what's the pros and cons", at which point you can only freestyle write if you don't have the pros and cons of each system in your notes. Midterm had a mean and median around 63/100, final had a mean and median around 70/100, and yet still no curves on the final grades. I got 1 point above the average for midterm and about 82/100 for the final and got a B+. The whole class is appalled that no curves were given to such a low grade distribution. One TA said that past GPA distribution is around 2.7 for this class. It's pretty accurate. Don't be misled by the beautiful grade distribution of 2020 spring on Bruinwalk
Leave now!!
Wrote with blood and tear.
Unless you feel like you are smarter than 99% of your classmates.
宝儿作为在职的软件工程师 讲他做喜欢的软件工程(不是计算机科学)
看得出来满腔热情
思路很快 得保持全神贯注
能学到很多
Overall this class was definitely very useful towards learning about various aspects of computer science in terms of software development. Eggert was very engaging and the class wasn't as bad as I had initially thought (though the class was probably revamped and being a Sophomore helped as I had previous knowledge before coming in). Eggert is an amazing lecturer and the TAs were nice as well. The assignments were a bit difficult so they definitely took a lot of time to complete. For tests there is a wide variety of subjects tested on so it benefits to really understand how higher level concepts work as well as how to program in the ways taught during lecture.
Honestly after taking 35L and 111 with Eggert I thought it couldn't get any worse but it does. This is hands down the most useless class I've ever been apart of. The amount of work involved with it is absolutely insane(much more than his 111 IMO), and his "late policy" is just his way of assigning more work than can be done in class.
For the Prolog section, he started going over the language the day the homework was due. Python project is due in less than 48 hours and he hasn't spoken about Python of TCP once haha. It's absolute madness. They need to rework this entire class. Remove one of the OCAML homeworks and maybe you could have a decent schedule.
This class is way too easy. We typically spend less than 1 hour per week on projects, and attending the lecture is somewhat optional. I just hope the exams can become harder to keep us understanding this course well. Eggert's class usually great and recommend this class for gpa boosters. 5/5
Dr. Eggert is a godly lecturer. You will never fall asleep in his lectures (despite the fact that they're two hours long) because each second of his speech is like honey for your ears, oozing with essential knowledge and a little bit of his eccentric humor. Even when we were just going over basic git commands, his clear and confident explanations just showed how much expertise he has in software construction. And of course he would be an expert—he literally helped write the very tools that he teaches us about. I can't think of any other professor at UCLA who has a bigger impact on free and open source software than Dr. Eggert, and I am truly grateful for his both as an awesome professor and as a pillar of the FOSS community.
Ok, I may be a bit biased, but no matter how passionate you are about FOSS, you will learn a TON from this class. It's not about memorizing Elisp functions or every generation of the HTTP protocol (you can leave those details in your notes since the exams are open-note), but more about understanding the significance, pros, and cons of different components of software construction and how they work together.
One of my favorite lectures was about building software. We started with compiling individual C files. Then, he introduced layers of automation on top of gcc, such as make and autoconf, until we concluded with system packages. It was just so satisfying to learn about how every stage combines to form a more complex system.
I would argue that this is one of the most important classes for being able to understand software development practically. You learn a good deal of skills that are useful in the software development industry - Git, Linux/CLI, web development, etc. That being said, the class is intense in terms of workload. There are six "lab" assignments going over a variety of topics (Linux/Emacs, Python, Javascript React, Git, C, lower-level Git) that are very loosely related to what is covered during lecture (sometimes the lecture reaches the topic AFTER the assignment is already due), so there is a lot of learning on your own time. You also have a group project involving a full-stack web application, typically using Javascript and React, which is another time sink.
The exams are by far the hardest part of the class though, since Eggert makes his exams with the intention of a 50% average, despite being open-note. A lot of people say there is no way to study for them, but I'd recommend paying attention to the topics and overarching ideas during lecture as he tends to base exam questions on these ideas, though the questions themselves often require you to think beyond those ideas. You can think of his exams as testing your intuition behind certain computer science topics rather than specific, concrete concepts.
Advice:
- Plan out what you're going to create for the group project accordingly and try to learn what you need to on your own time. At the bare minimum, you'll probably need to know Javascript and React. For your backend, if you plan to use a dedicated backend framework it would probably be best to learn ExpressJS and a database (usually MongoDB or mySQL). It would probably be easier to use a backend-as-a-service platform such as Firebase or AWS.
- Find reliable people to group with - groups are usually of five.
- Assignment Difficulty (Easiest to Hardest): Two (Python) < Three (Javascript/React) < Four (Git Basics) < One (Linux) < Five (C) <<< Six (Git Internals)
The projects are moderately hard. The midterm and final are ridiculously hard. Open book and open notes will help you little. If you want your effort to be paid off reasonably, avoid him at all costs.
I'll preface this by saying that I'm a mediocre CS student who scheduled his quarter to very generously accommodate this class' reputation as a hard class with a hard professor. I came in wanting to really learn this well, and I'm sitting at week 9 with an almost guaranteed drop (just waiting on my MT2 score) and feeling like I learned nothing of use.
Eggert is a brilliant man. He's a good speaker too, and manages to make the dry topic of assembly code and low-level computer architecture interesting. That being said, this class is one of my biggest regrets at UCLA. The expectations are unreasonable and the class is organized pretty horribly. He expects students to read the entirety of the over 1000-page textbook, and lectures are incredibly difficult to understand without it. They're pretty hard to understand even with the readings.
The homeworks and labs honestly shouldn't be incredibly hard. The problem is they're filled with bugs and issues. Instead of giving you the files that you need and then having you work through the assembly code, he gives you files that you need to configure, unzip from tarball, patch, or otherwise modify, often inside the linux servers, which he assumes you are completely fluent in using. This wouldn't be a big issue if they could just tell you what to do and why you're doing it, but the spec instructions are always incomplete. Ask the same question on piazza 7 times and you'll get 7 different answers, so your best bet is sitting in TA office hours for countless hours until your assignments are configured properly. If your TAs don't constantly decide to move their office hours, sometimes cancelling or moving them on piazza only after a student posts that they went to office hours and no one was there. But I felt like I was so bogged down in the trivial garbage of setting things up properly that I couldn't properly learn. Giving more assignments but cutting out the setup or giving Smallberg-style detailed instructions instead of a 1-page spec with 1000 missing steps would help tremendously with the learning in this class.
Late policy is generous, being 2^(n-1) percent loss for n days late. But because so many students get high scores on the labs (often through cheating, which even the TAs almost encourage, or through crowding office hours, which makes it impossible to get your questions answered), you can't afford to lose that many points on labs at all. Start early, because every step of every assignment will have unreasonable and unexpected errors... even if you use online solutions.
Tests are literally the most depressing thing you'll ever experience. Eggert makes his tests on the fly. They're good tests for the A students, but if you're not an A student, it'll leave you feeling hopeless. They're tangentially related to the course content but I definitely felt tremendously underprepared for them. Review sessions and discussions seemed to reinforce the material, but nothing could save me from the tests (even actually knowing the material, which I did on occasion). Maybe if you're good at BSing you can get on top of the curve. But if not, you're in for a rough time.
Overall, I thought the course was a pretty terrible experience. I learned quite little, was overwhelmed almost all the time, ran into 10000 bugs every time I tried to turn something in, and didn't get enough of a chance to apply the content to assignments. I have a lot of respect for Eggert's brilliance, but if you want a good learning experience and your sanity, take it with anyone else.
Exams are more of creative writing questions rather than coding questions. One example question would be like "If you were to redesign system A on top of framework B, what's the pros and cons", at which point you can only freestyle write if you don't have the pros and cons of each system in your notes. Midterm had a mean and median around 63/100, final had a mean and median around 70/100, and yet still no curves on the final grades. I got 1 point above the average for midterm and about 82/100 for the final and got a B+. The whole class is appalled that no curves were given to such a low grade distribution. One TA said that past GPA distribution is around 2.7 for this class. It's pretty accurate. Don't be misled by the beautiful grade distribution of 2020 spring on Bruinwalk
Overall this class was definitely very useful towards learning about various aspects of computer science in terms of software development. Eggert was very engaging and the class wasn't as bad as I had initially thought (though the class was probably revamped and being a Sophomore helped as I had previous knowledge before coming in). Eggert is an amazing lecturer and the TAs were nice as well. The assignments were a bit difficult so they definitely took a lot of time to complete. For tests there is a wide variety of subjects tested on so it benefits to really understand how higher level concepts work as well as how to program in the ways taught during lecture.
Honestly after taking 35L and 111 with Eggert I thought it couldn't get any worse but it does. This is hands down the most useless class I've ever been apart of. The amount of work involved with it is absolutely insane(much more than his 111 IMO), and his "late policy" is just his way of assigning more work than can be done in class.
For the Prolog section, he started going over the language the day the homework was due. Python project is due in less than 48 hours and he hasn't spoken about Python of TCP once haha. It's absolute madness. They need to rework this entire class. Remove one of the OCAML homeworks and maybe you could have a decent schedule.
This class is way too easy. We typically spend less than 1 hour per week on projects, and attending the lecture is somewhat optional. I just hope the exams can become harder to keep us understanding this course well. Eggert's class usually great and recommend this class for gpa boosters. 5/5
Dr. Eggert is a godly lecturer. You will never fall asleep in his lectures (despite the fact that they're two hours long) because each second of his speech is like honey for your ears, oozing with essential knowledge and a little bit of his eccentric humor. Even when we were just going over basic git commands, his clear and confident explanations just showed how much expertise he has in software construction. And of course he would be an expert—he literally helped write the very tools that he teaches us about. I can't think of any other professor at UCLA who has a bigger impact on free and open source software than Dr. Eggert, and I am truly grateful for his both as an awesome professor and as a pillar of the FOSS community.
Ok, I may be a bit biased, but no matter how passionate you are about FOSS, you will learn a TON from this class. It's not about memorizing Elisp functions or every generation of the HTTP protocol (you can leave those details in your notes since the exams are open-note), but more about understanding the significance, pros, and cons of different components of software construction and how they work together.
One of my favorite lectures was about building software. We started with compiling individual C files. Then, he introduced layers of automation on top of gcc, such as make and autoconf, until we concluded with system packages. It was just so satisfying to learn about how every stage combines to form a more complex system.