- Home
- Search
- Paul R Eggert
- All Reviews

Paul Eggert
AD
Based on 357 Users
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!
Haven't gotten grades yet but this class was just awful.
Class is difficult and takes up more time than any previous class but is somewhat manageable. Class is graded on a curve and the average grade is around a B+ (maybe B or A-). This class teaches you a lot and gets you up to speed with actual software development.
To anyone confused about previous years' reviews, CS35L used to have lectures given by TAs instead of Eggert and more homeworks, and was much more difficult and chaotic. If you want more relevant reviews, take a look at CS97 from Spring 2020 onward, which was like the beta to the current 35L.
The main topics covered were Emacs (text editor), Unix, Shell/Bash Scripting, Lisp, Python, C, and Git. React and JavaScript were briefly covered in a lecture but were essential for one assignment and the entire final project. If you've never used React, knowing a little HTML/CSS/JS will help a lot.
Lectures/Homeworks: Eggert's lectures are a lot more theoretical and only cover a little syntax. You need to look up a lot of stuff for homeworks and teach yourself but you’ll learn a lot. Lectures are pretty interesting and I enjoyed them. The late penalty is pretty generous (only 1% off for 1 day late. 2^(N-1)% off for N days late). 3 or more (outta 6) of the homeworks were given extended deadlines. Homeworks can take up many hours.
Midterm and final are difficult and much different to traditional tests. You can't really study for them that much except for doing the practice tests. Many questions are open-ended and require you to understand instead of regurgitate. Some questions are pretty obscure/random. The tests are unlimited open-note, but extremely detailed notes on lectures only help on getting maybe an extra 5%. And don't leave any question blank. You will get some partial credit even if it's completely wrong.
For the final project, most people make a web app with React. Getting a good group where everyone does their fair share is crucial to not spending too much time on it. Your group presents to a discussion at the end of week 10. The project was graded generously (most got 90%-100%). And you get something to put on your resume
This class need a complete reform. It is not professor Eggert's fault but someone in CS department have to do something with it. Once again, everything in this class is a disaster and need a complete reform. Materials in the syllabus are useful but they are so poorly taught that we would rather study the same thing on our own during summer holiday.
This class is going to change your life, but not in a good way. CS 35L is basically a lower division capstone project, and takes up so much of your time. DO NOT take other challenging courses in the same quarter unless you're already familiar with Emacs, Git and a few programming languages.
By change your life, I mean that you will change all your schedules to work around Eggert. Your holidays and free time will be spent working on his homework or project. Say goodbye to a normal study schedule as assignments will probably take longer than you need.
I actually liked Eggert's lectures and he covered some interesting concepts (would be a great guest lecturer). However, it is so out of sync with the homework and project that you will find yourself thinking that the class is broken (I did several times). You have to remember that his lectures are more or less independent of the rest of the class. If the assignment involves coding in Python, don't wait for his Python lecture before starting. Use TA notes and your own knowledge to start projects ASAP, as that's the only way to not fall behind.
The group project at the end is about programming a web app from scratch, which is actually pretty fun if you have a good team. You are free to choose whatever idea and technology stack works for you, and there are lots of tutorials available as needed.
Eggert's exams though... if you have a mindset of aiming to get 100%, it's time to let that go. He makes his exams extremely challenging and long, and a lot of it is computer science theory (meaning answers are paragraphs and it almost seems like a philosophy exam). While you will almost definitely be depressed with your exam scores, remember that Eggert wants a bell curve and tries to use it as needed.
Best of luck, you'll need it
It's almost like a philosophy of programming languages class - Eggert's lectures are engaging, thoughtful, and worth every second of your time. Each lecture is jam-packed with information (not always timely in relation to the projects, unfortunately). Each lecture genuinely feels like a valuable use of your time. You start to really enjoy every second of it. Then you remember it's still an Eggert CS class, and the projects destroy your very soul.
This is not a class to double with another hard class - this is a "take a GE, a moderately hard class (maybe) and another easy major class, then focus most of your efforts on this" kind of class. Projects are insanely difficult. Like insanely. Be prepared to sink hours of your life each week into them. You're pretty surely going to finish them, but it's going to take some willpower and some sacrifice.
Exams are typical Eggert fare - asking lots of theoretical questions that involve making arguments and backing them up. Honestly, after taking his CS 33, I think I was just more prepared for these, and they didn't seem that bad. Just pay attention in lecture, make sure your notes are well-organized, and present coherent answers to the questions he asks, citing stuff from lecture/discussion. If you're totally lost, find any relevant notes you have for the question, and start writing down key words and concepts in a way that seems like you're at least semi-legitimately trying to answer the question. Generally, that should get you to a B, if not an A, on the exam (after the curve, obviously, only like 4 people got a legit 90+ on these exams).
Yes, this class is stressful. Yes, it's a lot of work. Yes, you'll probably hate it while you're taking it (I know I did at times). However, I think you learn a good amount, and get a great discussion on a lot of the "why's" in CS. Honestly, I wish I'd tried to take every Eggert class I could have. If you have the opportunity to take 131 with him, do it - just make sure you're emotionally prepared to cry over some of your half-baked attempts at mutually recursive grammar parsing functional language nonsense.
Be warned! This class is nothing like other lower-div classes such as CS31 and 32. I aced CS 31-33 but failed miserably in this class. CS97 and probably CS35l require a higher level of ability of self study and conquering problems on your own.
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!
This class is a pain in the ass, but as long as you don't cheat (i.e., don't look at GitHubs), you'll learn some really important skills for industry. I'm currently doing an internship, and being comfortable with Linux, bash, ssh, and git is really helpful.
The class is TA-led, so how much you struggle depends on who you get. Regardless, prepare to do a lot of Googling and to read a lot of man pages to get through some of your assignments. The assignments take up a lot of time, but Eggert's late policy is very generous, so you're almost never strapped for time.
The final is fairly difficult, but you can bring as many notes as you want. I recommend finding notes from previous students and printing those out. They also give you practice exams and solutions to them, so you will know what to expect on the final.
For reference, I averaged about a 94% on labs and got 67/100 on the final. The average for the final was about 54, and the standard deviation was 14.
What a bad course. I really have nothing to say that hasn't been said before. I don't think I've learned anything in this class that I didn't have to teach to myself and on top of that, I've lost interest in these topics because of the way this class was handled. I don't think I've met any student who has taken this class and not hated it (or themselves) by the end of it.
He really said that his course was better than the college of letters and science because his course was "harder"? Way to think that your mediocre class is better than any of the amazing courses I've taken in the college of letters and science. It's so boring when a white man is going off about how he thinks non-Engineering subjects are lesser than him.
Also, the fact that he doesn't tell us the answers to the exam or assignments shows that he actually doesn't care about us learning from our mistakes but he just wants to uphold the ridiculous standards that no one apart from him cares about. One of the worst classes I've taken at UCLA and that is really something because I have taken multiple other CS courses which were similar experiences (except CS 33. Shout out to professor Rienman who can do no wrong, cares about his students, teaches well, and doesn't have a god complex).
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!
Class is difficult and takes up more time than any previous class but is somewhat manageable. Class is graded on a curve and the average grade is around a B+ (maybe B or A-). This class teaches you a lot and gets you up to speed with actual software development.
To anyone confused about previous years' reviews, CS35L used to have lectures given by TAs instead of Eggert and more homeworks, and was much more difficult and chaotic. If you want more relevant reviews, take a look at CS97 from Spring 2020 onward, which was like the beta to the current 35L.
The main topics covered were Emacs (text editor), Unix, Shell/Bash Scripting, Lisp, Python, C, and Git. React and JavaScript were briefly covered in a lecture but were essential for one assignment and the entire final project. If you've never used React, knowing a little HTML/CSS/JS will help a lot.
Lectures/Homeworks: Eggert's lectures are a lot more theoretical and only cover a little syntax. You need to look up a lot of stuff for homeworks and teach yourself but you’ll learn a lot. Lectures are pretty interesting and I enjoyed them. The late penalty is pretty generous (only 1% off for 1 day late. 2^(N-1)% off for N days late). 3 or more (outta 6) of the homeworks were given extended deadlines. Homeworks can take up many hours.
Midterm and final are difficult and much different to traditional tests. You can't really study for them that much except for doing the practice tests. Many questions are open-ended and require you to understand instead of regurgitate. Some questions are pretty obscure/random. The tests are unlimited open-note, but extremely detailed notes on lectures only help on getting maybe an extra 5%. And don't leave any question blank. You will get some partial credit even if it's completely wrong.
For the final project, most people make a web app with React. Getting a good group where everyone does their fair share is crucial to not spending too much time on it. Your group presents to a discussion at the end of week 10. The project was graded generously (most got 90%-100%). And you get something to put on your resume
This class need a complete reform. It is not professor Eggert's fault but someone in CS department have to do something with it. Once again, everything in this class is a disaster and need a complete reform. Materials in the syllabus are useful but they are so poorly taught that we would rather study the same thing on our own during summer holiday.
This class is going to change your life, but not in a good way. CS 35L is basically a lower division capstone project, and takes up so much of your time. DO NOT take other challenging courses in the same quarter unless you're already familiar with Emacs, Git and a few programming languages.
By change your life, I mean that you will change all your schedules to work around Eggert. Your holidays and free time will be spent working on his homework or project. Say goodbye to a normal study schedule as assignments will probably take longer than you need.
I actually liked Eggert's lectures and he covered some interesting concepts (would be a great guest lecturer). However, it is so out of sync with the homework and project that you will find yourself thinking that the class is broken (I did several times). You have to remember that his lectures are more or less independent of the rest of the class. If the assignment involves coding in Python, don't wait for his Python lecture before starting. Use TA notes and your own knowledge to start projects ASAP, as that's the only way to not fall behind.
The group project at the end is about programming a web app from scratch, which is actually pretty fun if you have a good team. You are free to choose whatever idea and technology stack works for you, and there are lots of tutorials available as needed.
Eggert's exams though... if you have a mindset of aiming to get 100%, it's time to let that go. He makes his exams extremely challenging and long, and a lot of it is computer science theory (meaning answers are paragraphs and it almost seems like a philosophy exam). While you will almost definitely be depressed with your exam scores, remember that Eggert wants a bell curve and tries to use it as needed.
Best of luck, you'll need it
It's almost like a philosophy of programming languages class - Eggert's lectures are engaging, thoughtful, and worth every second of your time. Each lecture is jam-packed with information (not always timely in relation to the projects, unfortunately). Each lecture genuinely feels like a valuable use of your time. You start to really enjoy every second of it. Then you remember it's still an Eggert CS class, and the projects destroy your very soul.
This is not a class to double with another hard class - this is a "take a GE, a moderately hard class (maybe) and another easy major class, then focus most of your efforts on this" kind of class. Projects are insanely difficult. Like insanely. Be prepared to sink hours of your life each week into them. You're pretty surely going to finish them, but it's going to take some willpower and some sacrifice.
Exams are typical Eggert fare - asking lots of theoretical questions that involve making arguments and backing them up. Honestly, after taking his CS 33, I think I was just more prepared for these, and they didn't seem that bad. Just pay attention in lecture, make sure your notes are well-organized, and present coherent answers to the questions he asks, citing stuff from lecture/discussion. If you're totally lost, find any relevant notes you have for the question, and start writing down key words and concepts in a way that seems like you're at least semi-legitimately trying to answer the question. Generally, that should get you to a B, if not an A, on the exam (after the curve, obviously, only like 4 people got a legit 90+ on these exams).
Yes, this class is stressful. Yes, it's a lot of work. Yes, you'll probably hate it while you're taking it (I know I did at times). However, I think you learn a good amount, and get a great discussion on a lot of the "why's" in CS. Honestly, I wish I'd tried to take every Eggert class I could have. If you have the opportunity to take 131 with him, do it - just make sure you're emotionally prepared to cry over some of your half-baked attempts at mutually recursive grammar parsing functional language nonsense.
Be warned! This class is nothing like other lower-div classes such as CS31 and 32. I aced CS 31-33 but failed miserably in this class. CS97 and probably CS35l require a higher level of ability of self study and conquering problems on your own.
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!
This class is a pain in the ass, but as long as you don't cheat (i.e., don't look at GitHubs), you'll learn some really important skills for industry. I'm currently doing an internship, and being comfortable with Linux, bash, ssh, and git is really helpful.
The class is TA-led, so how much you struggle depends on who you get. Regardless, prepare to do a lot of Googling and to read a lot of man pages to get through some of your assignments. The assignments take up a lot of time, but Eggert's late policy is very generous, so you're almost never strapped for time.
The final is fairly difficult, but you can bring as many notes as you want. I recommend finding notes from previous students and printing those out. They also give you practice exams and solutions to them, so you will know what to expect on the final.
For reference, I averaged about a 94% on labs and got 67/100 on the final. The average for the final was about 54, and the standard deviation was 14.
What a bad course. I really have nothing to say that hasn't been said before. I don't think I've learned anything in this class that I didn't have to teach to myself and on top of that, I've lost interest in these topics because of the way this class was handled. I don't think I've met any student who has taken this class and not hated it (or themselves) by the end of it.
He really said that his course was better than the college of letters and science because his course was "harder"? Way to think that your mediocre class is better than any of the amazing courses I've taken in the college of letters and science. It's so boring when a white man is going off about how he thinks non-Engineering subjects are lesser than him.
Also, the fact that he doesn't tell us the answers to the exam or assignments shows that he actually doesn't care about us learning from our mistakes but he just wants to uphold the ridiculous standards that no one apart from him cares about. One of the worst classes I've taken at UCLA and that is really something because I have taken multiple other CS courses which were similar experiences (except CS 33. Shout out to professor Rienman who can do no wrong, cares about his students, teaches well, and doesn't have a god complex).